一、RocketMQ 介绍
- RocketMQ 是一款分布式、队列模型的消息中间件,由阿里巴巴研发。
- 底层采用 Netty NIOl 框架实现数据通信。
- 3.X 版本弃用 Zookeeper,内部使用更轻量级的 NameServer 进行网络路由,提供了服务性能,并支持消息失败重试机制。
- 支持集群模式、消费者负载均衡、水平扩展能力,支持广播模式。
- 采用零拷贝原理,顺序写盘、支持亿级消息堆积能力。
- 提供丰富的消息机制,比如顺序消息、事务消息。
二、使用场景
-
应用解耦
-
流量削峰
-
消息分发
-
最终一致性
-
动态扩容
三、架构
- Producer
* 消息生产者,负责产生消息,一般由业务系统负责产生消息。
- 3.2 Consumer
* 消息消费者,负责消费消息,一般是后台系统负责异步消费。
- NameServer
* 无状态节点,用来保存活跃的 broker 列表,和 topic 列表。
* 可集群部署,节点之间无任何信息同步,通过 Broker与每个 NameServer 连接,可以保证信息同步性。
- Broke
* 消息中转角色,负责存储消息,转发消息。
* 拥有 Master、slave(主备)的概念,主备有同步复制、异步双写功能来保持数据同步
* 标识:Master的 BrokerId 为 0 ,Slave 的 BrokerId 非0。
* 部署模式:
* 单 Master 无 Slave(脆弱)
* 单 Master 多 Slave(单点故障就瘫,开源版无主备切换功能)
* 多 Master 无 Slave(无单点故障,线上生产常用模式)
* 多 Master 多 Slave(无单点故障)
- topic
消息的逻辑管理单位。