诊断Azure有状态角色

时间:2016-04-11 15:32:48

标签: azure actor azure-service-fabric stateful

我仍然试图让我的思绪Azure Service Fabric Stateful Actors。所以,我的(当前)问题最好放在这样的例子中:

  • 我有一个帮助台系统,每张票都是有状态的演员。演员知道它所处的状态(发布,处理,拒绝,......),可以访问相关数据等等。
  • 我发现我犯了一个错误,其中一堆50.000张票都处于错误状态。所以,我需要
    • 修复代码
    • 发布解决方案
    • 修复这些50.000个演员的子集的数据内容。

现在,我如何查询这些演员的状态,比如“给我每个被拒绝的演员”,并且属于名字以德国ümlaut开头的用户?那么我如何修补这些演员的状态数据?

我是否真的必须为每个演员添加一个查询方法并唤醒每个演员?或者有没有办法查询坐在他们之上的演员之外的那些状态词典?

2 个答案:

答案 0 :(得分:1)

也许你可以考虑在你的actor类中覆盖OnActivateAsync并在那里实现清理逻辑,然后升级你的SF应用程序?

这将防止需要在外部迭代每个单独的实例(因为SF运行时将为您调用OnActivateAsync),并且将确保仅在需要时(仅在需要时为下一次激活时)为每个实例运行逻辑)。

more on Actor activate/deactivate/etc.

祝你好运!

答案 1 :(得分:1)

简短的回答是肯定的,在这样的情况下,你必须唤醒每一个演员(最终)。

如果你已经处于那种状态,我认为JoshL的建议是有道理的。

为避免出现这种情况,您可以将索引字典保留在有状态服务中,并保存您要查询的信息,例如:演员身份和身份(张贴,处理等)。然后你只需唤醒那些相关的演员。

您可以采取两种方法:

  • 让有状态服务引导信息流 - 负责更新索引字典并告诉演员做什么(例如改变状态)。
  • 让演员负责通知有状态服务进行状态更新(例如,这可以通过提醒定期完成)。