【发布时间】:2020-10-25 09:07:40
【问题描述】:
我们已经使用 Kafka 一年多了,并希望继续进行更深入的集成。但是有一个概念让我很纠结。我将尝试解释我们想要实现的目标以及我们想出的解决方案。从我的角度来看,这不是一个优雅的方式,这就是为什么我质疑我是否做对了。
问题
我们有一个包含复杂结构化事件(嵌套结构)的流。消费者正在处理这些事件,将它们分开,并将这些部分放在单独的主题中。每个主题背后都有许多不同的其他服务,它们以流处理方式丰富了流经主题的事件。最后,我们有许多主题,每个主题都有部分丰富的事件,我们希望将它们全部移动到一起,以便在整个过程结束时将它们作为一个完整的事件返回。但这说起来容易做起来难。
解决方案
最后,我们有一个服务消耗所有主题并构建缓冲区,直到所有部分事件流入并将它们组合在一起以将其发布到新主题中。面临的挑战是确保我们只在完整的最终主题中产生事件。 这可行,但有一些陷阱
- 缓冲区不能是内部的,它必须是外部的,多个使用者可以共享信息
- 理论上我们可以在计时问题中运行并创建死条目
- 我们可能会遇到一致性问题
- 等等
我的问题
即使它有效并且我认为这不是一种非常优雅的方式,我们是否走在正确的轨道上,还是我们在 Kafka 事件和流处理的概念和处理方面存在误解?有没有更好的方法来做到这一点?有人有这方面的经验,可以分享一些以稳定方式整合它的倾向或方法吗?
谢谢!任何 cmets 都非常感谢。
【问题讨论】:
-
您在加入时如何关联被撕裂的事件?
-
主事件的ID通过子事件传输,最后是基本连接。只是有了挑战,你不知道事件会延迟多长时间才能重新聚集在一起。
标签: apache-kafka apache-kafka-streams