消息队列|青训营笔记

42 阅读2分钟

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

消息队列的前世今生

image.png

消息队列是什么?

消息队列(MQ),指保存消息的一个容器,本质是个队列,但这个队列需要支持高吞吐、高并发,并且高可用

业界消息队列对比

Kafka:分布式的、分区的、多副本的日志提交服务、在高吞吐场景下发挥较为出色

RocketMQ:低延迟、强一致性、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广

Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用存算分离的架构设计

消息队列-Kafka

kafka使用场景,业务日志、用户行为数据、Metrics数据

基本概念,Producer、Cluster、Consumer、Topic、Partition

数据迁移、Offset、Partition选主

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑

Kafka存在的问题

  1. 运维成本高
  2. 对于负载不均衡的场景,解决方案复杂
  3. 没有自己的缓存,完全依赖Page Cache
  4. Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降

消息队列-BMQ

BMQ架构

image.png BMQ与Kafka文件结构对比

image.png

BMQ各模块是如何工作的,Broker、Proxy、HDFS、MetaStorage

BMQ读写流程(Failover机制,写入状态机)

BMQ高级特性(泳道、Databus、Mirror、Index、Parquet)

BMQ多机房容灾

消息队列-RocketMQ

RocketMQ使用场景

RocketMQ和Kafka对比

RocketMQ架构介绍,Producer、Broker、Nameserver、Consumer

image.png

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑

感受与反思

课上讲到消息队列的使用场景包括点赞、评论等需要高并发的场景中,而我们的大项目中就有点赞、评论的需求,故可以尝试使用消息队列;不过我还没太懂其中的原理,时间原因也还没进行集群搭建的尝试,等有时间了希望能深入了解。

参考资料

juejin.cn/post/719632…