我们最近决定开始使用本地 Service Fabric,但遇到了“依赖”问题。
我们有几个来宾可执行文件,它们之间存在依赖关系,并且如果不重新启动它们所依赖的服务,则无法从它们所依赖的服务重新启动中恢复。
一个清楚的例子:
在下图中,服务 B 依赖于服务 A。如果服务 A 遇到意外错误并重新启动,服务 B 将进入“错误”状态(不会报告给结构)。这意味着服务 B 将报告一个正常的健康状态,尽管它处于错误状态。
我们正在考虑围绕这些方面的解决方案:
提出一个独立的服务来监控集群中所有副本/分区/应用程序的健康状态事件,并包含整个依赖树。
当一个服务的健康状态发生变化时,它会重新启动它的直接依赖关系,这将导致事件的多米诺骨牌效应->重新启动,直到整个子树被重置(如下面的事件->动作流程图所示)。
问题是 healthReport 事件不会在很短的时间间隔内发送(这意味着我的整个系统无法工作,我几分钟内都不知道)。我会监控健康状态,但我确实需要知道历史(即使状态现在是健康的,这并不意味着它之前没有处于错误状态)。
另一个问题是事件可以在任何服务级别(副本/分区)弹出,并且需要我汇总所有事件。
我真的很感激任何关于此事的帮助。我也完全愿意接受任何其他关于这个问题的建议,即使它完全是另一个方向。