开发者社区 > 云原生 > 正文

client与broker网络不一致情况下,findConsumerIdList机制是否合理

rocketmq使用的客户端负载均衡,hash算法是在客户端实现。

该算法使用的是数据来源为 namesrv提供的broker集合,和随机到一台broker上获取findConsumerIdList的集合。 改机制可靠性成立的两个关键核心是,broker与namesrv之间的网络可靠性必须一致,和client与broker之间的网络可靠性必须一致。

一旦发生局部网络不一致则有概率产生,两个client计算出统一个MessageQueue,这样commit操作是自相冲突的。会产生重复消费。

原提问者GitHub用户beijixiongzzj

展开
收起
芬奇福贵 2023-05-26 16:05:11 107 0
1 条回答
写回答
取消 提交回答
  • 在网络出现问题或者是系统抖动的情况下确实有可能导致这些情况,所以rocketmq客户端有定时获取元数据做rebalance的机制,而且出现上述问题后,最大的可能在于重复消息,而不会丢失消息,我们认为这个是可以接受的

    原回答者GitHub用户duhenglucky

    2023-05-26 18:04:18
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Session:更加安全、可靠的数据中心网络产品更新 立即下载
Session:极简易用的全球化网络产品更新 立即下载
Session:弹性、高可用、可观测的应用交付网络产品更新 立即下载