主要观点:作者花时间研究了 Diskless Kafka 和 AutoMQ 的 Kafka 分叉,思考若从头开发耐用的云原生事件日志(Kafka.next)应具备的特性,包括去除分区、以键为中心的访问、主题层次结构、并发控制手段、代理端模式支持、可扩展性和可插拔性、同步提交回调、快照以及多租户等,并提及一些特性已在其他系统中支持,最后提出重要问题即这样的系统应如何架构。
关键信息:
- 研究了 Diskless Kafka 和 AutoMQ 的 Kafka 分叉,旨在改善云环境中使用 Kafka 的体验。
- 提出对 Kafka.next 的特性需求,如去除分区可避免因分区带来的一些问题,以键为中心的访问能更高效地获取数据等。
- 提到一些系统已支持部分特性,如 S2 的高基数流等,但未提及有系统能结合所有特性。
- 最后提及系统架构可能基于日志结构合并(LSM)树,但未详细说明。
重要细节:
- 分区在节点本地磁盘存储数据时对扩展很关键,但在云的无限大对象存储中并非必需,且分区提供的排序保证在客户端视角并非非常有用。
- 以键为中心的访问能让用户更精准地获取所需数据,增加和减少消费者数量更灵活,解决头阻塞问题,是事件溯源等架构的基础。
- 主题层次结构可将消息有效负载的部分转化为结构化的主题标识符,让客户端更高效订阅。
- 并发控制可通过乐观锁检测和隔离并发冲突写入,保证消息写入时看到最新状态。
- 代理端模式支持可避免消息模式传播问题,方便用户操作,还能开启不同的数据存储方式。
- 可扩展性和可插拔性可让用户和集成商自定义系统行为,通过扩展实现多种功能。
- 同步提交回调可保证生产请求确认时下游数据视图已更新,实现类似数据库的语义。
- 快照可支持“逻辑压缩”,将键的事件压缩为快照,作为后续更新事件的基础。
- 多租户应从底层构建,实现新客户环境的快速创建和租户工作负载的隔离。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。