185 Star 1.7K Fork 512

渔民小镇 / ioGame

 / 详情

如何保证消息有序

已完成
创建于  
2022-10-13 12:31

比如聊天消息,如何保证 对外服<->网关集群<->聊天服 (这里假定已经根据用户id做了聊天逻辑服绑定),过程中的消息有序性?
能想到的一些问题:

  1. 对外服转发请求到网关集群时需要对指定userId固定(hash)选择一个网关实例,聊天服发消息给网关也同理 (目前的elemetselector的next接口是无参的,需要自己扩展)
  2. 对外服、网关服、逻辑服在处理rpc消息时,默认是用bolt提供的线程池,这样也是会导致消息乱序的(似乎可以通过对UserProcessor设置executorSelector来解决)
  3. broker集群如果做动态伸缩,基本就无法确保有序了

评论 (1)

Gskmessi 创建了任务
Gskmessi 修改了描述
展开全部操作日志

是的,顺序可以通过设置 bolt 线程池来解决;

比如聊天的实际场景中,顺序在理论上不是很重要,正常情况下用户发送消息都会 > 10 ms。
有这点时间的间隔,用户接收到消息通常都是理论有序的。

渔民小镇 添加了
 
提问与交流
标签
渔民小镇 任务状态待办的 修改为进行中
渔民小镇 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
5475 iohao 1653332816
Java
1
https://gitee.com/iohao/ioGame.git
git@gitee.com:iohao/ioGame.git
iohao
ioGame
ioGame

搜索帮助