github上rocketmq地址:
https://github.com/apache/rocketmq 建议大家star一下
-acl 权限控制 (http://www.javashuo.com/article/p-cyptnzch-o.html)
-broker rabietmq的核心,消息基本在这里处理
-client 客户端实现
-filter 消息过滤
-logappender,logging 日志处理
-namesrv 存储路由信息/broker服务列表
-remoting 基于netty的通信实现
- store 存储及索引实现
- tools 集群管理工具,提供命令行操作
(贷款链接)
1.windos的单机部署
2.linux下的部署、docker环境下部署
3.多master无从节点
4.多master多从异步双写 部署
5.多master 多 slave 同步双写部署 (真正的高可用)
1.单机部署
1.启动namesrv
2.启动broker,broker会向namesrv注册信息
3.prodecer消息发送时 从namesrv获取broker信息,将消息存储到broker
4.customer消息消费时 从namesrv获取broker信息,将信息从broker获取
单机部署只能使用于local,应用解耦都伴随着高可用的问题。
在此图中,如若producer,namesrv,broker,customer都将导致服务链断裂。极端情况broker服务器磁盘坏掉,消息将永远丢失。
2.多master无从节点
me:这下应该没有问题了
同事:如果一台master宕机了呢?这台机器上的消息就不能被及时消费!另外万一这个master也磁盘坏了,消息也会丢失。
me:好吧,我还以为每个master上数据是同步的,原来是各管各的。
3.多master多从异步双写 部署
给master一个从节点,主节点收到消息异步同步到从节点。考虑到异步传输时master挂掉会有很少的数据异步丢失。虽然在主节点挂掉后,从节点可以继续工作。但是依然不是高可用。
4.多master 多 slave 同步双写部署 (真正的高可用,生产使用架构)
只有主节点和从节点都存储成功,才返回成功。保证了主从消息一致。
NameServer:
Broker:
参考文章:
http://www.javashuo.com/article/p-pbyqjhrm-bp.html rabitmq工作原理
https://blog.csdn.net/jlh912008548/article/details/88988514 rocketmq实战分享
https://www.cnblogs.com/shileibrave/p/9883817.html rocketmq架构及名词概念