做游戏自媒体视频网站,怎么说服企业做网站,开发一款小程序需要多少钱,甘肃省住房城乡建设部网站在 Kafka 中#xff0c;分区#xff08;Partition#xff09;是一个逻辑上的概念#xff0c;它将一个主题#xff08;Topic#xff09;中的消息进行分组。每个分区都有一个唯一的编号#xff0c;称为分区 ID#xff08;Partition ID#xff09;#xff0c;它从 0 开始…在 Kafka 中分区Partition是一个逻辑上的概念它将一个主题Topic中的消息进行分组。每个分区都有一个唯一的编号称为分区 IDPartition 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副本中有两个标识位一个是HWHigh WaterMark一个是LEOLog End Offset。LEO是leader副本中已经写入的消息所在的偏移量。HW是同步到ISR集合中所有副本后的消息的偏移量。消费者只可以读到小于HW偏移量的消息。leader副本的消息全部同步follower后LEOHW。表示leader副本内的消息全部可读。 ISR和OSR都是通过zookeeper记录的 副本的数据同步是follower发起的。一个消息只有在同步到所有副本后才会被认为是已提交