AshBlade
@AshBlade
Просто хочу быть счастливым

Как хранить и обрабатывать отображение Id на адрес узла в кластере?

Пишу распределенное приложение, которое реплицируется по алгоритму рафт.
У каждого узла есть свой Id и в кластере есть только 1 лидер. Когда запрос присылается на узел не лидер, то этот узел отвечает, кто им является - передает Id лидера.
Сейчас реализую клиентскую библиотеку, которая будет сама переподключаться к лидеру, когда запрос отправлен не на него.

Вопрос в следующем: как правильно хранить и обрабатывать отображение Id - адрес узла?

Какие идеи есть:
- При создании клиента передавать ему список известных адресов. А чтобы понять Id каждого узла, раз за разом подключаться к новым узлам. Но возможно придется подключиться к каждому узлу, если каждый раз будут приходить неизвестные Id.
- Добавить в процесс инициализации подключения отправку узлом списка Id - адрес. Но в этом случае адрес может быть неизвестен клиенту. Например, если работаем в докере (другая сеть).

Может есть другие идеи или, даже лучше примеры проектов?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Смысл рафта в том чтобы выбрать лидера. Как только лидер выбран - можно пересылать всех
клиентов на его IP адрес как в балансировщике. В этом случае все клиенты будут видеть единую
табличку свойств. Как в зукипере.

Больше в рафте никакого смысла нет.

Поэтому безразлично к какому узлу подключается клиент.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы