25|从集群角度拆解Kafka的架构设计与实现
许文强
你好,我是文强。
上节课讲完了 RocketMQ,这节课我们再来看一下流消息领域的消息队列 Kafka。
因为我们之前在第 16 讲已经详细描述了,基于 ZooKeeper 和 KRaft 来构建集群的两种方式,在这里就不再重复。这节课我们会详细分析 Kafka 副本之间的数据一致性、数据同步机制、Leader 切换、数据截断。
数据可靠性
我们知道,Kafka 集群维度的数据可靠性也是通过副本来实现的,而副本间数据一致性是通过 Kafka ISR 协议来保证的。ISR 协议是现有一致性协议的变种,它是参考业界主流的一致性协议,设计出来的符合流消息场景的一致性协议。
ISR 协议的核心思想是:通过副本拉取 Leader 数据、动态维护可用副本集合、控制 Leader 切换和数据截断 3 个方面,来提高性能和可用性。
参考图示,这是一个包含 1 个 Leader、2 个 Follower 的分区。如果是基于 Raft 协议或者多数原则实现的一致性算法,那么当 Leader 接收到数据后,就会直接分发给部分或全部副本。我们在前面两节课说到的 RabbitMQ 的镜像队列、仲裁队列和 RocketMQ 的 Master/Slave、Dledger 都是这么实现的。
这种机制在流消息队列的大吞吐场景中主要有两个缺点:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Kafka的架构设计与实现是一篇深入探讨Kafka消息队列的文章。文章首先介绍了Kafka集群维度的数据可靠性,重点讨论了副本之间的数据一致性、数据同步机制、Leader切换和数据截断。通过ISR协议,Kafka实现了副本拉取Leader数据、动态维护可用副本集合和控制Leader切换和数据截断。文章还提到了Kafka的实现方式,包括数据写入成功的等待机制、副本异常判断策略以及处理Leader切换和数据截断的操作。整体而言,文章深入剖析了Kafka的架构设计和实现细节,对于想要深入了解Kafka消息队列的读者具有很高的参考价值。 在安全控制方面,Kafka支持多种认证方式和细粒度的权限管控,为数据传输提供了TLS/SSL加密支持,同时对来源IP进行限制,展现了其在安全性方面的细致性。 在可观测性方面,Kafka基于Yammer Metrics库实现了指标的定义,并通过JMX方式暴露指标。文章还提到了Kafka对消息轨迹的需求不高,内核不支持轨迹相关功能,但可以通过内核改造和SDK改造来支持消息轨迹。 总的来说,本文详细介绍了Kafka在集群构建、数据可靠性、安全控制和可观测性方面的特点和实现细节,为读者提供了全面了解Kafka消息队列的重要参考资料。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 林龍当配置最终一致(ACK=1),Leader 接收到数据成功写入应该就会告诉客户端写入成功把? 这里是不是想表达的是LEO的概念. 强一致性是需要所有follewer都收到了这个LEO写入时高水位+1,才返回 最终一致性是只要把这个LEO信息同步到follewer,不等待同步成功就返回。2023-08-17归属地:广东
收起评论