这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
一、目录
本节课主要分为五个部分:
1.消息队列的前世今生
2.消息队列-Kafka
3.消息队列-BMQ
4.消息队列-RocketMQ
5.最佳实践
二、消息队列的前世今生
消息队列解决的问题
解耦、削峰、异步、日志处理。
概念
消息队列指保存消息的一个容器,本质是队列,需要支持高吞吐、高并发、高可用。
三、消息队列-Kafka
使用场景
业务日志、用户行为数据、Metrics数据。
基本概念
Producer、Cluster、Consumer、Topic、Partition。
基本架构
Broker:Kafka 集群中的一台或多台服务器统称为 Broker。
Topic:每条发布到 Kafka 的消息都有一个类别,这个类别被称为 Topic 。
Partition:Topic 物理上的分组,一个 Topic 可以分为多个 Partition ,每个 Partition 是一个有序的队列。Partition 中的每条消息都会被分配一个有序的 id。
Producer:消息和数据的生产者,可以理解为往 Kafka 发消息的客户端。
Consumer:消息和数据的消费者,可以理解为从 Kafka 取消息的客户端。
Consumer Group:消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。 所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
使用过程
先创建集群,然后新增Topic设置好分片数量,最后编写生产者逻辑(引入对应语言的SDK,配置好参数,初始化生产者)和消费者逻辑(引入对应语言的SDK,配置好参数,初始化消费者)。
弊端
运维成本高、解决方案复杂、完全依赖Page Cache、大量IO会造成其性能下降。
四、消息队列-BMQ
在BMQ集群中,对于单个副本来讲,是随机分配到不同的节点上面的,因此不会存在Kafka的负载不均问题。
基本架构
Broker、Proxy、HDFS、MetaStorage。
BMQ和Kafka对比
五、消息队列-RocketMQ
使用场景
低延时,针对电商业务线和业务峰值时刻。
基本概念
类似于Kafka,多出标签、生产者集群的概念。
基本架构
Producer、Broker、Nameserver、Consumer。
RocketMQ和Kafka对比
六、最佳实践
略