Gunnar Morling

Gunnar Morling

关于软件工程的随机思考

Gunnar Morling

Gunnar Morling

关于软件工程的随机思考

如果我们从头重建 Kafka 会怎样?

发布于 2025 年 4 月 24 日

最近几天,我花了一些时间研究最近发布的 KIP-1150 ("Diskless Kafka"),以及 AutoMQ’s Kafka fork,它将 Apache Kafka 与对象存储(如 S3)紧密集成。 遵循 WarpStream 设定的示例,这些项目旨在显着改善在云环境中使用 Kafka 的体验,提供更好的弹性,大幅降低成本,并为原生 lakehouse 集成铺平道路。

这让我开始思考,如果我们要从头开始开发一个持久的云原生事件日志——可以称之为 Kafka.next——它应该具有哪些特征和特性? 分离存储和计算以及支持对象存储将是基本要求,但还应该有什么? 多年来,我一直使用 Kafka 来构建事件驱动的应用程序以及运行实时 ETL 和变更数据捕获管道,以下是我个人的愿望清单:

其中一些功能已经在其他系统中得到支持——例如,S2 中的 high cardinality streams、Waltz 中的 optimistic locking 或 Apache Pulsar 中的 multi-tenancy。 但其他的则不然,而且我不知道有哪个系统,更不用说开源的系统,会结合所有这些特性。

现在,这描述了我个人的(也就是说,绝不应将这篇文章理解为以任何官方身份代表我的雇主 Confluent 发言)对 Kafka.next 可能是什么以及它可以提供的语义的愿望清单,这是由我看到人们希望使用 Kafka 的用例和应用程序驱动的。 但我确信每个使用 Kafka 或类似平台工作过一段时间的人都会对此有自己的想法,我很乐意在评论中了解您的想法!

最后,一个重要的问题当然是这样的系统实际上会如何架构? 虽然我不得不把这个答案留到以后再回答,但可以肯定地说,在这种系统之上构建一个 log-structured merge (LSM) tree 将是一个可能的选择。

© 2019 - 2025 Gunnar Morling | Licensed Under Creative Commons BY-SA 4.0