RocketMQ

2022-08-04  本文已影响0人  极速魔法

RocketMQ 是一款高性能,高吞吐量,低延迟,高可用,高可靠的分布式消息中间件

RocketMQ架构

RocketMQ角色

RocketMQ特性

  1. 订阅与发布,
    1. 消息的订阅是指某个消费者关注了某个topic中,带有某些tag的消息。
  2. 消息顺序
  3. 消息过滤,Broker端根据tag过滤
  4. 消息可靠性
  5. 至少异常,每个消息必须投递一次
  6. 回溯消费,时间维度回退消费进度
  7. 事务消息,应用事务和发送消息定义到全局事务中
  8. 定时消息,
  9. 消费重试
  10. 消息重投,可能会造成消息重复
  11. 流量控制
  12. 死信队列

消费模式

Push和Pull模式本质都是采用消费端主动拉取的方式,即consumer轮询从 broker拉取消息。

安装

mqnamesrv
mqbroker -n localhost:9876

高级特性

提高Consumer的处理能力

  1. 提高消费并行度,增加Consumer实例
  2. 以批量方式进行消费,设置Consumer的 consumeMessageBatchMaxSize这个参数
  3. 检测延时情况,跳过非重要消息

消息存储

顺序写可以达到 600MB/s,RocketMQ采用顺序写入

同步复制和异步复制

消息重试

死信队列

RocketMQ中消息重试超过一定次数后(默认16次)就会被放到死信队列中

  1. 一个死信队列对应一个 Group ID, 而不是对应单个消费者实例。
  2. 一个死信队列包含了对应 Group ID 产生的所有死信消息,不论该消息属于哪个 Topic。

顺序消息

部分有序

  1. 发送要把同一业务ID的消息发送 到同一个Message Queue
  2. 消费过程中,要做到消费者从同一个Message Queue 消费消息。消费端通过使用MessageListenerOrderly

事务消息

2阶段提交

  1. 一阶段事务消息对用户不可见对消息的Topic和Queue等属性进行替换, 同时将原来的Topic和Queue信息存储到Half消息的属性中,
  2. Commit和Rollback操作以及Op消息的引入,Op消息标识 事务消息已经确定的状态(Commit或者Rollback)
  3. Op消息的存储和对应关系,Op消息的内容为对应的Half消息的存储的Offse
  4. Half消息的索引构建,二阶段构建索引时需要读取出Half消息,并将Topic和Queue替换成真正的目标的 Topic和Queue

NameServer作用

  1. NameServer 用来保存活跃的 broker 列表,包括 Master 和 Slave 。
  2. NameServer 用来保存所有 topic 和该 topic 所有队列的列表。
  3. NameServer 用来保存所有 broker 的 Filter 列表。
  4. 命名服务器为客户端,包括生产者,消费者和命令行客户端提供最新的路由信息。
上一篇 下一篇

猜你喜欢

热点阅读