rocketmq技术内幕:rocketmq架构设计与实现原理_技术分享 | RocketMQ跨集群消息同步(消息路由)的实现与应用...

fe1eff479290140921ca7e5da12f2ba0.png

42493e6561f04cae41b28b184e8a6221.png

友情提示:全文4000多文字,预计阅读时间3分钟

一、背景

RocketMQ作为一款分布式的消息中间件,不管是采用Master/Slave的主从模式,还是采用Dledger的多副本模式,均保证了在同一个地域集群中的可靠性和可用性。但不同RocketMQ集群的Broker之间无法进行数据备份,如果单个资源池中的RocketMQ集群出现机房毁坏、磁盘故障、服务器损毁等非可预见性重大问题时,就会导致整个集群的可靠性失效。

另一方面,随着消息队列RocketMQ陆续在移动云上海、苏州、郑州等节点上线,RocketMQ得到了大范围应用。用户在使用过程中,可能存在跨资源池消息消费的业务需求,如业务系统A作为Producer部署于华东资源池,业务系统B作为Consumer部署于华北资源池,A发送消息需要B来进行消费。

基于以上两点,我们设计并实现了RocketMQ消息路由功能,即通过路由规则动态规划消息的传输路径,使消息按照过滤条件,从消息源节点路由到目标节点。RocketMQ消息路由(RocketMQ Connect)打通了多个地域RocketMQ集群之间的消息互通,使消息能够按照过滤规则从源集群同步到目标集群 ,高效地实现了分布在不同地域之间的RocketMQ集群的消息同步复制,保证地域之间的数据一致性。

二、方案实现

在现有的主流消息中间件中,如Pulsar、Kafka都有提供消息跨集群同步功能的实现方案。

2.1 Pulsar的Geo跨机房消息复制方案

Geo replication是消息队列Pulsar的一种跨机房复制方案,把分散在不同地域的集群通过一定的配置方式,让各集群之间可以相互复制。Geo replication工作原理是在Broker内部,为跨地域的数据复制启动了一组内嵌的额外的生产者和消费者。当一方集群消息被产生后,内嵌的消费者会读取消息,读取完成后,调用内嵌的生产者将消息立即发送到另一方集群。

ceaf4775be1b4d14d1001216668f0e53.png

(图片源自网络)http://pulsar.apache.org/docs/en/administration-geo/

2.2 Kafka的Mir

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值