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

80 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,本节课首先介绍了消息队列的前世今生,并分别介绍了消息队列kafka、BMQ、RocketMQ以及最佳实践。

1 前世今生

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

1.1 消息队列发展进程

image.png

1.2 业界消息队列对比

image.png

2 消息队列——Kafka

2.1 使用场景

搜索服务/直播服务/订单服务/支付服务/日志信息/用户行为/Metrics数据

2.2 如何使用Kafka

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

2.3 基本概念

  • Topic:Kafka中的逻辑队列,每一个不同业务场景就是一个不同topic
  • Cluster:Kafka的物理集群,每个集群中可以新建多个不同topic
  • Producer:消息的生产端
  • Consumer:消息的消费端
  • Partition:topic可以分片,不同分片可并发处理
  • offset:消息在partition内的相对位置信息
  • replica:每个分片有多个replica(分片的副本)

2.4 数据复制

image.png

2.5 Kafka架构

image.png

2.6 帮助Kafka提高吞吐或稳定性的功能

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

2.7 其他问题

Kafka数据复制问题、重启操作、替换扩容缩容、负载不均衡

3 消息队列——BMQ

3.1 BMQ简介

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

架构图

image.png

3.2 运维操作对比

image.png

3.3 Broker写文件流程

image.png

3.4 其他问题

Proxy/多机房部署/泳道消息/Databus/Mirror/Index/parquet

4 消息队列——RocketMQ

4.1 RocketMQ基本概念

image.png

4.2 RocketMQ架构

image.png

4.3 存储模型

image.png

4.4 高级特性

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

5 个人总结

本节课学习了消息队列方面的知识,课后应对本节课介绍的三种消息队列进行回顾与总结。