比如聊天消息,如何保证 对外服<->网关集群<->聊天服 (这里假定已经根据用户id做了聊天逻辑服绑定),过程中的消息有序性?
能想到的一些问题:
- 对外服转发请求到网关集群时需要对指定userId固定(hash)选择一个网关实例,聊天服发消息给网关也同理 (目前的elemetselector的next接口是无参的,需要自己扩展)
- 对外服、网关服、逻辑服在处理rpc消息时,默认是用bolt提供的线程池,这样也是会导致消息乱序的(似乎可以通过对UserProcessor设置executorSelector来解决)
- broker集群如果做动态伸缩,基本就无法确保有序了