大屏展示司机实时位置

业务需求,消费位置点。根据连续位置点计算角度。
所以同一个司机的位置点必须被同一台机器消费。mq使用集群模式,同一个司机位置信息在同一个queue。每个消费者消费固定的queue,除非消费者节点数变化或者queue个数变化,需要重新分配。

1、改成局部有序,同一个司机位置点,生产有序,生产到同一个mq queue。
2、考虑到位置信息5s上传一个,消费不需要严格保证有序。使用并发消费即可。根据时间戳,消费到乱序之前的数据直接舍弃。

3、线上机器分为两个区,两个区使用不同的mq实例集群。司机长连接,上传的位置就会在同一个区mq上的同一个queue,如果是短连接上传位置点,司机就会ngix打到不同的机器,如果打到不同的qu,生产到不同的mq实例,存在问题

4、ElasticSearch主副本分片异步复制导致数据不一致,查询司机位置出现回跳现象。

5、ES主从同步修改为同步复制

6、ES存在缓存,写入成功后,缓存大小达到阈值或者到达最大时间,20s(可配置)刷新生成segment才可以被查询到

7、ES同步复制,ES主分片和副本分片缓存一致性可以得到保证,但是刷新时间都是20s但是时刻不同,一个刷新生成segment,有的分片没有刷新生成segment。造成查询数据不一致,查询到了旧数据,产生了位置回跳

8、每隔5s查询司机位置,将ES最大刷新时间修改为4s,避免位置回跳

你可能感兴趣的:(elasticsearch)