时间:2024-09-23 09:01:43
RocketMQ消息存储原理
1. NameServer:相当于是一个 注册中心 (类似ZK)用于保存Broker的信息(Broker 的集群信息、Topic路由信息...)。什么是Topic路由信息?下面会讲到。 可以集群部署,集群中的每个NameServer不会有数据交互
2. Broker:也称为消息服务器,用于存储Message Broker 分为主节点和从节点。以上图架构图为例。Broker有两个集群,Master 和 Slave实现了读写分离。 Broker 启动时,会向所有的NameServer注册自身的集群信息、自身消息的路由信息
3. Producer:消息生产者。Producer启动是会从NameServer集群中随机选取一个NameServer获取 Broker 的信息(topic 信息、BrokerName,Broker的IP...),这些信息我们成为 Topic 路由信息 。 发送消息是直接发给 Broker的,并没有经过Nameserver了(已经拿到了Broker 的IP,为啥还要经过NameServer呢?) 发送消息时会根据 Message的Topic,从路由信息表(启动时从NameServer中获取了)中根据负载策略选择一个 Broker主节点 ,将消息发给这个Broker主节点。
4. Consumer:消息消费者。Consumer 启动时会从NameServer 中获取Broker的路由信息 启动后,定时从Broker中拉取消息进行消费(有同学就要问了,Consumer不是有PUSH模式吗,PUSH模式不是Broker消息到达后,主动推给Consumer吗? 实际上,PUSH、PULL模式都是Consumer主动从Broker拉取消息的 ,只是PUSH这个单词会让人很受歧义。后续再写一篇文章扒一扒Conumer消费流程的底裤。
快测评广州东远堂信息科技有限公司版权所有 量子科技网提供支持 粤ICP备15011623号