Изучение протокола BitTorrent для распределенной одноранговой координации, вероятно, было бы хорошим началом: http://www.bittorrent.org/beps/bep_0003.html
Другими системами для исследования могут быть сеть с распределенной анонимностью Tor и служба имен Интернета Windows (WINS). Все они в некоторой степени связаны с открытием и координацией со стороны сверстников.
Вероятно, самая сложная часть настройки кластера P2P - найти надежный способ для нового однорангового узла обнаружить одноранговый кластер. Использование предопределенного номера порта TCP было бы началом, но распадается, когда этот порт уже используется каким-либо другим процессом. Вы можете использовать широковещательную рассылку UDP, чтобы выяснить, есть ли какие-либо одноранговые узлы, но это не пройдет через ваш первый прыжок маршрутизатора, так как маршрутизаторы обычно фильтруют широковещательные сообщения, чтобы предотвратить шторм распространения широковещательной передачи. Вы можете использовать централизованный трекер / диспетчер, но это становится единой точкой отказа для всего однорангового кластера.
Топология сети также повлияет на ваш подход к обнаружению. Если все узлы будут находиться в одном сегменте сети или за одним и тем же брандмауэром, вы можете сделать что угодно. Если некоторые из пиров находятся за брандмауэром, вы не можете инициировать соединение с ними через брандмауэр - они должны инициировать соединение с вами или открыть входящий порт в брандмауэре с помощью UPNP.
Discovery - самая слабая часть системы BitTorrent. Если пользователь не знает, какой каталог торрента или URL трекера использовать, клиент торрента бесполезен. Как только вы найдете узел, любой узел в одноранговом кластере, найти остальных членов кластера относительно просто.
Если ваша коллекция процессов находится на одном физическом компьютере, вы можете использовать что-то вроде службы очереди сообщений, чтобы выступать в качестве стороннего арбитра между переходными процессами. В противном случае вы, вероятно, ожидаете, что один из процессов в группе пиров займет лидирующую позицию, чтобы отвечать на запросы на обнаружение и распространять список пиров среди других. Когда необходимо запустить ведущий процесс, он может передать ведущий одному из других одноранговых узлов, или одноранговые узлы могут переключиться на новый ведущий процесс, используя распределенный список одноранговых узлов. По сути это то, что служба имен Windows (WINS) делает для обнаружения имен NetBios.