2015-07-17 2 views
2

У меня есть требование внедрить службу генерации последовательности, так что она запускает несколько экземпляров этой службы в n числе центров обработки данных (vm или baremetal machines). Ниже приведены правила для службы независимо от того, какого экземпляра службы вызываются (от любого из центров обработки данных):Использование Spring Cloud для реализации глобальной блокировки

  • Всех последовательности должны быть уникальными
  • Порядковый номер не может быть пропущен (т.е. не может генерировать 2 до 1 и т. Д.)
  • Если экземпляр службы не работает (или полный центр обработки данных), другие должны иметь возможность обрабатывать запросы и соответствовать двум предыдущим правилам.
  • Должен быть способен обслуживать не менее 200 000 последовательностей в день.

Я думал о множестве разных решений, но в основном это сводится к какому-либо распределенному сервисному блокированию. Весеннее облако утверждает, что имеет какой-то «глобальный замок», однако я не вижу никакого реального примера описания или реализации. Я открыт для любого другого решения (кроме Apache Zookeeper).

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

ответ

0

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

2

Мы еще ничего не выпустили, но вы можете следить за ходом https://github.com/spring-cloud/spring-cloud-cluster, который имеет концепцию замков, реализованных с использованием различных технологий.

+0

Спасибо ... Я проверю их –

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