kafka(一)kafka基本介绍
简单介绍
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.
两种消息模式
点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)

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



