初识消息队列(二)—— 你好,Kafka | 青训营笔记

125 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

业界都在用哪些消息队列?

业界常用的消息队列中间件主要有Kafka、RocketMQ、RabbitMQ、ActiveMQ、Pulsar、BMQ等。

RabbitMQ和ActiveMQ这两者因为自身性能以及社区活跃度的原因,已经逐渐淡出了互联网公司的视线,取而代之的是Kafka和RocketMQ,二者在各自擅长的领域发光发热,即便一些公司没有直接使用上述二者,很多也是在这两种消息队列的基础上,结合各自的优点自研的消息队列。

下图列出了其中四种消息队列的特点:

image.png

认识Kafka

Kafka是业界目前用得相当多的一款消息队列中间件,因高吞吐、高可靠、高可用受到广大企业的青睐,下面将探讨一下Kafka的相关知识。

如何使用kafka

Kafka的大致使用流程如下:

image.png

Kafka的基本概念

Kafka的基本结构如下所示:

image.png

  • Cluster:表示一个物理集群,集群中包含多个不同的Topic
  • Topic:表示Kafka中的逻辑队列,不同的业务场景对应不同的Topic
  • partition:分区,同一个Topic会有若干个分区,不同分区的消息可以并发处理,从而提高Topic的吞吐能力
  • Producer:生产者,负责将业务消息发送到Topic中
  • Consumer:消费者,负责消费Topic中的消息
  • ConsumerGroup:消费者组,不同组的Consumer的消费进度互不干涉

image.png

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

image.png

  • 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上。 image.png

  • Broker:Kafka集群中的一个节点

后续内容见下篇笔记……