一、什么是消息队列
消息队列(MQ):是保存消息的一个容器,其本质是个队列。 特点:该队列需要支持高吞吐,高并发,并且高可用。
二、消息队列
(一)Kafka相关基本概念
- Topic:逻辑队列,不同Topic可以建立不同的Topic
- Cluster:物理集群,每个集群中可以建立多个不同的Topic
- Producer:生产者,负责将业务消息发送到Topic中
- Consumer:消费者,负责消费Topic中的消息
- ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉
- Offset :消息在partition内的相对位置信息,可以理解为唯一ID,在partition内部严格递增。
- Replica:每个分片有多个Replica,Leader Replica将会从ISR中选出。
- ZooKeeper:负责存储集群元信息,包括分区分配信息等
(二)各阶层任务
- Producer:批量发送、数据压缩
- Broker:顺序写,消息索引,零拷贝
- Consumer: Rebalance
(三)Kafka问题总结
- 运维成本高
- 对于负载不均衡的场景,解决方客复杂5208
- 没有自己的缓存,完全依赖Page Cache
- Controller 和Coordinator和Broker在同一进程中,大量IO会造成其性能下降
(四)消息队列BMQ
简介:兼容Kafka协议,存算分离,云原生消息队列
- BMQ的架构模型(解决Kafka存在的问题)
- BMQ读写流程(Failover机制,写入状态机)
- BMQ高级特性(泳道、Databus、Mirror、Index、Parquet)
四、小结
本次课程初步认识了消息队列,知道了消息队列的前世今生,几个重要的消息队列,以及消息队列的几个高级特性。