Kafka的分区(partition和副本)

在 Kafka 中,分区(Partition)是一个逻辑上的概念,它将一个主题(Topic)中的消息进行分组。每个分区都有一个唯一的编号,称为分区 ID(Partition ID),它从 0 开始递增。

通过分区,Kafka 可以将大量的消息分布到多个服务器上,从而提高系统的处理能力和吞吐量。

同时,分区也提供了一种灵活的消息分发方式,可以根据不同的需求将消息发送到不同的分区中。 在 Kafka 中,每个分区都有一个对应的文件,称为分区日志(Partition Log)。

分区日志是一个顺序写的日志文件,它存储了该分区中的所有消息。

每个消息都被分配到一个特定的分区中,并被存储在该分区的日志文件中。

Kafka 采用了分布式提交协议(Distributed Commit Protocol)来保证消息的可靠性和一致性。当生产者将消息发送到 Kafka 时,它会将消息存储到内存中,并将其提交到 Kafka 集群。

在提交过程中,Kafka 会将消息写入到对应的分区日志中,并在所有的副本中进行同步。 消费者可以订阅一个或多个主题,并从对应的分区中读取消息。Kafka 会根据消费者的订阅信息,将消息从对应的分区中读取出来,并发送给消费者。通过分区,Kafka 可以实现消息的负载均衡和高可用性。

一个分区同时只能被一个消费组的一个消费者消费。但有可能因为一些原因,这个分区会被分配到其他消费者。比如消费者减少或者增多,分区数量减少或者增多。如果有多个消费组都订阅一个主题,那么同一个分区就会同时被多个消费组的消费者消费。

一个分区内的消息是顺序的。

一个主题(Topic)的不同分区可以分布在不同broker上,这样可以解决单一broker的IO瓶颈问题。

分区有副本,分布在不同broker上。遵从一主多从的关系。leader负责读写。follower负责与leader同步。肯定有时延。

因为同步有时延。副本分为ISR和OSR。ISR就是能跟的上leader进度的(其中包含leader)。OSR就是因为一些原因跟不上leader副本的(不包含leader副本)或者失效的分区副本。

ISR内的follower可以参与leader的重新选主。OSR因为落后过多,不能参与leader重新选主。

leader副本中有两个标识位,一个是HW(High WaterMark),一个是LEO(Log End Offset)。LEO是leader副本中已经写入的消息所在的偏移量。HW是同步到ISR集合中所有副本后的消息的偏移量。消费者只可以读到小于HW偏移量的消息。leader副本的消息全部同步follower后,LEO=HW。表示leader副本内的消息全部可读。

ISR和OSR都是通过zookeeper记录的

副本的数据同步是follower发起的。一个消息只有在同步到所有副本后,才会被认为是已提交

相关推荐
运维行者_7 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
jeffwang8 小时前
我把同一个压测做错了三次,第四次才发现真正的瓶颈
分布式·性能优化·rust
Blossom i9 小时前
分布式编程实验二:Flink安装与编程实践(头歌云客)
大数据·分布式·flink
ai_coder_ai9 小时前
事件驱动架构(EDA)在分布式业务系统中的应用
分布式·架构
蓝胖的四次元口袋11 小时前
分布式知识梳理(4)
分布式
书香门第11 小时前
系统设计练习 - 分布式黑名单服务(design a distributed denylist service)
分布式·系统架构·系统设计
江畔柳前堤18 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
霸道流氓气质1 天前
RabbitMQ 延迟队列与死信队列:原理、实现与实战
分布式·rabbitmq·ruby
爱吃面的猫1 天前
大数据Kafka3.x之——Kafka3.3.0安装与使用(详细)
大数据·分布式·zookeeper
小张同学a.1 天前
zabbix企业级监控平台4——分布式监控与grafana数据可视化
linux·运维·数据库·分布式·信息可视化·zabbix·grafana