Как стручок может узнать количество своих реплик - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над сервисом (написанным на Go), который, как ожидается, получит огромное количество запросов. В соответствии с архитектурой каждый модуль службы должен обслуживать определенных клиентов. Допустим, если есть 3 пакета этой услуги, разделение будет похоже на -> A-H, I-P, Q-Z, где каждая буква является первой буквой имени клиента.

Но если есть4 пакета этой услуги, тогда разделение может быть -> A-F, G-N, O-U, V-Z.

Есть ли способ, которым я могу узнать в коде Go, сколько есть других реплик?

PS: AFAIK, одна возможность - иметь environment variable в deployment.yaml. Но есть способы, в которых масштабирование может быть выполнено без изменения yaml.

1 Ответ

0 голосов
/ 14 ноября 2019

В соответствии с заголовком, решение состоит в том, чтобы использовать StatefulSet, когда каждая служба знает друг о друге, и приложения могут быть написаны так, чтобы они обрабатывали этот сценарий.

Однако для этого вопросаСогласно упомянутым деталям, одним хорошим решением без использования StatefulSet является создание Service с sessionAffinity: ClientIP. Требование согласно деталям состоит в том, что последующие запросы должны идти к определенному модулю, который обслуживал предыдущий запрос. Это можно настроить с помощью поля sessionAffinity. Проверьте документацию для этого здесь При этом, когда подключается новый клиент, service выберет pod после выполнения балансировки нагрузки. Отправьте это, все последующие запросы будут идти только к этому pod. Это можно настроить далее, используя SessionAffinityConfig.

...