RocketMQ 4.X 结构图
2023-07-20 16:52:18 0 举报
有空我就画一画,别催哈,画完之前就别克隆了,有问题欢迎指出,我会及时改正的哈(。・∀・)ノ゙
作者其他创作
大纲/内容
Broker 集群信息font color=\"#323232\
NameServer
Broker状态信息font color=\"#323232\
网络层协议传输对象(RemotingCommand)
队列(MessageQueue One)
broker 存活状态 Map
long lastUpdateTimestamp:Broker节点最后一次更新存活状态信息的时间戳。DataVersion dataVersion:Broker存活状态信息的版本号。Channel channel:通信通道。String haServerAddr:高可用(HA)模式下备用Broker的网络地址。
消息(Message)
注册
订阅关系(Subscription)
Topic 消息队列路由信息font color=\"#323232\
NameServer Cluster
NameServer Three
BrokerLiveInfo
生产者(Producer)
NameServer Two
BrokerData
NameServer One
队列(MessageQueue Two)
主体队列分布 Map
定时拉取最新路由信息
NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。主要包括两个功能:1. Broker管理Broker向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据,然后提供心跳检测机制,检查Broker是否还存活。2. 路由信息管理每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息,Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。NameServer几乎无状态节点,因此可集群部署,通常会有多个实例部署,各实例间相互不进行信息通讯,无任何信息同步。当某个NameServer因某种原因下线了,客户端仍然可以向其它NameServer获取路由信息。
消费者(Consumer)
主题(Topic One)
代理服务器 Broker
基于Netty网络编程客户端对象(NettyRemotingClient)
队列(MessageQueue Three)
QueueData
broker 地址 Map
主题(Topic Two)
集群信息 Map
主题(Topic Three)
int code:请求命令码(RequestCode)or 响应命令码(ResponseCode),响应时0为成功,其他则为失败。LanguageCode language:调用语言实现,对应LanguageCode枚举。b style=\"text-decoration-line: underline;\
Broker 基础信息font color=\"#323232\
Broker主要负责消息的存储、投递和查询以及服务高可用保证。NameServer几乎无状态节点,因此可集群部署,节点之间无任何信息同步。Broker部署相对复杂。在 Master-Slave 架构中,Broker 分为 Master 与 Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。
String brokerName:队列所在的Broker名称。int readQueueNums:消息队列的读队列数量。int writeQueueNums:消息队列的读队列数量。int perm:队列权限控制。int topicSysFlag:同步标记: 0表示不需要同步、1表示需要同步。
0 条评论
下一页