博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kafka主题体系架构-复制、故障转移和并行处理
阅读量:2116 次
发布时间:2019-04-29

本文共 1534 字,大约阅读时间需要 5 分钟。

本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理。

640?wx_fmt=gif

Kafka主题,日志和分区

Kafka将主题存储在日志中。主题日志分为多个分区。Kafka将日志的分区分布在多个服务器或磁盘上。将主题视为类别,流名称或提要。

主题本身就是发布和订阅样式的消息传递。一个主题可以有零个或多个名为使用者组的订阅户。为了速度、可伸缩性和大小,主题被划分为多个分区。

Kafka主题分区

Kafka将主题日志分解为多个分区。记录存储在一个分区上,如果存在该键,通常按记录键存储;如果缺少该键,则按循环存储(默认行为)。默认情况下,记录键决定生产者发送记录的分区。

Kafka使用分区在多个服务器上扩展主题以进行生产者写入。此外,Kafka还使用分区来促进并行消费者。使用者使用的记录与分区数并行。

每个分区保证的顺序。如果按键进行分区,则密钥的所有记录都将位于同一分区上,如果您必须重播日志,则该分区非常有用。Kafka可以将分区复制到多个代理以进行故障转移。

Kafka主题日志分区的排序和基数

Kafka一个分区中维护记录顺序。分区是一个有序的、不变的记录序列。Kafka使用分区作为结构化提交日志连续附加到分区。分区中的记录被分配了称为偏移量的顺序ID号。偏移量标识分区中的每个记录位置。主题分区允许Kafka日志扩展超出适合单个服务器的大小。主题分区必须适合承载它的服务器,但主题可以跨越承载在许多服务器上的多个分区。此外,主题分区是并行性的一个单元——一个分区一次只能由一个使用者组中的一个使用者处理。消费者可以在自己的进程或线程中运行。如果消费者停止,Kafka将分区分布在同一消费者组中的剩余消费者上。

Kafka体系架构:主题分区布局和偏移

640?wx_fmt=png

Kafka主题分区复制

Kafka可以跨多个可配置的Kafka服务器复制分区,这些服务器用于容错。每个分区都有一个领导服务器和零个或多个追随服务器。领导处理分区的所有读写请求。

追随者模仿领导者,如果领导者死了,他们就会接管。Kafka还使用分区在组中进行并行消费者处理。Kafka将主题日志分区分布在Kafka集群中的服务器上。每个服务器通过共享分区领导层来处理其数据和请求的共享。

复制:Kafka分区领导者、追随者和ISR

Kafka使用ZooKeeper选择一个经纪人分区的副本作为领导者。

具有分区领导的代理处理分区记录的所有读写操作。Kafka将写操作复制到主分区的后续分区(节点/分区对)。同步的追随者称为ISR(同步副本)。如果分区领导失败,Kafka选择一个新的ISR作为新的领导。

复制到分区0

640?wx_fmt=png

当分区的所有ISR都写入其日志时,该记录被视为“已提交”。只有提交的记录才可从消费者中读取。另一个分区可以由另一个Kafka代理的领导者拥有。

复制到分区1

640?wx_fmt=png

640?wx_fmt=png

Kafka主题体系结构评论

640?wx_fmt=png

什么是ISR?

ISR是同步副本。如果领导者失败,ISR将被选为新的领导者。

Kafka如何扩大消费者规模?

Kafka通过分区来扩展消费者,这样每个消费者都可以获得分区的份额。消费者可以有多个分区,但一个分区一次只能由一个使用者组中的一个使用者使用。如果只有一个分区,那么只能有一个使用者。

什么是领导者?追随者?

领导者执行对特定主题分区的所有读写操作。追随者复制领导者。

Kafka如何为消费者执行故障转移?

如果消费者组中的消费者死亡,则分配给该消费者的分将在该组中的剩余消费者之间分配。

Kafka如何为代理执行故障转移?

如果一个代理死了,那么Kafka将其主题分区的领导权分配给集群中的其余代理。

640?wx_fmt=png

640?wx_fmt=gif

喜欢记得来一个

640?wx_fmt=gif

640?wx_fmt=jpeg

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

转载地址:http://hymef.baihongyu.com/

你可能感兴趣的文章
Ordering犀利的比较器
查看>>
spring+Mybatis+Ehcache整合
查看>>
google guava使用例子/示范(一)
查看>>
joda-time 时间API
查看>>
Joda Time API -2
查看>>
Spring使用Cache、整合Ehcache
查看>>
Chrome调试工具奇淫技
查看>>
30分钟快速掌握Bootstrap
查看>>
如何针对业务做DB优化
查看>>
程序猿都该知道的MySQL秘籍
查看>>
Eclipse全面提速小技巧
查看>>
前端程序员必知的30个Chrome扩展
查看>>
memcached分布式实现原理
查看>>
怎么成为架构师
查看>>
40个重要的HTML 5面试问题及答案
查看>>
在Java中如何高效判断数组中是否包含某个元素
查看>>
设计模式总结
查看>>
什么时候可以使用Ehcache缓存
查看>>
Java核心知识点-JVM结构和工作方式
查看>>
Java编程中“为了性能”一些尽量做到的地方
查看>>