如何维护在访问外部资源的多个群集中部署的Service Fabric微服务中的状态

时间:2018-07-18 11:02:13

标签: azure cluster-computing azure-service-fabric service-fabric-stateful

我正在尝试制作Service Fabric服务,该服务对外部服务进行SOAP调用,这样,如果在2个或更多群集上部署了该服务,则该服务仍然可以工作,因为如果一项服务已与外部连接服务,则另一个群集中的服务不会尝试建立连接,反之亦然。

如果不将状态存储在数据库中,我想不出一种更好的方法来设计它,这会引入很多问题,例如锁定和竞争条件等。在这种情况下可以进行哪些设计?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

在Service Fabric上没有开箱即用的方法。

您必须找到一种在群集\服务之间协调这些调用的方法,您可以:

  • 在一个集群中创建一个服务,以将呼叫委派给其他服务,并将有关连接的信息存储在单个服务中。
  • 将消息放入队列中,每个服务获得一条消息以打开连接(这可以是上面使用的方法之一)
  • 将每个活动的呼叫存储在共享缓存中(redis),在尝试进行呼叫之前,请检查连接是否已在某处激活,当关闭连接时,您可以从缓存中删除其他服务以便能够打开连接,还可以启用到期功能以在服务失败时关闭这些连接。
  • 按照您的建议将状态存储在数据库中