首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分享卡夫卡StateStore最佳实践

分享卡夫卡StateStore最佳实践
EN

Stack Overflow用户
提问于 2020-06-10 11:33:44
回答 1查看 590关注 0票数 1

在创建处理器API Topology时,我注意到Topology#addStateStore(StoreBuilder, String...)接受多个处理器,这意味着一个状态存储可以由多个处理器共享。

这个设计有什么要注意的地方吗?如果密钥不存在,而实际上其他处理器只是存储该键的值,那么是否有可能通过存储值来丢失数据?我想我是在问是否会出现通常的比赛状况问题。

如果处理器属于不同的子拓扑,会有什么不同吗?

此外,当附加到具有不同数目分区的源的处理器共享相同的状态存储时,会发生什么情况?这将如何影响状态存储分块?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-13 18:20:52

没有种族条件。如果单个存储连接到多个处理器,则两个处理器都在一个线程中执行。

但是请注意,没有定义两个处理器访问存储的顺序,也就是说,如果有一个输入记录,您不知道哪个处理器将首先执行。

如果处理器属于不同的子拓扑,

会有什么不同吗?

这是不可能的如果两个处理器访问同一个存储区,它们将始终处于相同的子拓扑中。

此外,当附加到具有不同数目分区的源的处理器共享相同的状态存储时,会发生什么情况?这将如何影响状态存储分块?

通常,这是不建议的,因为您的输入数据不会被共同分割(即,在两个主题中的不同分区中,最有可能使用相同键的记录)。程序仍将使用较大的分区计数来创建存储碎片来执行。对于某些碎片(对于较高的分区号),相应的任务将只从一个主题读取数据,因为另一个主题中没有相应的分区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62302561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档