根据我的申请,我想
Join
两个信息一起处理。此进程在内存中,因为它需要相当低的延迟。
我的应用程序有多个节点在运行,所以当一个节点启动时,它会从第一个主题分配一些分区
T1
T1:P1
,
T1:P3
)以及其他主题的一些分区
T2
T2:P2
T2:P4
)
我的问题是,我不能保证一个应用程序节点将被分配来自两个主题的相同实体的分区。一个给定的实体最终可能
第一个话题
T2:P3
我知道我可以用
一致分区器
T1:P1
T2:P1
). 它仍然没有帮助我,因为我可以分配任何分区。
看来卡夫卡流将适合这种情况下,但它仍然是
doesn´t have an implementation for .net
我想到了一些可能的解决办法:
-
在客户机上,让kafka客户机分配
T1级
,在
PartitionsAssigned
T2级
.
-
使服务无状态,并使用数据库。保存/检索每个新消息的状态。
-
在我的特殊情况下,
T1级
T2级
T2级
在每个节点上(例如,使用随机groupId)。
但所有解决方案都存在问题:
-
在策略(1)上,我对散播
-
策略(2)将引入延迟,这是我真正不想要的。即使以redis为例,这也可能成为一个问题。
-
还有什么我没想到的解决办法吗?