诊断 Azure 有状态参与者

Diagnosing Azure stateful actors

我仍在努力让自己的思想围绕 Azure Service Fabric Stateful Actors。所以,我的(当前)问题最好放在这样的例子中:

现在,我如何查询那些参与者的状态,例如 "give me each actor that is in "rejected" 并且属于名称以德语 ümlaut 开头的用户"?我该如何修补这些参与者的状态数据?

我真的必须为每个 actor 添加一个查询方法并唤醒每个单独的 actor 吗?或者有没有办法在位于它们之上的 actor 之外查询那些状态字典?

也许您可以考虑在您的 actor 中覆盖 OnActivateAsync class(es) 并在那里实施清理逻辑,然后升级您的 SF 应用程序?

这将避免需要在外部迭代每个实例(因为 SF 运行时将为您调用 OnActivateAsync),并确保逻辑只为每个实例运行 if/when 需要(仅在下次激活时)对于给定的实例)。

more on Actor activate/deactivate/etc.

祝你好运!

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

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

为避免这种情况,您可以在有状态服务中保留索引字典,保存您要查询的信息,例如参与者 ID 和状态(发布、处理等)。然后你只需要唤醒那些相关的演员。

您可以采用两种方法:

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