Предположим, что у вас есть n процессов, n > 2. Вы хотите иметь между ними соглашение, что один из них должен быть активным. Поэтому им нужно проголосовать, чтобы определить, кто из них активен.
Все процессы могут сбой в любой момент, мы хотим, чтобы один процесс был активным, но...
У нас никогда не должно быть двух активных одновременно, поэтому, если они не могут быть уверены, что лучше не иметь никого. (Т.е. мы хотим избежать расщепления мозга)
Единственным доступным механизмом связи между ними является обмен сообщениями pub-sub (не точка-точка).
Доступны одна или несколько баз данных, но ни одна база данных не должна быть единственной точкой отказа. То есть. было бы очень нежелательно, если бы все процессы были доступны для работы, и им было отказано в потере одной базы данных.
Дизайн? Какие сообщения нужно публиковать?