消除ktable内部主题和用户主题之间的冗余

时间:2018-09-13 16:19:46

标签: apache-kafka apache-kafka-streams

我正在为图书库编写一个应用程序,我有2个微服务:memberService和bookService。 memberService创建一个成员ktable(通过汇总另一个主题上的更改消息来构建)供内部使用。 bookService还需要对该ktable的读取权限。目前,我通过让memberService调用memberTable.toStream().to("memberTableTopic")来共享数据。 而且我的bookService订阅了memberTableTopic。

基于我对ktables如何工作的理解,memberTableTopic中的数据将与ktable使用的支持内部主题相同。有消除这种冗余的好方法吗?我的bookService是否应该订阅内部主题?

1 个答案:

答案 0 :(得分:1)

是的,在主题(内部主题和用户主题)中,数据将看起来相同。

从概念上讲,内部主题由KStream应用程序内部使用。这意味着当重置应用程序ID时,这些内部主题将被删除,并且您将丢失数据。尽管用户主题存在于应用程序的外部,但是任何应用程序都可以随时使用它。

这取决于您的需要如何使用数据。如果要删除冗余,可以在内部主题上保留较短的时间。