Azure Service Fabric指定服务/应用程序启动依赖关系



简要询问,有没有办法在Azure服务面料中指定服务/应用程序启动依赖关系?

我有两种服务,例如S1和S2。S2取决于S1,必须在S1启动后开始。当前S1和S2处于不同的应用程序包下。如有必要,我也可以将它们放入一个应用程序包中。

如果我首先启动S1,则可以在部署期间进行S2。但是,似乎服务面料有一些维护工作,在此期间重新启动了服务。现在的问题是不能保证启动S1和S2的顺序,这会导致S2在初始化过程中未能读取某些配置。S2默默失败,但保持运行。

在服务织物中,有可以指定设置的方法",但是在这种情况下,S1本身具有" setupenTryPoint",此外,我觉得在" setupentrypoint"下放置长期运行的服务是不合适的。

我还考虑在无法读取S1的配置时停止S2,在这种情况下,服务面料将继续尝试重新启动S2直到S1启动。

但是,有什么方法可以保证S2在S1之后通过服务面料配置?

我也面临着同样的问题。我认为仅通过服务面料配置就不可能。

最后,我提出的解决方案是,除非依赖的服务启动,否则我以其不完全启动的方式重新设计了服务。就我而言,我的服务A取决于服务B。如果服务A首先,它将向消息总线发出消息,并等待服务B回复。如果服务B已经启动,则将直接回复。如果服务B尚未启动,一旦开始,它将回复。然后,当服务A获得答复时,它将继续进行启动。这样,它将始终能够真正开始完成。

另一个更简单的方法是,如果服务B降低,只需在服务A中投掷一个例外。服务面料将尝试在另一个节点中启动该应用程序,并希望那时服务B已启动。往下的一面是,第一个初始启动会痛苦地慢慢(因为它将不断重试直到出现正确的订单),而且您还会看到很多错误(但是当所有服务完成启动时,最终将消失)

最新更新