2015-11-26 2 views
0

У меня есть адаптер (написанный в Spring Boot and Spring Integration), который восстанавливает валюту из двух разных источников (через REST и собственную библиотеку). Я фильтрую ненужные вещи, создаю экземпляры класса, известные в моей системе, и отправляю ставки в JMS-кластер. Я хочу, чтобы этот адаптер был реплицирован. Одновременно должен работать только один экземпляр. Когда один из них падает (я знаю это из конечной точки здоровья), другой должен начать публикацию ставок. Как я могу добиться такого эффекта? Я знаю, что доступные сервисы можно зарегистрировать с помощью Eureka, но как автоматически включить один из них?Приложения для кластеризации Spring Boot

ответ

1

Решение проблемы связано с использованием весеннего облачного кластера. Для ведения лидерства можно использовать либо zookeeper, либо hazelcast. Из немногих случаев только одному дается роль лидера. Если он выходит из строя, другой выполняет свою роль (сообщается через распространение события). Вы также можете использовать метод yieldLeadership, чтобы вручную отказаться от лидерства (если индикатор работоспособности говорит, что что-то не так с приложением).

0

Не зная подробностей, трудно дать вам рекомендацию.

Я бы сказал, что Эврика не строит то, чего вы пытаетесь достичь. Но это похоже на то, что вы хотите посмотреть в ZooKeeper. Также см. Eureka FAQ для справки. ZooKeeper был точно создан для того, чтобы делать то, что вы пытаетесь достичь: leader election.

С другой стороны, если вы можете выжить и с обслуживанием в течение нескольких секунд, я предлагаю вам использовать либо ваш скрипт, который будет контролировать конечную точку /health, чтобы перезапустить службу, либо использовать системы, у которых уже есть эта сборка как Systemd или Docker, где вы можете определить политики перезагрузки.

Смежные вопросы