消息队列 | 青训营笔记

166 阅读2分钟

消息队列 | 青训营笔记

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

由于消息队列内容太多,这篇笔记起目录的作用,细节内容还需一个个具体查阅。

Kafka

  • 使用场景:业务日志、用户行为数据、Metrics数据

架构:需要了解 Producer端逻辑、Broker端逻辑、Consumer端逻辑

如何帮助 Kafka 提高吞吐或稳定性?

  • Producer:批量发送,数据压缩
  • Broker:顺序写,消息索引,零拷贝
  • Consumer:Rebalance

BMQ

Kafka 在使用中通常会遇到什么问题?

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

架构: Producer, Proxy Cluster, Broker Cluster, Consumer Group, Distributed Storage System

运维对比image.png

  • 了解 HDFS (Hadoop Distributed File System) 写文件流程

Broker-Partition 状态机

保证对于任意分片在同一时刻只能在一个 Broker 上存活

Broker写文件流程

了解数据校验、Buffer、Writer Thread逻辑

  • 写文件 Failover,如果 DataNode 节点挂了,或者其他原因导致写 fail,如何处理

BMQ-高级特性

什么是泳道、Databus、Mirror、Index、Parquet


RocketMQ

  • 使用场景:例如,针对电商服务线,业务涉及广泛,注册、订单、库存、物流等;同时存在许多业务峰值,如秒杀、周年庆、定期优惠等

RocketMQ 基本概念

  1. 逻辑队列 Topic
  2. 消息体 Message
  3. 标签 Tag(Kafka没有)
  4. 分区 ConsumerQueue(对应Kafka:Partition)
  5. 生产者 Producer
  6. 生产者集群 ProducerGroup(Kafka没有)
  7. 消费者 Consumer
  8. 消费者集群 ConsumerGroup
  9. 集群控制器 Nameserver(对应Kafka:Controller)

RocketMQ 架构

image.png

RocketMQ 高级特性

了解事务场景、事务消息、延迟发送、延迟消息、处理失败、消费重试和死信队列