Недавно мы решили начать использовать локальную Service Fabric и столкнулись с проблемой «зависимости».
У нас есть несколько гостевых исполняемых файлов, которые имеют зависимости между ними и не могут восстановиться после перезапускаслужба, от которой они зависят без перезапуска.
Пример, проясняющий ситуацию:
В приведенной ниже таблице услуга B зависит от службы A. Если службаПри обнаружении непредвиденной ошибки и перезапуске служба B перейдет в состояние «ошибка» (о котором не будет сообщено матрице).Это означает, что служба B сообщит о состоянии работоспособности OK, хотя она находится в состоянии ошибки.
Мы думали о решении, заключающемся в следующих строках:
Создание независимой службы, котораяотслеживает события состояния работоспособности всех реплик / разделов / приложений в кластере и содержит все дерево зависимостей.
Когда состояние работоспособности службы изменяется, она перезапускает свои прямые зависимости, что вызывает эффект доминособытия -> перезапускаются до тех пор, пока все поддерево не будет сброшено (как показано ниже в блок-схеме событий -> действия).
Проблема заключается вСобытия HealthReport не отправляются в короткие промежутки времени (это означает, что вся моя система не может работать, и я не буду знать в течение нескольких минут).Я бы отслеживал состояние работоспособности, но мне нужно знать историю (даже если состояние сейчас исправно, это не значит, что раньше оно не было в состоянии ошибки).
Другая проблема заключается в том, что событияможет появиться на любом уровне обслуживания (реплика / раздел), и это потребует от меня агрегирования всех событий.
Я был бы очень признателен за любую помощь по этому вопросу.Я также полностью открыт для любых других предложений по этой проблеме, даже если это совершенно другое направление.