简单介绍

kafka 官网 https://kafka.apache.org/

开源的分布式的基于订阅 消费模式的消息队列中间件,性能非常优秀常被用在大数据和日志处理领域。

消息队列的主要的应用和场景主要是 削峰 , 解耦 , 异步。

kafka 中的一些概念

  • Topic 可以理解为一个队列,生产者向一个指定的topic中发送消息,消费者消费指定topic中的消息

  • Producer 消息生产者客户端

  • Consumer 消费消息的客户端

  • Broker kafka 处理消息的服务,生产者和消费者都需要连接broker,由broker 协调处理消费的接受和发送等逻辑。一个kafka集群中由多个broker组成,一个broker中可以处理多个topic

  • Partition 分区,如果一个topic中的消息非常的多,为了扩展topic的处理能力,将一个topic根据一定的规则(比如取模)将数据分散到不同的broker中,每个broker处理部分数据。生产者发送消息的时候
    根据一定的规则将topic中的数据分散到不同的分区。

  • Consumer Group(CG):消费者组 是一个逻辑的概念,既把几个消费者归属于同一个消费者组,消费者组比如有A B C 3个消费者,那么这个消费者组整体来消费一个topic的数据,组内的每个消费者分别负责消费一部分数据,可以看多消费者组是一个施工队,只要整体把活干完就行了。记录消费的位置,也就是消费到哪个数据的时候也是记录着这个组消费到哪个位置了。消费者组于其他消费者组的消费是互相不冲突的,谁干谁的活,谁干多少分别记录。

  • Replica:副本。这个副本指的是broker上的topic的副本,topic在broker中可以看做一个队列的实例。在broker集群环境中为了保证服务的可靠性,topic的每个分片可以设置一个副本来保证数据的可靠。(分片和分片副本不在同一个机器)每个topic都有一个leader 和多个follower

  • Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader

kafka 中的副本

默认副本1 ,推荐副本2 ,为了数据的可靠性。副本一般分布在不同的节点上。

kafka 中的所有的副本统称为 AR(assigned Repllicas).

ISR: 和 Leader 保持同步的 Follower 集合。超时的副本被踢出ISR中,称为OSR。
OSR,表示 Follower 与 Leader 副本同步时,延迟过多的副本。

AR = ISR + OSR

kafaka 架构图

生成者 发送消息 时向broker中的副本写入数据。
同一个组内的消费者消费不同分片的数据。

在旧版本的kafka中必须使用zookeeper来作为分布式协调组件,而在新版本的kafka (> 2.8)版本中,已经可以选择性的不使用zookeeper。内置了KRaft来管理集群,可以不使用外部的zookeeper.

两种消息模式

点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)

发布/订阅模式(一对多,消费者消费数据之后不会清除消息)