当前我试图解决的问题是关于在同一使用者组中的多个应用程序之间共享状态,它们使用来自同一主题但不同分区的数据。
所以我有一个有3个分区的分区。我将运行每个分区的3kstream微服务(例如:ms1、ms2、ms3),每个微服务将处理并将结果写入输出主题。
问题:大多数情况下,微服务可以在其分区内独立运行,但在某些情况下,微服务需要先提取属性的先前状态,然后才能进行处理,并且该状态可能先前由另一个微服务处理和存储。
举个例子,如果我有一个家伙在3个路段上行走的数据。每个部分代表一个分区。所以如果这家伙从第一节走到第二节,我们就不再从第一节出版商那里发布他的状态了。他的状态现在由第二节出版商出版。如果我有一个微型服务来处理每个部分的数据。当我看到记录进入第2节时,我需要检查这家伙以前的状态,他是刚开始在我的节上行走,还是从另一节来到我的节,以便我继续处理他的数据。
建议的解决方案:我一直在读关于globalstatestore的文章,它似乎可以解决我的问题。所以我会在这里写下我的想法和一些问题,只是想知道你是否能看到我的方法中的任何问题:
让microservices从指定的分区读取输入主题。
有一个globalstatestore来存储状态,这样所有3个微服务都可以读取它。
由于不能直接写入globalstatestore,我可能需要创建一个中间主题来存储状态(例如:<boblocation,long><bobmood,字符串>)。将从此主题(“全局主题”)创建全局状态存储-是否正确?
然后每次我的微服务收到消息时,我总是读取globalstatestore以更新其状态,然后处理记录-我是否将其作为globalktable读取?
然后将状态更新为“全局主题”
对重启过程有什么影响吗?由于我一直在从全局状态存储中存储状态,所以当一个应用程序死亡而另一个应用程序接管时是否有问题?
太感谢你们了!
暂无答案!
目前还没有任何答案,快来回答吧!