本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理。
Kafka将主题存储在日志中。主题日志分为多个分区。Kafka将日志的分区分布在多个服务器或磁盘上。将主题视为类别,流名称或提要。面试
主题自己就是发布和订阅样式的消息传递。一个主题能够有零个或多个名为使用者组的订阅户。为了速度、可伸缩性和大小,主题被划分为多个分区。服务器
Kafka将主题日志分解为多个分区。记录存储在一个分区上,若是存在该键,一般按记录键存储;若是缺乏该键,则按循环存储(默认行为)。默认状况下,记录键决定生产者发送记录的分区。架构
Kafka使用分区在多个服务器上扩展主题以进行生产者写入。此外,Kafka还使用分区来促进并行消费者。使用者使用的记录与分区数并行。布局
每一个分区保证的顺序。若是按键进行分区,则密钥的全部记录都将位于同一分区上,若是您必须重播日志,则该分区很是有用。Kafka能够将分区复制到多个代理以进行故障转移。学习
Kafka一个分区中维护记录顺序。分区是一个有序的、不变的记录序列。Kafka使用分区做为结构化提交日志连续附加到分区。分区中的记录被分配了称为偏移量的顺序ID号。偏移量标识分区中的每一个记录位置。主题分区容许Kafka日志扩展超出适合单个服务器的大小。主题分区必须适合承载它的服务器,但主题能够跨越承载在许多服务器上的多个分区。此外,主题分区是并行性的一个单元——一个分区一次只能由一个使用者组中的一个使用者处理。消费者能够在本身的进程或线程中运行。若是消费者中止,Kafka将分区分布在同一消费者组中的剩余消费者上。线程
追随者模仿领导者,若是领导者死了,他们就会接管。Kafka还使用分区在组中进行并行消费者处理。Kafka将主题日志分区分布在Kafka集群中的服务器上。每一个服务器经过共享分区领导层来处理其数据和请求的共享。代理
复制:Kafka分区领导者、追随者和ISR日志
Kafka使用ZooKeeper选择一个经纪人分区的副本做为领导者。orm
具备分区领导的代理处理分区记录的全部读写操做。Kafka将写操做复制到主分区的后续分区(节点/分区对)。同步的追随者称为ISR(同步副本)。若是分区领导失败,Kafka选择一个新的ISR做为新的领导。cdn
当分区的全部ISR都写入其日志时,该记录被视为“已提交”。只有提交的记录才可从消费者中读取。另外一个分区能够由另外一个Kafka代理的领导者拥有。
什么是ISR?
ISR是同步副本。若是领导者失败,ISR将被选为新的领导者。
Kafka如何扩大消费者规模?
Kafka经过分区来扩展消费者,这样每一个消费者均可以得到分区的份额。消费者能够有多个分区,但一个分区一次只能由一个使用者组中的一个使用者使用。若是只有一个分区,那么只能有一个使用者。
什么是领导者?追随者?
领导者执行对特定主题分区的全部读写操做。追随者复制领导者。
Kafka如何为消费者执行故障转移?
若是消费者组中的消费者死亡,则分配给该消费者的分区将在该组中的剩余消费者之间分配。
Kafka如何为代理执行故障转移?
若是一个代理死了,那么Kafka将其主题分区的领导权分配给集群中的其他代理。
喜欢记得来一个赞!