如何维护部署在访问外部资源的多个集群中的 Service Fabric 微服务的状态
How to maintain state in a Service Fabric microservice deployed in multiple clusters accessing external resource
我正在尝试制作我的 Service Fabric 服务,它对外部服务进行 SOAP 调用,这样如果部署在 2 个或更多集群上,它仍然可以工作,因为如果一个服务已经连接到外部服务,则另一个集群中的服务不会尝试建立连接,反之亦然。
如果不将状态存储在数据库中,我想不出更好的设计方法,这会引入许多问题,例如锁定和竞争条件等。有哪些设计可以适合这种情况.任何建议将不胜感激。
无法在 Service Fabric 上开箱即用。
您必须找到一种方法来协调 clusters\services 之间的这些调用,您可以:
- 在其中一个集群中创建一个服务以将调用委托给其他服务,并将有关连接的信息存储在单个服务上。
- 将一条消息放入队列中,每个服务获得一条消息以打开连接(这可以是上面使用的方法之一)
- 将每个活动调用存储在共享缓存(redis)中,在您尝试进行调用之前,您检查连接是否已经在某处处于活动状态,当连接关闭时您从缓存中删除以便其他服务能够打开连接,还启用过期以在服务失败时关闭这些连接。
- 按照您的建议将状态存储在数据库中
我正在尝试制作我的 Service Fabric 服务,它对外部服务进行 SOAP 调用,这样如果部署在 2 个或更多集群上,它仍然可以工作,因为如果一个服务已经连接到外部服务,则另一个集群中的服务不会尝试建立连接,反之亦然。
如果不将状态存储在数据库中,我想不出更好的设计方法,这会引入许多问题,例如锁定和竞争条件等。有哪些设计可以适合这种情况.任何建议将不胜感激。
无法在 Service Fabric 上开箱即用。
您必须找到一种方法来协调 clusters\services 之间的这些调用,您可以:
- 在其中一个集群中创建一个服务以将调用委托给其他服务,并将有关连接的信息存储在单个服务上。
- 将一条消息放入队列中,每个服务获得一条消息以打开连接(这可以是上面使用的方法之一)
- 将每个活动调用存储在共享缓存(redis)中,在您尝试进行调用之前,您检查连接是否已经在某处处于活动状态,当连接关闭时您从缓存中删除以便其他服务能够打开连接,还启用过期以在服务失败时关闭这些连接。
- 按照您的建议将状态存储在数据库中