Выборы лидера: Консул против ZooKeeper - PullRequest
0 голосов
/ 23 января 2019

Мы выбираем лучший вариант для проведения выборов лидеров, чтобы добиться высокой доступности.Наша цель - активировать только один экземпляр в любой момент времени.Мы используем Spring Boot для разработки приложения, которое по умолчанию развертывается на Tomcat.Было бы здорово услышать ваше мнение о следующих опциях:

Обеспечивает ли Zookeeper лучшую СР, чем Консул?

Взгляд на обслуживание / сложность?

1 Ответ

0 голосов
/ 06 февраля 2019

ZooKeeper основан на ZAB, а Consul основан на Raft.Оба очень похожи на алгоритмы атомного вещания на высоком уровне.Таким образом, что касается «постоянства» CAP (которое на самом деле является линеаризуемостью, очень сильной формой постоянства), то оба будут предоставлять одинаковые гарантии.Оба имеют линеаризуемую запись в кворум (большинство).Другие узлы (не в кворуме) могут отставать в обновлениях по умолчанию, что приводит к устареванию чтения.Это сделано таким образом, потому что полная линеаризуемость замедляет работу, и многие приложения хороши с небольшим устареванием чтения.Однако, если это неприемлемо в конкретном случае использования, всегда можно использовать вызов sync перед чтением в ZooKeeper и режим Consistent в Консуле для достижения полной линеаризации.

Однако для обнаружения службы,Консул, кажется, предоставляет конструкции более высокого уровня, которые не являются стандартными в ZooKeeper.

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

Но, учитывая, что ZooKeeper используется во многих проектах Apache высшего уровня, и он также старше, чем Raft и, следовательно, Consul, я надеюсь, что он получит лучшую поддержку сообщества и документацию.Также великолепна документация Apache, предоставляющая различные рецепты.

Наконец, если вы используете ZooKeeper, вы также можете использовать Apache Curator, который предоставляет API более высокого уровня поверх ZooKeeper.

...