Как использовать Консул, чтобы убедиться, что только одна служба выполняет задачу?Как использовать Консула в выборах лидера?
Я следовал примерам в http://www.consul.io/, но я не уверен на 100%, какой путь. Должен ли я использовать KV? Должен ли я пользоваться услугами? Или я должен использовать регистр в качестве проверки работоспособности и сделать его доступным для кластера с заданным интервалом?
Например, представьте, что имеется несколько центров обработки данных. В каждом центре обработки данных работает много служб. Каждая из этих служб может отправлять электронные письма. Эти службы должны проверять, есть ли какие-либо электронные письма для отправки. Если есть, отправьте электронные письма. Тем не менее, я не хочу, чтобы одно и то же электронное письмо отправлялось более одного раза.
Как бы он удостоверился, что все электронные письма отправлены, и никто не был отправлен более одного раза?
Я мог бы сделать это с использованием других технологий, но я пытаюсь реализовать это с помощью Consul.
Похоже, вам также нужна распределенная очередь. – U2EF1
AFAIK: ваша заявленная цель никогда не может быть достигнута со 100% уверенностью из-за ошибок сетевого разбиения (*, где сеть разбита на две отдельные сети, поскольку мост между двумя кластерами узлов отключен *). Несмотря на то, что есть определенные решения даже по этой проблеме, я не думаю, что они могут гарантировать одного лидера в 100% случаев, а это значит, что вы все равно можете получить несколько сообщений. Вы должны посмотреть на алгоритм paxos и реализовать его с помощью вашего инструмента выбора, хотя вам лучше посоветовать купить решение, а не строить его. –
Возможно, вы захотите прочитать: http://book.mixu.net/distsys/replication.html –