RocketMQ--高级特性01

消息存储特性、介质

存储:

  1. 消息生成者发送消息到MQ
  2. MQ收到消息,将消息进行持久化,存储该消息
  3. MQ返回ACK给生产者
  4. MQ push 消息给对应的消费者
  5. 消息消费者返回ACK给MQ
  6. MQ删除消息

注意:

  1. 第⑤步MQ在指定时间内接到消息消费者返回ACK,MQ认定消息消费成功,执行⑥
  2. 第⑤步MQ在指定时间内未接到消息消费者返回ACK,MQ认定消息消费失败,重新执行④⑤⑥
    在这里插入图片描述
    存储介质:
  3. 数据库
    1. ActiveMQ
    2. 缺点:数据库瓶颈将成为MQ瓶颈
  4. 文件系统
    1. RocketMQ/Kafka/RabbitMQ
    2. 解决方案:采用消息刷盘机制进行数据存储
    3. 缺点:硬盘损坏的问题无法避免
      .在这里插入图片描述

高效读写:

1.申请一片大空间(1G),然后顺序读写

在store文件夹下的commitlog文件(大小1G)中

2.“零拷贝”:

Linux系统发送数据的方式
“零拷贝”技术:

  1. 数据传输由传统的4次复制简化成3次复制,减少1次复制过程
  2. Java语言中使用MappedByteBuffer类实现了该技术
  3. 要求:预留存储空间,用于保存数据(1G存储空间起步
    在这里插入图片描述

消息存储结构(如何存储):

MQ数据存储区域包含如下内容

  1. 消息数据存储区域
    1. topic
    2. queueId
    3. message
  2. 消费逻辑队列(负责存储偏移量,相当于数组下标)
    1. minOffset
    2. maxOffset
    3. consumerOffset
  3. 索引
    1. key索引
    2. 创建时间索引
      在这里插入图片描述

同步&异步刷盘机制:

同步刷盘

  1. 生产者发送消息到MQ,MQ接到消息数据

  2. MQ挂起生产者发送消息的线程

  3. MQ将消息数据写入内存

  4. 内存数据写入硬盘

  5. 磁盘存储后返回SUCCESS

  6. MQ恢复挂起的生产者线程

  7. 发送ACK到生产者

异步刷盘

  1. 生产者发送消息到MQ,MQ接到消息数据
  2. MQ将消息数据写入内存
  3. 发送ACK到生产者

优劣:
同步刷盘:安全性高,效率低,速度慢(适用于对数据安全要求较高的业务)
异步刷盘:安全性低,效率高,速度快(适用于对数据处理速度要求较高的业务)

配置方式:
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值