1.最先启动NameServer集群,充当注册中心的作用(底层相当于启动了Netty服务器);
2.Broker启动时向所有NameServer注册(方式就是每10秒一次的心跳),注册内容包括:BrokerId,地址,名称,所属集群。
3.NameServer每30秒检测Borker是否宕机;
4.Producer集群发送消息前先从NameServer中获取Broker服务器地址列表,然后根据负载算法选择一台broker进行发送;流程如下
4.1消息长度验证
4.2查找主题路由信息
4.3选择消息队列
4.4消息发送
5.Consumer集群根据消息队列负载机制(一个消息队列在同一时间只允许被一个消费者消费,一个消息消费者可以同时消费多个消息队列),从broker拉取消息;流程如下
5.1消息消费
5.2消息确认(ACK)
5.3消费进度管理
注意:
NameServer之间互不通信,可能某一时刻存在数据不一致情况;NameServer数据一致性没有zookeeper高,但性能比zookeeper好。
问题:RocketMQ主流架构模式那怎样的?
答:上图就是RocketMQ的主流架构:
1.RocketMQ双主双从模式;
2.RocketMQ刷盘为异步刷盘,提高访问量;
3.RocketMQ主从复制为同步复制,确保RocketMQ主宕机了,数据不丢失;
4.RocketMQ主从读写分离:与一般的中间件不同,RocketMQ是消费者先向主服务器发起拉取消息的请求,然后主服务器返回一批消息,然后根据主服务器的负载压力和主从同步情况,向服务器建议下次消息拉取是从主服务器还是从从服务器拉取。
版权声明:本文为qq_40823910原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。