前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka 3.3 使用 KRaft 共识协议替代 ZooKeeper

Kafka 3.3 使用 KRaft 共识协议替代 ZooKeeper

作者头像
Spark学习技巧
发布2024-04-12 14:58:46
1270
发布2024-04-12 14:58:46
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

Apache 软件基金会发布了包含许多新特性和改进的 Kafka 3.3.1。这是第一个标志着可以在生产环境中使用KRaft(Kafka Raft)共识协议的版本。在几年的开发过程中,它先是在 Kafka 2.8 早期访问版本中发布,然后又在 Kafka 3.0 预览版本中发布。

KRaft 是一种共识协议,可以直接在 Kafka 中管理元数据。元数据的管理被整合到了Kafka当中,而不需要使用像ZooKeeper这样的第三方工具,这大大简化了 Kafka 的架构。这种新的 KRaft 模式提高了分区的可伸缩性和弹性,同时简化了 Kafka 的部署,现在可以不依赖 ZooKeeper 单独部署 Kafka 了。

KRaft 使用了Raft共识算法的一种基于事件的变体,因此得名。

随 KRaft 引入的新的仲裁控制器确保元数据在整个仲裁中可以被准确复制。活动控制器将元数据存储在事件源日志主题中,仲裁中的其他控制器对活动控制器创建的事件做出响应。事件日志定期进行快照,确保日志不会无限增长。与基于 ZooKeeper 的控制器不同,如果出现了问题,仲裁控制器不需要从 ZooKeeper 加载状态,因为集群的内部状态已经分布在元数据主题中。这大大减少了不可用时间窗口,缩短了系统最坏情况恢复时间。

下图显示了使用新的仲裁控制器比使用 ZooKeeper 更快地关闭具有 200 万个分区的 Kafka 集群。

新的 KRaft 共识算法和仲裁控制器使得 Kafka 集群可以扩展到数百万个分区,不仅提升了稳定性,让 Kafka 变得更容易监控、管理和支持,而且让整个系统可以有一个单一的安全模型,使控制器故障转移接近瞬时。

Kafka 社区计划在下一个版本(3.4)中弃用 ZooKeeper,然后在 4.0 版本中完全删除它。

KRaft 模式的优势

  • 去除外部依赖:传统的 Kafka 集群依赖于 ZooKeeper 来存储集群元数据和进行领导选举等,引入 KRaft 后,Kafka 将自行管理这些功能,从而去除了对 ZooKeeper 的依赖。
  • 简化架构:不再需要运维一个单独的 ZooKeeper 集群,简化了 Kafka 的部署和管理。
  • 提高性能:直接在 Kafka 中实现共识机制,可以优化元数据操作的性能,减少延迟。
  • 改善可扩展性:KRaft 模式下,Kafka 能够更好地支持大规模集群,提高元数据操作的效率。

迁移到 KRaft

迁移到 KRaft 需要谨慎规划,尤其是对于已经在生产中运行的 Kafka 集群。Apache Kafka 提供了一套迁移工具和步骤,但是整个过程需要谨慎处理,以避免数据丢失或服务中断。当前,对于新的 Kafka 集群,推荐直接采用 KRaft 模式部署。

注意事项

  • 版本兼容性:在考虑迁移至 KRaft 模式之前,需要确保你的 Kafka 客户端和周边工具与 Kafka 3.3 或更高版本兼容。
  • 迁移测试:在生产环境迁移之前,在测试环境中彻底测试迁移过程,确保数据一致性和应用兼容性。
  • 监控和回滚计划:在迁移过程中,应加强监控,及时发现可能的问题,并准备好回滚计划。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • KRaft 模式的优势
  • 迁移到 KRaft
  • 注意事项
相关产品与服务
迁移服务平台
迁移服务平台(Migration Service Platform,MSP)是帮助客户将系统从源平台迁移到腾讯云的工具。为迁移上云项目提供源端资源调研、上云规划、目标资源创建、批量迁移实施等能力,帮助降低客户迁移上云的复杂度,提升迁移效率。迁移服务平台 MSP 不收取任何额外费用,您只需为购买的资源及 DTS 数据迁移工具付费。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档