Мы перешли на микры и все было хорошо пока не стали запускать реплики микров
Выручающий Саша:
А в чем проблема?
ПРоблемная Маша:
Прописала в одном микре адрес другого и дергала по фейн клиенту, а потом запустила реплику второго микра, а он без дела крутиться, как сделать чтобы первый балансировал запросы между репликами второго микра
Выручающий Саша:
Нужен discovery server, выбери подходящую реализацию этого паттерна и он будет всем рассказывать про реплики твоего микра
Проблема
Как клиент сервиса узнает адрес экземпляра сервиса? Учитывая, что адреса могут динамично меняться и плюс к этому могут динамично добавляться и удаляться реплики сервиса.
Решение
Сделать реестр сервисов.
При старте каждый сервис будет регистрироваться в данном реестре. И каждый сервис будет получать информацию о доступных сервисах из данного реестра.
Discovery на стороне сервера
Discovery на стороне сервера
Реализации паттерна Discovery
Преимущества Server-side discovery
Клиенту не надо заниматься обнаружением. Клиент напрямую отправляет все запросы маршрутизатору и ни о чем не думает
Недостатки Server-side discovery
Нужен отдельный компонент - маршрутизатор. Маршрутизатор должен быть отказоустойчивым и производительным
Маршрутизатор должен поддерживать необходимые протоколы (HTTP, gRPC и т.д.)
Увеличивается количество сетевых переходов, соответственно больше нагрузка на сеть и больше точек отказа