这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,本节课首先介绍了消息队列的前世今生,并分别介绍了消息队列kafka、BMQ、RocketMQ以及最佳实践。
1 前世今生
消息队列(MQ),指保存消息的一个容器,本质是个队列,但是此队列需要支持高吞吐、高并发并且高可用。
1.1 消息队列发展进程
1.2 业界消息队列对比
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 数据复制
2.5 Kafka架构
2.6 帮助Kafka提高吞吐或稳定性的功能
- Producer:批量发送、数据压缩
- Broker:顺序写、消息索引、零拷贝
- Consumer:Rebalance
2.7 其他问题
Kafka数据复制问题、重启操作、替换扩容缩容、负载不均衡
3 消息队列——BMQ
3.1 BMQ简介
BMQ兼容Kafka协议,存算分离,云原生消息队列
架构图
3.2 运维操作对比
3.3 Broker写文件流程
3.4 其他问题
Proxy/多机房部署/泳道消息/Databus/Mirror/Index/parquet
4 消息队列——RocketMQ
4.1 RocketMQ基本概念
4.2 RocketMQ架构
4.3 存储模型
4.4 高级特性
事务场景/事务消息/延迟发送/延迟消息/处理失败/消费重试和死信队列
5 个人总结
本节课学习了消息队列方面的知识,课后应对本节课介绍的三种消息队列进行回顾与总结。