首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡夫卡流: InvalidStateStoreException

卡夫卡流: InvalidStateStoreException
EN

Stack Overflow用户
提问于 2018-06-02 16:49:59
回答 1查看 847关注 0票数 0

如果有状态流应用程序是以单个节点上的6个线程启动的,那么会出现上述异常吗?

如果在节点1上启动的有状态流应用程序消耗了特定的主题,那么是否有任何需要遵循的进程来在不同的节点上运行?

如果有状态流应用程序在2个节点上启动,如果发生上述异常,流应用程序会立即终止吗?

  • 如果是,那么在尝试捕获块中可以在哪里捕获此异常? 如果可以捕获异常,如果我们添加睡眠10分钟,那么存储会自动进入有效状态吗?
  • 如果没有,是否有方法可用于检查存储状态并等待其生效?

跟进:

如果有状态流应用程序是以单个节点上的6个线程启动的,那么会出现上述异常吗? 它可以

本质上,我在想,如果我们将整个主题消耗保持在一个节点上,那么如果由于线程之一关闭/终止而发生了再平衡,它会避免从内部主题重新构建存储吗?

商店还没有准备好:您可以等到商店准备好--最好注册一个恢复回调(查看文档以获得详细信息),以便在恢复完成时得到通知,并且可以重试查询该存储。

对不起,我想澄清一下,是StateRestoreCallback还是StateRestoreListener?我想是后面那个。另外,是否需要重写StateRestoreCallback并包含恢复存储的逻辑?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 21:14:04

InvalidStateStoreException可能有不同的原因,因此,如果没有更多的上下文,很难回答您的问题。

如果有状态流应用程序是以单个节点上的6个线程启动的,那么会出现上述异常吗?

它可以。

如果在节点1上启动的有状态流应用程序消耗了特定的主题,那么是否有任何需要遵循的进程来在不同的节点上运行?

不是的。

如果有状态流应用程序在2个节点上启动,如果发生上述异常,流应用程序会立即终止吗?

取决于它在何处引发的异常:

  • 或者,相应的StreamThread会死掉,但是应用程序不会自动终止。您应该在KafkaStreams实例上注册一个未登录的异常处理程序,并使用自定义代码(例如,终止应用程序)对即将结束的线程作出反应。
  • 如果使用交互式查询从KafkaStreams抛出它,则不会影响StreamThread

在试图捕获块中,在哪里可以捕获此异常?

通常是这样的,特别是当您提到交互式查询功能时。

如果我们增加睡眠10分钟,存储会自动进入有效状态吗?

如果您引用交互式查询功能,睡眠不是一个好策略。导致此异常的原因有多种,因此您需要作出相应的反应:

  • 存储不是本地的,而是位于不同的节点上:您可以通过检查存储元数据来找出这一点。
  • 商店还没有准备好:您可以等到商店准备好--最好注册一个恢复侦听器(查看文档以获得详细信息),以便在恢复完成时获得通知,并且可以重试查询该存储。

更新

本质上,我在想,如果我们将整个主题消耗保持在一个节点上,那么如果由于线程之一关闭/终止而发生了再平衡,它会避免从内部主题重新构建存储吗?

是的(对于非EOS案件)。其他线程将检测本地存储并重用它。

StateRestoreCallback或StateRestoreListener

是的,是StateRestoreListener。只有当您编写自定义状态存储时,才会实现StateRestoreCallback

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

https://stackoverflow.com/questions/50659129

复制
相关文章

相似问题

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