rocketmq初识

来源:互联网 发布:淘宝买流量没有退款项 编辑:程序博客网 时间:2024/06/08 02:20

RocketMQ作为一款分布式的消息中间件,,经历了Metaq1.x、Metaq2.x的发展和淘宝双十一的洗礼,在功能和性能上远超ActiveMQ。RocketMQ 不遵循任何规范(包括JMS),但是参考了各种规范不同类产品的设计思想。

RocketMq特点:

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

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

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

4.丰富的消息拉取模式(Push or Pull)

Push,比如在消费者端设置Listener回调;而Pull,控制权在于应用,即应用需要主动的调用拉消息方法从Broker获取消息,

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

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

术语
  Producer
消息生产者,负责产生消息,一般由业务系统负责产生消息。
  Consumer
消息消费者,负责消费消息,一般是后台系统负责异步消费。
  Push Consumer
Consumer 的一种,应用通常吐 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立
刻回调 Listener 接口方法。
  Pull Consumer
Consumer 的一种,应用通常主动调用 Consumer 的拉消息方法从 Broker 拉消息,主动权由应用控制。
  Producer Group
一类 Producer 的集合名称,返类 Producer 通常发送一类消息,且发送逻辑一致
  Consumer Group
一类 Consumer 的集合名称,返类 Consumer 通常消费一类消息,且消费罗辑一致。
  Broker
消息中转角色,负责存储消息,转发消息,一般也称为 Server。在 JMS 规范中称为 Provider。

RocketMQ 逻辑部署结构




Producer Group
用来表示一个发送消息应用,一个 Producer Group 下包含多个 Producer 实例,可以是多台机器,也可以
是一台机器的多个进程,或者一个进程的多个 Producer 对象。一个 Producer Group 可以发送多个 Topic
消息,Producer Group 作用如下:
1.  标识一类 Producer
2.  可以通过运维工具查询这个发送消息应用下有多个 Producer 实例
3.  发送分布式事务消息时,如果 Producer 中途意外宕机,Broker 会主动回调 Producer Group 内的任意
一台机器来确认事务状态。
Consumer Group
用来表示一个消费消息应用,一个 Consumer Group 下包含多个 Consumer 实例,可以是多台机器,也可
以是多个进程,或者是一个进程的多个 Consumer 对象。一个 Consumer Group 下的多个 Consumer 以均摊
方式消费消息,如果设置为广播方式,那么 Consumer Group 下的每个实例都消费全量数据。

Broker 集群搭建

1.  单个 Master
这种方式风险较大,一旦 Broker 重启或者宕机时,会导致整个服务不可用,不建议线上环境使用
2.  多 Master 模式
一个集群无 Slave,全是 Master,例如 2 个 Master 或者 3 个 Master
优点:配置简单,单个 Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢
复情况下,由于 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最
高。
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复以前不可订阅,消息实时性会受到影响。
3.  多 Master 多 Slave 模式,异步复制
每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采用异步复制方式,主备有短暂消息延迟,毫秒级。
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为 Master 宕机后,消费者仍然可以
从 Slave 消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。
缺点:Master 宕机,磁盘损坏情况,会丢失少量消息。
4.  多 Master 多 Slave 模式,同步双写
每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采用同步双写方式,主备都写成功,向应用反回成功。
优点:数据服务都无单点,Master 宕机情况下,消息无延迟,服务可用性与数据可用性都非常高
缺点:性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT 会略高。目前主宕机后,备机不能自动
切换为主机,后续会支持自动切换功能。



原创粉丝点击