走进消息队列(下) | 青训营笔记

378 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。

PPT

前言

上节课介绍了 Kafka,并且提出了 Kafka 的一些问题。

传送门

消息队列- BMQ

1. 简介

兼容 Kafka 协议,存算分离,云原生消息队列。

架构图:

image.png

2. 运维对比

image.png

3. HDFS 写文件流程

image.png

4. BMQ 文件结构

image.png

5. Broker-Partition 状态机

image.png

写文件流程:

image.png

数据校验,参数是否合法。校验完成后放入 Buffer 中,通过一个异步的 Writer Thread 线程将数据写入底层的储存系统之中。当文件到达一定大小是需要建一个新的segment文件。这个文件会随机挑选与副本数量相当的数据节点进行插写入,此时如果一个结点出现了问题,导致不能正常写入了。不能等着结点恢复,不知道他什么时候能恢复,应该直接将其替换掉。

image.png

Consumer 发送 Fetch Request 之后会有一个 Wait 流程。作用是,如果没有数据写入的话 Consumer 就会一直发送,请求过多服务端会出问题,因此设置了一个等待机制。如果没有 Fetch 到数据 proxy 会等待一定时间。

image.png

6. 多机房部署

image.png

7. BMQ 高级特性

image.png

8. 泳道消息

image.png

image.png

image.png

image.png

image.png

9. Databus

image.png

10. Mirror

image.png

11. Index

image.png

12. Parquet

Apache Parquet 是 Hadoop 生态圈中一种新型列式存储结构,可以兼容 Hadoop 生态圈中大多数计算框架,被多种查询引擎支持。

image.png

image.png

13. 小结

  1. BMQ 的架构模型(解决 Kafka 存在的问题)
  2. BMQ 读写流程(Failover 机制,写入状态机)
  3. BMQ 高级特性(泳道、Databus、Mirror、Index、Parquet)

end !