这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
一、课程内容
- 概念
- Kafka
- BMQ
- RocketMQ
二、详细知识点
1、概念
消息队列是保存消息的一个容器,本质是个队列,支持高吞吐、高并发、高可用。
2、Kafka
分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色
概念
Topic:逻辑队列,不同Topic可以建立不同的Topic
Cluster:物理集群,每个集群中可以建立多个不同的Topic
Producer:生产者,负责将业务消息发送到Topic中
Consumer:消费者,负责消费Topic中的消息
ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉
Offset:消息在partition内的相对位置信息,可以理解为唯一ID,在partition内严格递增。
架构
一条消息流程
Producer 生产-> Broker 消费-> Comsumer
提高吞吐和稳定性
Producer:批量发送、数据压缩
Broker:顺序写、消息索引、零拷贝
Comsumer:Rebalance
3、BMQ
存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群
与Kafka对比
| 名称 | Kafka | BMQ |
|---|---|---|
| 重启 | 需要数据复制,分钟级重启 | 重启后可直接对外服务,秒级完成 |
| 替换 | 需要数据复制,分钟级替换,甚至天级别 | 替换后可直接对外服务,秒级完成 |
| 扩容 | 需要数据复制,分钟级扩容、甚至天级别 | 扩容后可直接对外服务,秒级完成 |
| 缩容 | 需要数据复制,分钟级扩容,甚至天级别 | 缩容后可直接对外服务,秒级完成 |
4、RocketMQ
低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广
使用场景
电商业务线、业务峰值时刻
与Kafka对比
| 名称 | Kafka | RocketMQ |
|---|---|---|
| 标签 | 无 | Tag |
| 分区 | Partition | ConsumerQueue |
| 生产者集群 | 无 | Producer Group |
| 集群控制器 | Controller | Nameserver |