1、RocketMQ的发展历史
RocketMq是一个由阿里巴巴开源的消息中间件, 2012年开源,2017年成为apache顶级项目
2、RocketMQ的优点
1. 支持集群模型、负载均衡、水平扩展能力
2. 亿级别消息堆积能力
3. 采用零拷贝的原理,顺序写盘,随机读
4. 底层通信框架采用Netty NIO
5. NameServer代替Zookeeper,实现服务寻址和服务协调
6. 消息失败重试机制、消息可查询
7. 强调集群无单点,可扩展,任意一点高可用,水平可扩展
8. 经过多次双十一的考验
3、RocketMQ的架构
在rocketmq的早版本(2.x)的时候,是没有namesrv组件的,用的是zookeeper做分布式协调
和服务发现,但是后期阿里数据根据实际业务需求进行改进和优化,自组研发了轻量级的
namesrv,用于注册Client服务与Broker的请求路由工作,namesrv上不做任何消息的位置存储,
频繁操作zookeeper的位置存储数据会影响整体集群性能
4、RocketMQ组成
1、Name Server 可集群部署,节点之间无任何信息同步。提供轻量级的服务发现和路由
2、Broker(消息中转角色,负责存储消息,转发消息) 部署相对复杂,Broker 分为Master 与Slave,一
个Master 可以对应多个Slave,但是一个Slave 只能对应一个Master,Master 与Slave 的对应关系通过
指定相同的BrokerName,不同的BrokerId来定 义,BrokerId为0 表示Master,非0 表示Slave。
Master 也可以部署多个
3、Producer,生产者,拥有相同 Producer Group 的 Producer 组成一个集群, 与Name Server 集群
中的其中一个节点(随机选择)建立长连接,定期从Name Server 取Topic 路由信息,并向提供Topic
服务的Master 建立长连接,且定时向Master 发送心跳。Producer 完全无状态,可集群部署
4、Consumer,消费者,接收消息进行消费的实例,拥有相同 Consumer Group 的 Consumer 组成
一个集群,与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server 取
Topic 路由信息,并向提供Topic 服务的Master、Slave 建立长连接,且定时向Master、Slave 发送心
跳。Consumer既可以从Master 订阅消息,也可以从Slave 订阅消息,订阅规则由Broker 配置决定
5、使用RocketMQ前提
要使用rocketmq,至少需要启动两个进程,nameserver、broker,前者是各种topic注册中心,后者
是真正的broker
转载须注明
文章由 青涩知夏 编辑,转载请注明出处