- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Kafka 架构、核心机制和场景解读
摘要
Kafka 是一款非常优秀的开源消息引擎,以消息吞吐量高、可动态扩容、可持久化存储、高可用的特性,以及完善的文档和社区支持成为目前最流行的消息队列中间件。
Kafka 的开发社区一直非常活跃,在消息引擎的领域取的不俗成绩之后,不断拓展自己的领域,在基于事件的流处理平台方向一直发力,不断自我更新迭代力图成为这个领域内的事实标准。
Kafka 的消息引擎功能十分强大,但是一直没有停下自我突破的脚步,随着 3.0 版本的中 KRaft 协议的推出,Zookeeper 的退出进程正式启动,Kafka 开始了又一次的自我蜕变。
ZK 的移除是一个非常大胆的举动,因为 ZK 在 Kafka 的集群管理中居于核心的地位,不会轻易取代,那为什么 Kafka 选择了自行实现选举机制的路线?
此外,虽然 Kafka 具备诸多优秀的特性,这些如今被视为最佳实践的特性也是不断演化而来的,从其不断升级改进的过程中也能间接反映出生产环境所面临的现实问题,那么 Kafka 在实际的生产环境中的表现究竟如何?
作为业务方,使用 Kafka 作为消息中间件进行业务开发,保证服务平稳运行需要避开哪些雷区?
这篇文档将从一个比较高的视角,从 Kafka 的设计理念、架构到实现层面进行深入解读,随着对 Kafka 相关机制的深入了解,这些问题的答案将浮出水面。
须知事项
这篇文档基于 Kafka 最近刚刚发布的 3.2 版本源码为基础进行介绍,主要讨论 Java 和 Scala 语言实现的原版客户端和服务端,其他语言版本的客户端与这篇文档介绍的机制在实现上会有较大出入,需要留意
此外,字节的业务很多使用的都是自研的 BMQ [3],在客户端协议上是完全兼容的,但是服务端进行了完全的重构,本文介绍的相关服务端机制并不适用
Kafka 整个项目包括 Core、Connect、Streams,只有 Core 这一部分是我们通常说的核心消息引擎组件,另外两个都是基于这个核心实现的上层应用,这篇文章主要介绍的就是 Kafka Core 相关的内容,下面的 「Kafka 的应用架构部分」会对这一点做简要介绍
名词对照
下面的表格给出了 Kafka 中出现的一些高频和重要概念的对照解释
英文名
中文名
解释
备注
KIP
Kafka 改进提案
KIP(Kafka Improvement Proposal)是针对 Kafka 的一些重大功能变更的提案,通常包括改进动机、提议的改进内容、接口变更等内容
Partition
分区
一个独立不可再分割的消息队列,分区中会有多个副本保存消息,他们的状态应该是一致的
Kafka 分区副本的同步机制不是纯异步的,有高水位机制去跟踪从副本的同步进度,并且有对应的领导者副本选举机制保证分区整体对外可见的消息都是已提交的
Replica
副本
分区中消息的物理存储单元,通常对应磁盘上的一个日志目录,目录中会对消息文件进一步进行分段保存
Leader Replica
主副本、领导者副本
指一个 Partition 的多个副本中,对外提供读写服务的那个副本
Kafka 集群范围有对等地位的组件是 Controller
Consumer
消费者
Kafka 客户端消费侧的一个角色,负责将 Broker 中的消息拉取到客户端本地进行处理,还可以使用 Kafka 提供的消费者组管理机制进行消费进度的跟踪
Consumer Group Leader
消费者组领导者
通常指 Consumer Group 中负责生成分区分配方案的 Consumer
这个概念非常容易和上面的 Leader Replica 混淆
Log start offset
消息起始偏移
Log start offset,Kafka 分区消息可见性的起点
此位置对应一条消息,对外可见可以消费
LSO
上次稳定偏移
Last stable offset,和 Kafka 事务相关的一个偏移
当消费端的参数isolation.level 设置为“read_committed的时候,那么消费者就会忽略事务未提交的消息,既只能消费到LSO(LastStableOffset)的位置
LEO
消息终止偏移
Log end offset,Kafka 分区消息的终点
LEO 是下一条消息将要写入的位置,对外不可见不可供消费
HW
高水位
High water mark,用于控制消息可见性,HW 以下的消息对外可见
HW 的位置可能对应一条消息,但是对外不可见不可以消费,HW 的最大值是 LEO
LW
低水位
Low water mark,用于控制消息可见性,LW 及以上的消息对外可见
一般情况下和 Log start offset 可以等价替换,代码里也是这个逻辑
ISR
您可能关注的文档
最近下载
- MSL防潮等级-J-STD-020(湿度敏感等级分类解说).docx VIP
- 湖北省襄阳市保康县第一中学2021年高一地理期末试题含解析.docx VIP
- 小学数学新苏教版三年级上册全册教案(2025秋新版).doc
- 202X年幼儿园安全教育主题班会 春风为伴 安全与我童行 课件PPT.pptx VIP
- 2025年高考化学二轮复习课件 第01讲 钠及其重要化合物.pdf VIP
- 危重症患者护理案例分析.docx VIP
- 2025年高考化学二轮复习课件 第03讲 镁、铝及其重要化合物.pdf VIP
- 2025年高考化学二轮复习课件 第03讲 氮及其重要化合物.pdf VIP
- 2025至2030爆炸物探测扫描仪行业发展趋势分析与未来投资战略咨询研究报告.docx
- 浙江省J12共同体联盟2024-2025学年九年级上学期期中语文试题(含答案).pdf VIP
文档评论(0)