如果我们可以从头开始重建 Kafka 会怎样?

主要观点:作者花时间研究了 Diskless Kafka 和 AutoMQ 的 Kafka 分叉,思考若从头开发耐用的云原生事件日志(Kafka.next)应具备的特性,包括去除分区、以键为中心的访问、主题层次结构、并发控制手段、代理端模式支持、可扩展性和可插拔性、同步提交回调、快照以及多租户等,并提及一些特性已在其他系统中支持,最后提出重要问题即这样的系统应如何架构。

关键信息:

  • 研究了 Diskless Kafka 和 AutoMQ 的 Kafka 分叉,旨在改善云环境中使用 Kafka 的体验。
  • 提出对 Kafka.next 的特性需求,如去除分区可避免因分区带来的一些问题,以键为中心的访问能更高效地获取数据等。
  • 提到一些系统已支持部分特性,如 S2 的高基数流等,但未提及有系统能结合所有特性。
  • 最后提及系统架构可能基于日志结构合并(LSM)树,但未详细说明。

重要细节:

  • 分区在节点本地磁盘存储数据时对扩展很关键,但在云的无限大对象存储中并非必需,且分区提供的排序保证在客户端视角并非非常有用。
  • 以键为中心的访问能让用户更精准地获取所需数据,增加和减少消费者数量更灵活,解决头阻塞问题,是事件溯源等架构的基础。
  • 主题层次结构可将消息有效负载的部分转化为结构化的主题标识符,让客户端更高效订阅。
  • 并发控制可通过乐观锁检测和隔离并发冲突写入,保证消息写入时看到最新状态。
  • 代理端模式支持可避免消息模式传播问题,方便用户操作,还能开启不同的数据存储方式。
  • 可扩展性和可插拔性可让用户和集成商自定义系统行为,通过扩展实现多种功能。
  • 同步提交回调可保证生产请求确认时下游数据视图已更新,实现类似数据库的语义。
  • 快照可支持“逻辑压缩”,将键的事件压缩为快照,作为后续更新事件的基础。
  • 多租户应从底层构建,实现新客户环境的快速创建和租户工作负载的隔离。
阅读 31
0 条评论