Вещание Python ZeroMQ - PullRequest
       8

Вещание Python ZeroMQ

0 голосов
/ 29 апреля 2018

Я собираюсь внедрить Практическую Византийскую Отказоустойчивость (PBFT).

Следовательно, у меня будет несколько процессов, P0 собирается инициализировать раунд, отправив первое сообщение.

Можно ли передать сообщение всем другим процессам, используя ZeroMQ?

С PUB/SUB мне нужно связать / соединить сокеты. Но я собираюсь взять число процессов в качестве аргументов, кажется нецелесообразным подключать все остальные порты (я не знаю, возможно ли это?!). Я не мог написать какой-либо код, так как я застрял в начале.

В принципе, если я найду способ соединения процессов, я сделаю это:

Заявитель выбирает случайное сообщение m и отправляет его всем валидаторам. По получении каждый валидатор отправляет сообщение другим валидаторам и заявителю. Если валидатор (или автор предложения) получает как минимум 2 тыс. Сообщений от другого процессы, которые идентичны его собственным, он переходит к следующему раунд алгоритма консенсуса.

Еще одно дополнение: процессы будут напрямую взаимодействовать друг с другом. Но соединиться со всеми другими сокетами процессов с помощью REQ / REP не очень разумно.

1 Ответ

0 голосов
/ 29 апреля 2018

Можно ли передать сообщение всем другим процессам, используя ZeroMQ?

Да, конечно.

Именно для этого и были разработаны все средства обмена сообщениями и сигнализации, такие как ZeroMQ, nanomsg и другие.

Прелесть и хитрость PBFT в том, что там должна быть нулевая точка отклонения, должно быть там?

Таким образом, любой другой подход, но циркулярное сообщение, фактически отправляемое и доставляемое один за другим, не поможет PBFT, не так ли?

Не стесняйтесь набросать решение, отображение портов не будет вашей главной проблемой в этом. ZeroMQ может очень гибко .bind() / .connect(). Можно даже создать специальную, непостоянную настройку подключения аналогичным образом, если порты действительно являются дефицитным ресурсом, поэтому наберитесь смелости и приступайте к работе :o)

...