这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
前言
上节课介绍了 Kafka,并且提出了 Kafka 的一些问题。
消息队列- BMQ
1. 简介
兼容 Kafka 协议,存算分离,云原生消息队列。
架构图:
2. 运维对比
3. HDFS 写文件流程
4. BMQ 文件结构
5. Broker-Partition 状态机
写文件流程:
数据校验,参数是否合法。校验完成后放入 Buffer 中,通过一个异步的 Writer Thread 线程将数据写入底层的储存系统之中。当文件到达一定大小是需要建一个新的segment文件。这个文件会随机挑选与副本数量相当的数据节点进行插写入,此时如果一个结点出现了问题,导致不能正常写入了。不能等着结点恢复,不知道他什么时候能恢复,应该直接将其替换掉。
Consumer 发送 Fetch Request 之后会有一个 Wait 流程。作用是,如果没有数据写入的话 Consumer 就会一直发送,请求过多服务端会出问题,因此设置了一个等待机制。如果没有 Fetch 到数据 proxy 会等待一定时间。
6. 多机房部署
7. BMQ 高级特性
8. 泳道消息
9. Databus
10. Mirror
11. Index
12. Parquet
Apache Parquet 是 Hadoop 生态圈中一种新型列式存储结构,可以兼容 Hadoop 生态圈中大多数计算框架,被多种查询引擎支持。
13. 小结
- BMQ 的架构模型(解决 Kafka 存在的问题)
- BMQ 读写流程(Failover 机制,写入状态机)
- BMQ 高级特性(泳道、Databus、Mirror、Index、Parquet)