RocketMQ学习笔记(1)----RocketMQ的简介

1. 什么是RocketMQ?

  

  

  是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。
  Producer、Consumer、队列都可以分布式。
   Producer 吐一些队列轮流収送消息,队列集合称为Topic,Consumer 如果做广播消费,则一个consumer
  实例消费返个Topic 对应的所有队列,如果做集群消费,则多个Consumer 实例平均消费返个topic 对应的
  队列集合。
  能够保证严格的消息顺序
  提供丰富的消息拉叏模式
  高效的订阅者水平扩展能力
  实时的消息订阅机制
  亿级消息堆积能力
  较少的依赖

  RocketMQ作为阿里巴巴的两大分布式技术之一,是一款纯java、分布式、队列模型的开源消息中间件,他参考了Java的JMS规范,但是它并没有遵循JMS的规范,经历了淘宝双十一的洗礼,在功能和性能上据说是远超ActiveMQ。

2. RocketMQ发展史

  1. Metaq(Metamorphsis) 1.x

   由开源社区killme2008维护,开源社区非常活跃。

   github地址:https://github.com/killme2008/Metamorphosis

  2. Metaq 2.x

   于2012年10月份上线,在淘宝内部被广泛使用。

  3. RecoketMQ 3.x

  metaq 3.0发布时,产品名称改为RocketMQ。基于公司内部开源共建原则,RocketMQ项目只维护核心功能,且去除了所有其他运行时的依赖,核心功能最简化。每个BU的个性化需求都在RocketMQ项目之上进行深度定制。RocketMQ向其他BU提供的仅仅是jar包,例如要定制一个Broker,那么只需要依赖rocketmq-broker这个jar包即可,可通过API进行交互,如果定制client,则依赖rocketmq-client这个jar包,对其提供的api进行再封装。

  开源社区地址:https://github.com/apache/RocketMQ

3. RocketMQ特性

  原生分布式

  要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在单点性。

  严格消息顺序
  RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证!

  亿级消息堆积
  RocketMQ提供亿级消息的堆积能力,这不是重点,重点是堆积了亿级的消息后,依然保持写入低延迟!

  两种的消息拉取模式(Push or Pull)。
  Push好理解,比如在消费者端设置Listener回调;而Pull,控制权在于应用,即应用需要主动的调用拉消息方法从Broker获取消息,这里面存在一个消费位置记录的问题(如果不记录,会导致消息重复消费)。

  特有的分布式协调器
  在Metaq1.x/2.x的版本中,分布式协调采用的是Zookeeper,而RocketMQ自己实现了一个NameServer,更加轻量级,性能好!

  组(Group)
  有了Producer/Consumer Group。
  ActiveMQ中并没有Group这个概念,而在RocketMQ中理解Group的机制很重要。想过没有,通过Group机制,让RocketMQ天然的支持消息负载均衡!比如某个Topic有9条消息,其中一个Consumer Group有3个实例(3个进程 OR 3台机器),那么每个实例将均摊3条消息!(注意RocketMQ只有一种模式,即发布订阅模式。)

  其他

  消息失败重试机制、高效的订阅者水平扩展能力、强大的API、事务机制等等

 

posted @ 2018-11-08 16:57  Eternally_dream  阅读(1078)  评论(0编辑  收藏  举报