消息队列 | 青训营笔记

66 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

一、课程内容

  • 概念
  • Kafka
  • BMQ
  • RocketMQ

二、详细知识点

1、概念

消息队列是保存消息的一个容器,本质是个队列,支持高吞吐、高并发、高可用。

2、Kafka

分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色

概念

Topic:逻辑队列,不同Topic可以建立不同的Topic

Cluster:物理集群,每个集群中可以建立多个不同的Topic

Producer:生产者,负责将业务消息发送到Topic中

Consumer:消费者,负责消费Topic中的消息

ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉

Offset:消息在partition内的相对位置信息,可以理解为唯一ID,在partition内严格递增。

架构

image.png

一条消息流程

Producer 生产-> Broker 消费-> Comsumer

提高吞吐和稳定性

Producer:批量发送、数据压缩

Broker:顺序写、消息索引、零拷贝

Comsumer:Rebalance

3、BMQ

存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

与Kafka对比

名称KafkaBMQ
重启需要数据复制,分钟级重启重启后可直接对外服务,秒级完成
替换需要数据复制,分钟级替换,甚至天级别替换后可直接对外服务,秒级完成
扩容需要数据复制,分钟级扩容、甚至天级别扩容后可直接对外服务,秒级完成
缩容需要数据复制,分钟级扩容,甚至天级别缩容后可直接对外服务,秒级完成

4、RocketMQ

低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广

使用场景

电商业务线、业务峰值时刻

与Kafka对比

名称KafkaRocketMQ
标签Tag
分区PartitionConsumerQueue
生产者集群Producer Group
集群控制器ControllerNameserver