Я думаю, что ваш вопрос риторический.Очевидно, что если система зависит от всех служб, то любая служба является единственной точкой отказа.Если один сервис отключается, система не будет "служить своей цели".Использование Microservices не освободит вас автоматически от проблемы единой точки отказа.
Большинство сторонников Microservices скажут вам, что вы должны проектировать свою систему таким образом, чтобы вся система не зависела ни от кого.оказание услуг.Но такая система звучит для меня как единорог.Это то же самое, что сказать: «если вы удалите часть своего кода, приложение должно продолжать работать»
На самом деле, вы можете спроектировать систему, в которой останется какая-то утилита, если какой-либо из сервисов выйдет из строя.Но я сомневаюсь, что существует какая-либо система, которая может функционировать должным образом, когда отсутствует один из ее важных компонентов.Когда система функционирует должным образом без одного из ее компонентов, количество дополнительной проверки ошибок и т. Д., Которая требуется, ужасна.
Но дело в том, что это не то, для чего предназначены микросервисы.Это только одно из предполагаемых преимуществ, которые люди рекламируют.Преимущество приходит только в том случае, если вы разрабатываете свою систему, чтобы учесть сбой.Но вам все равно не нужно использовать Microservices.
Создание иногда подключенных клиентов может быть еще одним способом избежать единой точки отказа.Git - хороший пример.Если GitHub не работает, у вас нет людей, сидящих без дела и говорящих: «О, похоже, мне не нужно будет сегодня ничего делать».
Примечание: можно добавить балансировщик нагрузкиперед любой службой, чтобы физическая машина не стала единственной точкой отказа.