Я только начал изучать etcd, и один из вариантов использования, который упоминается в выступлениях создателей, — это система очереди работ.
Но как бы вы это реализовали?
Базовый шаблон будет примерно таким.
1 процесс, генерирующий «тикеты с описанием работы», и поместите этот тикет в папку etcd, скажем, «/queue/worktickets/00000000001/»
1->многие процессы прослушивают папку «/queue/worktickets/» на наличие изменений. когда появится новый рабочий билет, каждый процесс попытается захватить билет, создав новое значение в "/queue/locks/00000001", чтобы заблокировать этот билет. Только первый сможет создать значение блокировки.
Процесс, создавший билет блокировки, выполняет свою работу, а затем удаляет билет из очереди и, возможно, значение блокировки. Затем попробуйте взять следующий доступный билет из очереди. Если билетов больше нет, снова начните прослушивать изменения в папке «/queue/worktickets/».
На мой взгляд, это должно быть довольно просто реализовать, но если очередь становится большой (билет легко сгенерировать, но сложно обработать), то кажется, что будет много данных, передаваемых из etcd каждому из клиентов. Насколько я знаю, невозможно сказать, дайте мне первое значение в этой папке, которое не существует в этой папке, и нет никаких n лучших элементов из папки.
Любой хочет поделиться своими мыслями по этому поводу.