1.3 主流消息中间件介绍——RocketMQ

RocketMQ


RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目。用Java语言实现,在设计时参考了Kafka,并做出了自己的一些改进,消息可靠性上比Kafka更好。RocketMQ在阿里内部被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。

1 RocketMQ特点:

  1. 保证消息的顺序性,消息按顺序消费。
  2. 提供了丰富的拉取和处理模式。
  3. 高效的订阅者,也可以进行水平扩展。
  4. 承载上亿级别的消息堆积能力。

2 RocketMQ集群架构模式

  1. Master-Slave(主从)模式
  2. 双Master模式。
  3. 双主双从模式。
  4. 多主多从模式。
  5. 一主多从模式。
RocketMQ集群拓扑

阿里觉得Zookeeper性能太低,自己搭建了NameServer,这个NameServer代码也十分精简,一共也就几百行代码。有兴趣可以去读源码。

3 RocketMQ小结

RocketMQ优点:
  1. 单机支持1万以上持久化队列;
  2. RocketMQ的所有消息都是持久化的,先写入系统PAGECACHE,然后刷盘,可以保证内存与磁盘都有一份数据,而访问时,直接从内存读取。
  3. 模型简单,接口易用(JMS的接口很多场合并不太实用);
  4. 性能非常好,可以允许大量堆积消息在Broker中;
  5. 支持多种消费模式,包括集群消费、广播消费等;
  6. 各个环节分布式扩展设计,支持主从和高可用;
  7. 开发度较活跃,版本更新很快。
RocketMQ缺点:
  1. 支持的 客户端语言不多,目前是Java及C++,其中C++还不成熟
  2. 维护RocketMQ需要专业的团队
  3. 商业版收费,有许多功能是不对外提供的。
  4. 没有在MQ核心里实现JMS等接口
版权声明: 本文为智客工坊「琦彦 」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""