如何 运行 服务结构中每个节点上的东西

How to run something on each node in service fabric

在服务结构应用程序中,使用 Actors 或服务 - 如果您想确保您的代码块在每个节点上 运行,设计应该是什么。

我的第一个想法是,它必须是实例计数设置为 -1 的服务,但在您设置为 3 个实例的情况下也是如此。您将如何进行设计以确保服务在每个实例上 运行 进行一些操作。

我自己的想法是让 Actor 的状态控制需要 运行 的操作,并且它会使用 serviceProxy 迭代服务以在每个实例上调用方法 - 但这只是一个天真的想法我不知道这样做是否可行,或者这样做是否正确?

一些背景信息

只有无状态服务可以为实例计数指定 -1。您不能使用 ServiceProxy 来定位特定实例。

使用 1 个或多个 partitions(数据分片)部署有状态服务。分区计数是预先配置的,作为服务部署的一部分,不能自动更改。例如,如果您的集群横向扩展,则不会自动添加分区。

自主工作者

也许您可以通过 运行 无状态服务(在所有节点上)反转控制流,并让它们查询 'repository' 工作项。存储库可以是有状态服务,将工作项存储在队列中。

这样,添加更多实例(扩展集群)可以增加吞吐量而无需修改代码。无状态服务实例成为自治工作者。 (与智能编排 Actor 相对)