1.3 主流消息中间件介绍——RocketMQ
RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目。用Java语言实现,在设计时参考了Kafka,并做出了自己的一些改进,消息可靠性上比Kafka更好。RocketMQ在阿里内部被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。
1 RocketMQ特点:
- 保证消息的顺序性,消息按顺序消费。
- 提供了丰富的拉取和处理模式。
- 高效的订阅者,也可以进行水平扩展。
- 承载上亿级别的消息堆积能力。
2 RocketMQ集群架构模式
- Master-Slave(主从)模式
- 双Master模式。
- 双主双从模式。
- 多主多从模式。
- 一主多从模式。
RocketMQ集群拓扑
阿里觉得Zookeeper性能太低,自己搭建了NameServer,这个NameServer代码也十分精简,一共也就几百行代码。有兴趣可以去读源码。
3 RocketMQ小结
RocketMQ优点:
- 单机支持1万以上持久化队列;
- RocketMQ的所有消息都是持久化的,先写入系统PAGECACHE,然后刷盘,可以保证内存与磁盘都有一份数据,而访问时,直接从内存读取。
- 模型简单,接口易用(JMS的接口很多场合并不太实用);
- 性能非常好,可以允许大量堆积消息在Broker中;
- 支持多种消费模式,包括集群消费、广播消费等;
- 各个环节分布式扩展设计,支持主从和高可用;
- 开发度较活跃,版本更新很快。
RocketMQ缺点:
- 支持的 客户端语言不多,目前是Java及C++,其中C++还不成熟
- 维护RocketMQ需要专业的团队
- 商业版收费,有许多功能是不对外提供的。
- 没有在MQ核心里实现JMS等接口
版权声明:
本文为智客工坊「琦彦 」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。