RocketMQ 架构原理

在这里插入图片描述

注册中心

注册中心使用得nameserver, nameserver不会进行频繁的读写,所以整体的性能开销小,稳定性也高。
注册中心没隔10s会扫描一次所有的broker,如果2min没有发送心跳过来,就人为挂了,断开连接。此时会更新topic与队列的对应关系,但不会通知producer和consumer

Broker 架构

broker通常以集群的形式运行,存储producer发来的消息。

与注册中心的交互

每个broker和所有注册中心保持长连接
每30s向注册中心发送心跳,心跳里面有自身的topic信息

负载均衡设计

broker与topic 是多对多的设计

高可用设计

主从结构,master负责消息的写入,slave负责消息的读取

整个broker都挂了,最多30s内所有发往这个消息和消费这个消息的都会失败,等到master起来后,重新同步

高可靠设计

所有的消息都会通过同步刷盘和异步刷盘的方式保存在磁盘上,可靠性很高
同步刷盘:写入成功才算成功
异步刷盘:服务器宕机才算成功,概率比较小

读写性能

零拷贝方式,减少用户态和内核态的多次切换

消费者架构

consumer会与注册中心保持长连接,定期查询MQ的topic配置信息,如果前注册中心的服务器宕机,consumer自动与下一台服务器连接。
consumer每30s获取一次配置中心的所有topic配置信息,如果某个broker宕机,最多30s就能够感知到

consumer与broker之间保持长连接
consumer每隔30s与关联的broker发送心跳,broker每10s扫描所有的长连接,如果2min没有发送心跳数据,则关闭连接,并通知其他消费者

生产者架构

一个Producer与注册中心的一台服务器保持长连接,并且会定时查询MQ的Topic配置信息,如果当前注册中心的服务器宕机,Producer会自动与下一台服务器连接

在保持长连接的情况下,Producer每30s获取一次配置中心的所有Topic的最新队列情况,如果某个Broker宕机,Producer最多需要30s可以从配置中心感知到(如果写入消息多次失败也可以感知到)

Producer及与之关联的Broker之间保持长连接
Producer默认每隔30s向与之关联的Broker发送心跳;Broker每10s扫描所有的长连接,如果某个连接2min内没有发送心跳数据,则关闭连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值