消息队列原理与实战 | 青训营笔记

77 阅读1分钟

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

消息队列简介

问题: 系统崩溃 && 服务能力有限 && 链路耗时长尾 && 日志存储

  1. 解耦
  2. 削峰
  3. 异步
  4. 日志处理

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

生产 ---> Message Message Message Message ---> 消费

image.png

Kafka

创建集群 -> 新增Topic -> 编写生产者逻辑 -> 编写消费者逻辑

image.png

image.png

Topic内部

image.png

image.png

Kafka架构

image.png

运维成本高

对于负载不均衡的场景,解决方法负载

没有自己的缓存

Controller、Coordinator 和 Broker在同一个进程中,大量的IO操作会造成性能下降

BMQ

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

BMQ架构

image.png

image.png

小结

BMQ架构模型 -> 解决Kafka存在的问题

BMQ读写流程 -> Failover机制,写入状态机

BMQ高级特性 -> 泳道,Databus, Mirror,Index,Parquet

RocketMQ

使用场景 image.png

基本概念和对比 image.png

RocketMQ架构

image.png

高级特性

事务场景

事务消息

延迟发送

延迟消息

处理失败

消费重试和死信队列


参考资料

消息队列前世今生 - 掘金 (juejin.cn)

【后端专场 学习资料五】第五届字节跳动青训营 - 掘金 (juejin.cn)