Существует ли передовое решение для самостоятельной сборки набора одноранговых узлов? - PullRequest
1 голос
/ 22 февраля 2011

У меня есть сеть узлов с учетом следующих свойств:

  • Глобальный набор содержит N узлов.
  • Каждый узел способен обнаружить X соседей, где X << N. </li>
  • Обнаружение соседа является однонаправленной операцией (то есть сосед не обязательно знает, что он обнаружен, и можетне обнаружить исходный узел).

Мне нужно, чтобы эти узлы самостоятельно собрали эффективную топологию сети, так чтобы все узлы могли взаимодействовать с минимальным количеством прыжков (мне интереснов прагматическом минимуме, а не в теоретически оптимизированном минимуме, если для решения требуется дополнительная сложность).Это уже общепризнанная проблема?То есть есть ли стандартное решение для наилучшей практики?

Если бы я собирал узлы вручную, я бы, вероятно, создал бы иерархию с некоторыми узлами, действующими как шлюзы между другими группами узлов.Тем не менее, я не совсем уверен, каков наилучший подход к самосборке этих узлов;топология группы / иерархии не является обязательным требованием, это просто интуитивный пример.

Обратите внимание, что я не ищу эффективный алгоритм маршрутизации сообщений после того, как топология будет на месте (хотя я, конечно, хотел бы, чтобы топологиябыть максимально эффективными и для каждого узла использовать как можно ближе к X каналам связи).

1 Ответ

1 голос
/ 22 февраля 2011

Звучит так, будто вы ищете Таблица распределенного хеша .Несмотря на название, их можно использовать не только для хранения данных - они служат общей сеткой маршрутизации с O (log n) ожидаемыми скачками для маршрутизации сообщений между любыми двумя узлами.

Хотя основы остаются прежними,Есть по крайней мере несколько различных подходов к их реализации;Вы, вероятно, захотите проверить Kademlia и Chord в качестве примеров.Kademlia проще в реализации, но фокусируется на хранении и поиске данных;Аккорд более сложный, но более универсальный.

...