等待服务就绪 (Service Fabric)

Waiting for a service to be ready (Service Fabric)

我在 Azure Service Fabric 上有四个服务 运行,但是这 4 个服务中有两个依赖于另一个服务,有没有办法让服务初始化等到另一个服务宣布准备就绪?

没有。服务创建没有顺序(服务可以随时创建,而不仅仅是在构建机器的部署期间),服务准备就绪甚至意味着什么?从我们的角度来看,这意味着故障转移管理器找到了服务能够 运行 的节点,并且代码包已在这些节点上激活。但是平台不知道您的服务代码做什么。从您的角度来看,它可能意味着 "when it's responding to my requests" 否则它不是 "ready," 这可能会在服务生命周期内的任何时间发生,原因有很多:

  • 服务刚刚部署,其通信堆栈尚未打开端点
  • 服务 instance/replica 已移动,其通信堆栈正在新节点上重新启动
  • 服务分区失去仲裁并且不接受写入操作 等等

这是一个持续的事情,您的服务需要做好处理的准备。如果其中两个服务在能够与另一个服务通信之前不能执行 any 工作,那么它们需要轮询它们所依赖的那个服务,直到它可以通过该服务上的端点使用你定义的。