RocketMQ的关键知识笔记

6种消息类型

  • 普通消息
  • 顺序消息
  • 广播消息
  • 延时消息
  • 批量消息
  • 事务消息

2种消费模式

  • 集群消费:一个Group ID内只消费一次
  • 广播消费:一个Group ID内所有Consumer都消费

部署架构

在这里插入图片描述

  • Name Server + broker(主/备) + producer + consumer
  • 【broker】与所有Name Server建立长连接
  • 【producer】与某个Name Server建立连接,查询topic所在broker,并与broker master建立连接
  • 【consumer】与某个Name Server建立连接,查询topic所在broker,与broker master 和broker slave 分别建立连接。broker master会根据情况建议consumer从哪里拉消息

broker原理

消息存储
  • 一个broker一个commitLog(用于顺序写),broker上的多个topic共用一个commitLog。
  • 基于commitLog ,会根据topic情况分别生成consumer queue,并建立indexFile,用于快速读取

高性能原理

核心设计 - 1:(写优化)commitlog的顺序写PageCache

  • 【页缓存 PageCache】PageCache是操作系统对文件的缓存,在PageCache上的顺序写操作速度接近于内存读写速度

核心设计 - 2:(读优化)commitlog的随机读优化

  • 【PageCache的预读取】:从物理磁盘访问目标页时,会顺序对其相邻块的数据进行预读取。然后,在PageCache中的读取速度又接近于内存速度
  • 【直接内存MMap】:减少了内核态和用户态的内存拷贝次数
  • 【SSD硬盘】

核心设计 - 3:异步刷盘【默认】

  • 【同步刷盘】真正到磁盘才回复ACK给producer。例如严格的金融业务使用。
  • 【异步刷盘】消息刷到PageCache就回复ACK。提高性能和吞吐量

RPC

RocketMQ的RPC通信采用Netty作为底层通信库,同样也遵循Reactor多线程模型。


oneway模式(极限高吞吐)

此模式下,MQ Producer只发送请求不等待应答,耗时通常在微秒级完成。例如一般的日志收集场景。


怎么提升消息消费能力

1、创建topic时放大queue大小,进而能提升consumer个数上限。(适用MQ队列水位高的情况)

2、增加新topic,目的也是增加queue,然后增加consumer。(适用消息量大,MQ队列水位较低的情况)


事务消息

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值