这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
目录
- 什么是消息队列
- Kafka
- BMQ
- RocketMQ
什么是消息队列
消息队列(MQ),指保存消息的一个容器,本质是一个队列,但这个队列需要支持
高吞吐,高并发,高可用
graph LR
生产 --> Message1 --> Message2 --> Message3 --> 消费
业界常见的消息队列
- Kafka: 分布式、多分区、多副本的日志题解服务,在高吞吐场景下发挥较为出色
- RocketMQ: 低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性、在一些实时场景中运用较广
- Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式为一体、采用存算分离的架构设计
- BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群
Kafka
使用场景
- 搜索服务
- 直播服务
- 订单服务
- 支付服务
- 搜索、点赞、评论、收藏
如何使用Kafka
graph TD
创建集群 --> 新增Topic --> 编写生产者逻辑 --> 编写消费者逻辑
基本概念
- Topic: 逻辑队列
- Cluster: 物理集群
- Producer: 生产者
- Consumer:消费者
- ConsumerGroup: 消费者组
- Offset: 消息在partition内的相对位置信息
- Replica:每个partition下有多个Replica
kafka的架构
Kafka由一个zookeeper集群,多个producer和多个broker,多个consumer组成
BMQ
兼容Kafka协议,存算分离,云原生消息队列 ####运维操作对比
| 名称 | Kafka | BMQ |
|---|---|---|
| 重启 | 分钟级 | 秒级 |
| 替换 | 天级 | 秒级 |
| 扩容 | 天级 | 秒级 |
| 缩容 | 天级 | 秒级 |
RocketMQ
使用场景
针对电商业务先,其业务涉及广泛,如注册,订单,库存,物流等,同时也会涉及许多业务峰值时刻,如秒杀活动,周年庆,定期特惠等
Kafka和RockerMQ对比
| 名称 | Kafka | RockerMQ |
|---|---|---|
| 逻辑队列 | Topic | Topic |
| 消息题 | Message | Message |
| 标签 | 无 | Tag |
| 分区 | Partition | Consumer Group |
| 生产者 | Producer | Producer |
| 生产者集群 | 无 | Producer Group |
| 消费者 | Consumer | Consumer |
| 消费者集群 | Consumer Group | Consumer Group |
| 集群控制器 | Controller | Nameserver |
RockerMQ:由一个Nameserver一个Broker Cluster和若干个Consumer Group组成