同事教我什么是 rocketmq系列 第2章节 rocketmq原理图、角色作用、推荐架构

github上rocketmq地址:

     https://github.com/apache/rocketmq  建议大家star一下

rocketmq主要的模块

     -acl  权限控制 (http://www.javashuo.com/article/p-cyptnzch-o.html

     -broker  rabietmq的核心,消息基本在这里处理

     -client   客户端实现

     -filter   消息过滤

     -logappender,logging 日志处理

     -namesrv 存储路由信息/broker服务列表

     -remoting 基于netty的通信实现

     - store 存储及索引实现

     - tools  集群管理工具,提供命令行操作

rocket的安装搭建

      (贷款链接)

       1.windos的单机部署

       2.linux下的部署、docker环境下部署

       3.多master无从节点

       4.多master多从异步双写 部署

       5.多master 多 slave 同步双写部署 (真正的高可用)

rocket的各种搭建部署结构

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 同步双写部署 (真正的高可用,生产使用架构)

只有主节点和从节点都存储成功,才返回成功。保证了主从消息一致。

rocketmq架构角色作用

NameServer:

  • NameServer是RocketMQ的寻址服务,存储Broker的路由信息以及配置信息,用户端(生成者消费者)依靠NameServer去选择对于的Broker服务
  • NameServer集群成员之间互补通信
  • NameServer本身不存储数据(内存中存有注册信息等,不持久化),其数据均来自Broker与用户端

Broker:

  • Broker负责存储生产者发送的消息,并为消费者提供消费支撑。
  • Broker以group分开,每个group只允许存在一个master
  • Master、Slave之间数据同步可选择同步、异步复制,同理Master与Master之间也存在同步
  • Broker向所有NameServer节点建立长连接,注册Topic信息
     

 

参考文章:

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架构及名词概念