Как взаимодействовать между модулями одной и той же службы в одном кластере k8s с помощью k8s-java-client?

У меня есть кластер Kubernetes, на котором много сервисов. Как я могу заставить один модуль публиковать сообщение и получать его от других модулей-братьев (модулей той же службы), используя kubernetes-java-client.

До сих пор я не находил способа выполнить свою работу.

Пример: 1 услуга -> 4 модуля (4/4 набора реплик)

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

Таким образом, модуль публикует событие, а другие модули-близнецы потребляют событие и выполняют реакцию. Или модуль напрямую связывается со своими братьями и сестрами, чтобы попросить их отреагировать.

Возможно ли это, и каков правильный путь к подобному сценарию?


person Ali Adel Abed    schedule 26.05.2019    source источник
comment
Не думаю, что ваш вопрос имеет отношение к кубернетам. Похоже, что вы ищете способ координации между несколькими экземплярами одного и того же приложения. Это можно сделать множеством способов (блокировка БД, запись файлов на общий сетевой диск). Я бы посмотрел на это с помощью очереди сообщений, такой как NATS. (nats.io)   -  person antweiss    schedule 26.05.2019
comment
Какой здесь вариант использования? В идеале все капсулы обслуживают одно и то же приложение. Они не должны вести себя иначе.   -  person Manish Bansal    schedule 26.05.2019


Ответы (1)


За исключением использования Kubernetes API для обнаружения одноранговых модулей (обычно через API конечных точек), он не предоставляет ничего, в частности, для фактических коммуникаций, что зависело бы от вашего кода.

person coderanger    schedule 26.05.2019
comment
Помимо получения конечных точек напрямую из службы, такой как coderanger, упомянутой выше, вы можете попробовать использовать внешнюю ququeue для передачи сообщений. - person kbry; 26.05.2019