消息队列BMQ | 青训营笔记

90 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

  1. BMQ:兼容Kafaka,存算分离,云原生消息队列
  2. BMQ架构:proxy和broker都是无状态的
  • producer-->comsumer-->proxy-->broker-->HDFS-->controller-->coodinator-->meta
  • image.png
  1. HDFS写文件流程
  • 一个副本由多个segment组成。客户端会按照副本数选择一定的datanode,将文件写在这些datanode上面,之后选择segment重复以上操作 image.png
  1. kafaka和BMQ数据文件对比:
  • kafaka数据文件的写入:先在leader上面写好文件,同步到follower上面。同一个副本的所有segment在一台机器上;会出现负载不均衡的事情
  • BMQ:对于单个副本来说,是随机分配到不同节点上面的 image.png
  1. BMQ写文件失败如何处理:
  • 在写文件时,会选择与副本数量相同的datanode写文件,当有一个node宕机时,可以选择一个节点替换该节点写入文件 image.png
  1. 使用场景
  • 可以用来处理高并发的业务场景:秒杀活动、周年庆、定期优惠等等
  • kafaka和BMQ相关概念对比 image.png
  1. 数据流移动 producer-->broker-->consumer,其中broker又包括master和slave,slave提供轻量级服务发现和路由 image.png
  2. 消息存储模型: 对于一个broker来说,所有的消息会append在一个commitlog上面,按照不同的queue,重新dispatch在不同的consumer中,这样consumer就可以按照queue进行消费了。 consumerqueue存储的数据不是真实的数据,相当于保存在commitlog中数据的一个索引 image.png