Развертывание Blue / Green для службы, использующей Kafka в Docker Swarm - PullRequest
0 голосов
/ 02 мая 2018

Цель: - организовать сине-зеленое развертывание для конкретной службы весенней загрузки, которая использует Kafka. (Меня не интересует, как решить B / G на уровне REST или DB, поэтому давайте предположим, что эта часть B / G уже сделана на LB)

Я хочу: для одновременного запуска двух экземпляров службы в кластере Docker Swarm. Но один из них должен находиться в спящем режиме, то есть не создавать и не потреблять никаких сообщений.

Самая большая проблема: Нет ничего страшного в том, чтобы установить масштаб = 2 для моего сервиса. Однако в этом случае каждый экземпляр службы будет использовать события и обрабатывать их. Это приводит к катастрофе. Поэтому мне нужен простой и прозрачный механизм для отключения всех производителей и потребителей услуг и восстановления их с определенным смещением

Я ищу пример или предложения, как этого добиться.

Текущая идея: - хранить текущие смещения в zookeeper и записывать пользовательский слой, который будет объединять эти конфигурации и управлять на их основе потребителями и производителями. Тем не менее, я считаю, что существует какой-то лучший и более простой способ / рамки.

1 Ответ

0 голосов
/ 16 октября 2018

Есть несколько подходов: 1. Пауза и возобновление - https://docs.spring.io/spring-kafka/reference/html/_reference.html#pause-resume

  1. Для каждой темы разбить на 2 темы: активную / неактивную и переключаться между ними

  2. Если вы используете публичное облако - https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-kafka-on-aws/

...