Детерминированная маршрутизация с ключом к услуге gRPC в Кубернетесе - PullRequest
1 голос
/ 19 сентября 2019

У меня есть микросервис gRPC, работающий в Kubernetes, в настоящее время есть только один модуль, я хочу увеличить количество модулей для микросервиса, но для этого я хочу всегда направлять один и тот же ключ на один и тот же модуль,чтобы избежать условий гонки, я хотел бы понять, как добиться этой функциональности.

1 Ответ

0 голосов
/ 23 сентября 2019

В этом случае вам необходим балансировщик нагрузки уровня 7 (L7), поскольку он работает на прикладном уровне и может проверять трафик для принятия решений о маршрутизации.Самое главное, они могут поддерживать протокол HTTP / 2 (который использует gRPC).

Nginx и HAProxy являются одним из вариантов балансировщиков нагрузки L7, но слишком тяжелым для микросервисной архитектуры.Вы можете подумать о Envoy и Linkerd , оба имеют поддержку gRPC.

Бобы могут быть реплицированы для обеспечения масштабирования и заключены в абстракции, известные как сервисы, которые предоставляютстабильный IP-адрес для доступа к базовым модулям.Начиная с Kubernetes 1.2, поведение по умолчанию при достижении IP-адреса службы заключается в том, что будет возвращен случайный внутренний модуль.Однако вы можете переконфигурировать ваши службы так, чтобы они были безголовыми, чтобы вместо этого IP-адрес службы возвращал весь список доступных IP-адресов, что позволит вам выполнить собственное обнаружение службы.

Вы можете легко начать с Linkerd с помощью этого официальный учебник .

...