这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记
业界都在用哪些消息队列?
业界常用的消息队列中间件主要有Kafka、RocketMQ、RabbitMQ、ActiveMQ、Pulsar、BMQ等。
RabbitMQ和ActiveMQ这两者因为自身性能以及社区活跃度的原因,已经逐渐淡出了互联网公司的视线,取而代之的是Kafka和RocketMQ,二者在各自擅长的领域发光发热,即便一些公司没有直接使用上述二者,很多也是在这两种消息队列的基础上,结合各自的优点自研的消息队列。
下图列出了其中四种消息队列的特点:
认识Kafka
Kafka是业界目前用得相当多的一款消息队列中间件,因高吞吐、高可靠、高可用受到广大企业的青睐,下面将探讨一下Kafka的相关知识。
如何使用kafka
Kafka的大致使用流程如下:
Kafka的基本概念
Kafka的基本结构如下所示:
- Cluster:表示一个物理集群,集群中包含多个不同的Topic
- Topic:表示Kafka中的逻辑队列,不同的业务场景对应不同的Topic
- partition:分区,同一个Topic会有若干个分区,不同分区的消息可以并发处理,从而提高Topic的吞吐能力
- Producer:生产者,负责将业务消息发送到Topic中
- Consumer:消费者,负责消费Topic中的消息
- ConsumerGroup:消费者组,不同组的Consumer的消费进度互不干涉
- Offset:消息在partition内的相对位置,可以理解为唯一ID,在partition内部严格递增
- Replica:每个partition会有多个Replica,Replica也分为Leader和Follower
- ISR(In-Sync-Replicas):用于同步的Replica,与Leader差距过大的Replica会被移除ISR
Kafka的数据备份
如下图所示,Kafka集群由若干个Broker组成,其中标注为Broker:Controller的Broker扮演集群大脑的角色,负责分区备份的具体策略。图中可见Topic1有两个分区,Partition1和Partition2,而Topic2只有一个Partition1。另外每个Partition都有总共3份分布在不同的Broker上。
- Broker:Kafka集群中的一个节点
后续内容见下篇笔记……