У меня есть веб-сервис на основе Node, который сбалансирован по нагрузке на 4 сервера. Я хочу, чтобы они договорились о лидере между собой при запуске или неудаче, но я не совсем уверен, как справиться с состоянием гонки, вызванным «одновременным» запуском и задержкой.
Я начал думать по линии TCP-рукопожатия, но я не могу обернуть голову вокруг лучшего способа увеличить это от 2 до 4 сторон, или как замкнуть его каждый раз, когда пара выбирает между ними (потому что кто скажет, что не будет оказаться в бесконечном цикле одностороннего совершенства?).
Использование такого конфигурационного файла просто слишком пешеходно для моей крови
servers: {
list: [a,b,c,d],
speaker: a
}
, потому что это потребует ручного вмешательства через 4 поля для обновления speaker
, если host1
не удалось.
У меня есть несколько псевдокодированных алгоритмов, которыми я могу обновить вопрос, но я, очевидно, не доволен ни одним из них, поэтому я не Я не хочу загрязнять пространство ответов неоптимальными догадками.