KafKa主题、分区、副本、消息代理

简介: Kafka将主题拆分为多个分区,不同的分区存在不同的服务器上,这样就使kafka具有拓展性,可以通过调整分区的数量和节点的数量,来线性对Kafka进行拓展,分区是一个线性增长的不可变日志,当消息存储到分区中之后,消息就不可变更,kafka为每条消息设置一个偏移量也就是offset,offset可以记录每条消息的位置,kafka可以通过偏移量对消息进行提取,但是没法对消息的内容进行检索和查询,偏移量在每个分区中是唯一的不可重复,并且它是递增的,不同分区间偏移量可以重复。

主题
Topic主题,类似数据库中的表,将相同类型的消息存储到同一个主题中,数据库中的表是结构化的,Topic的属于半结构化的,主题可以包含多个分区,KafKa是一个分布式消息系统,分区是kafka的分布式的基础,分区使kafka具备了拓展性,如果数据存储在单服务器上,可能会遇到存储的限制,从而导致性能的瓶颈。
image.png

分区
Kafka将主题拆分为多个分区,不同的分区存在不同的服务器上,这样就使kafka具有拓展性,可以通过调整分区的数量和节点的数量,来线性对Kafka进行拓展,分区是一个线性增长的不可变日志,当消息存储到分区中之后,消息就不可变更,kafka为每条消息设置一个偏移量也就是offset,offset可以记录每条消息的位置,kafka可以通过偏移量对消息进行提取,但是没法对消息的内容进行检索和查询,偏移量在每个分区中是唯一的不可重复,并且它是递增的,不同分区间偏移量可以重复。
image.png

kafka中的消息Record是以键值对的形式进行存储的,如果不指定key,key的值为空,当发送消息key为空,kafka会以轮询的方式将不同的消息,存放到不同的分区中,如果指定了消息key,相同的key会被写入到同一个分区,这样就可以保证具有相同key的消息按照一定的顺序进行写入。分区可以保证kafka的集群进行线性的拓展。
image.png
image.png
image.png

副本
如果分区只存在一份的话,一旦分区损害,这份数据就会丢失,kafka通过副本机制,保证数据的可靠性,可以设置副本因子的数量,replication-factor=3,含义就是包含主分区在内三个副本,kafka会选择一个副本做为主分区,主分区称之为leader,所有写入都是写入到leader中的,数据的读取也是从leader中读取的,其他两个副本称之follower,follower从leader中复制数据,保持数据的一致性,kafka会监控副本之间数据同步的状态,在元数据中维护一个ISR的集合,正在同步的副本集,这个例子中这三个副本保持正常的数据同步,如果某个副本不能正常的同步数据,或者落后的比较多,kafka会从同步的副本集将这个副本剔除,直到这个节点追赶上来之后,再重新加入,ISR=[101,102,103]
image.png
image.png

消息代理
Kafka集群是由多个broker组成的,broker负责消息的读写请求,并将数据写入到磁盘中,通常在每个服务器上都启动一个broker实例,通常情况一台服务器就是一个broker,
image.png

例子,kafka集群由8个broker组成,集群中的组成有8个分区,分别是p0到p7,副本因子是3,就是说每个数据存在3份,每个分区都有一个leader,两个follower,以第一个broker为例这个broker有三个分区,P0、P1、P2,P1这个分区是一个leader,P1的所有读写请求都是由这个Broker进行处理的,P0和P2分区是follower,这个broker只负责从p0 和p2的leader中同步数据,而不负责这两个分区的读写请求。
image.png

目录
相关文章
|
1月前
|
消息中间件 监控 安全
探究Kafka主题删除失败的根本原因
探究Kafka主题删除失败的根本原因
43 0
|
1天前
|
消息中间件 Kafka 程序员
Kafka面试必备:深度解析Replica副本的作用与机制
**Kafka的Replica副本是保证数据可靠性的关键机制。每个Partition有Leader和Follower副本,Leader处理读写请求及管理同步,Follower被动同步并准备成为新Leader。从Kafka 2.4开始,Follower在完全同步时也可提供读服务,提升性能。数据一致性通过高水位机制和Leader Epoch机制保证,后者更精确地判断和恢复数据一致性,增强系统容错能力。**
7 1
|
1月前
|
消息中间件 存储 网络协议
Kafka 线程模型痛点攻克: 提升分区写入 2 倍性能
Apache Kafka的单分区写入性能在某些严格保序场景中至关重要,但其现有线程模型限制了性能发挥。本文分析了Kafka的串行处理模型,包括SocketServer、KafkaChannel、RequestChannel等组件,指出其通过KafkaChannel状态机确保请求顺序处理,导致处理效率低下。AutoMQ提出流水线处理模型,简化KafkaChannel状态机,实现网络解析、校验定序和持久化的阶段间并行化,提高处理效率。测试结果显示,AutoMQ的极限吞吐是Kafka的2倍,P99延迟降低至11ms。
46 3
Kafka 线程模型痛点攻克: 提升分区写入 2 倍性能
|
26天前
|
消息中间件 监控 安全
探究Kafka主题删除失败的根本原因
探究Kafka主题删除失败的根本原因
10 0
|
1月前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用合集之支持sink到多分区的kafka ,还能保持有序吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
消息中间件 负载均衡 监控
【Kafka】Kafka 创建Topic后如何将分区放置到不同的 Broker 中?
【4月更文挑战第13天】【Kafka】Kafka 创建Topic后如何将分区放置到不同的 Broker 中?
|
1月前
|
消息中间件 监控 Kafka
【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
【4月更文挑战第12天】【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
|
1月前
|
消息中间件 运维 监控
【Kafka】分区副本什么情况下会从 ISR 中剔出
【4月更文挑战第12天】【Kafka】分区副本什么情况下会从 ISR 中剔出
|
14天前
|
消息中间件 存储 Kafka
实时计算 Flink版产品使用问题之通过flink同步kafka数据进到doris,decimal数值类型的在kafka是正常显示数值,但是同步到doris表之后数据就变成了整数,该如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
14天前
|
消息中间件 存储 Kafka
实时计算 Flink版产品使用问题之 从Kafka读取数据,并与两个仅在任务启动时读取一次的维度表进行内连接(inner join)时,如果没有匹配到的数据会被直接丢弃还是会被存储在内存中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。