Есть два вида взаимодействия микросервисов друг с другом – оркестрация и хореография
Оркестратор (Orchstrator) выступает в качестве распределительного центра. Он отвечает за взаимодействие и управление всеми запросами между различными сервисами. Тут как раз подходит аналогия дирижёра и оркестра.
Хореография — это, как если бы хореограф установил все правила, а после танцоры (микросервисы) в соответствии с установленными правилами начали бы взаимодействовать на сцене без него. Хореография сервисов описывает этот обмен запросами и правила взаимодействия микросервисов.
Преимущества оркестрации:
- Надежность. Оркестрация имеет встроенные средства управления транзакциями и обработки ошибок, в то время как хореография представляет собой двухточечную связь, в которой реализовать сценарии отказоустойчивости гораздо сложнее.
- Масштабируемость. При добавлении нового сервиса в оркестрацию модифицировать правила взаимодействия нужно только оркестратору, в то время как в хореографии необходимо модифицировать все взаимодействующие сервисы.
Некоторые ограничения оркестрации:
- Производительность. Все службы взаимодействуют через централизованный оркестратор, поэтому задержка выше, чем при хореографии. Кроме того, пропускная способность привязана к возможностям оркестратора.
- Единая точка отказа. Если оркестратор выйдет из строя, никакие службы не смогут взаимодействовать друг с другом. Чтобы смягчить это, оркестратор должен иметь высокую доступность.
P.S. Был ли у вас опыт использования выше описанных подходов?