【发布时间】:2019-02-08 16:03:03
【问题描述】:
我有一个无状态服务,我有一个方法,我在其中创建一个类实例。 我已经在多个节点上发布了服务。 因此,当我从另一个服务调用该方法时,该方法将在其中一个节点中调用。因此,该实例将仅在该节点中可用。 如果节点关闭,我将丢失类实例。
有没有办法在所有 Service Fabric 节点中调用方法? 或者在有状态服务中是否有可能?
【问题讨论】:
我有一个无状态服务,我有一个方法,我在其中创建一个类实例。 我已经在多个节点上发布了服务。 因此,当我从另一个服务调用该方法时,该方法将在其中一个节点中调用。因此,该实例将仅在该节点中可用。 如果节点关闭,我将丢失类实例。
有没有办法在所有 Service Fabric 节点中调用方法? 或者在有状态服务中是否有可能?
【问题讨论】:
如果你的服务必须在故障之间保持状态,你不应该使用无状态服务,你应该使用有状态服务并将你必须保持的数据放在一个可靠的集合中。
另一种方法,如果您的 Class\Object 在收到调用时会处理某些内容,您可以将其设为 Actor,并且将 Actor 状态复制到其他节点,如果 Actor 宕机,则重新加载其状态当一个新实例接管时。
如果您确实需要使用无状态服务,则应将此类保存在缓存中,例如 Redis 或 Memcache。
对于您的主要问题,请查看其他 SO 问题:Invoke same method on all active instances of a stateless service
【讨论】: