моделирование p2p и распределенная хеш-таблица

#hashtable #p2p #dht

#хэш-таблица #p2p #dht

Вопрос:

Я изучаю архитектуру p2p с помощью моделирования на одной машине. Для этого мне сказали, что я могу использовать именованные каналы. Я нахожусь на стадии проектирования моделирования. Вот как я планирую двигаться дальше:

  1. Создайте одноранговую программу, способную подключаться к «сети» p2p. Сеть представляет собой совокупность таких одноранговых узлов. Одноранговый узел идентифицируется по идентификатору процесса на компьютере.

  2. Когда одноранговый узел создается, т.е. присоединяется к сети, он объявляет о своем прибытии посредством самонастройки на «главный узел» или трекер. Когда одноранговый узел объявляет о своем прибытии, главный узел обновляет свой список одноранговых узлов (идентификаторы процессов) и возвращает список одноранговых узлов, доступных в сети, новому одноранговому узлу.

  3. После подключения к сети одноранговый узел теперь может загрузить файл из сети или загрузить файл в ответ на входящий запрос на файл, который у него есть. Файлы, которые одноранговый узел получает по сети, автоматически становятся доступными для загрузки.

  4. Чтобы загрузить файл, одноранговый узел вызывает алгоритм определения местоположения, который определяет местоположение однорангового узла по файлу, который текущий одноранговый узел пытается загрузить.

Как вы можете видеть, в моем понимании дизайна есть пробел. Исходя из моего наивного подхода, я рассматриваю # 2 и # 3 как разные шаги. Однако у меня такое чувство, что они должны быть как-то связаны. Я предполагаю, что моему пониманию не хватает понимания того, как работает распределенная хэш-таблица и алгоритм, такие как Chord или CAN. Мне нужна помощь в обобщении этих разрозненных идей, которые помогут мне реально реализовать симуляцию.

Для начала мой первый вопрос: где и как мне запустить алгоритм определения местоположения? Или где находится распределенная хэш-таблица, созданная с помощью шагов, перечисленных выше?

Ответ №1:

У вас есть выбор либо реализовать сервер отслеживания в стиле Napster. Или вы можете реализовать узлы с поддержкой DHT в стиле Bit torrent.

В первом случае трекер отслеживает все узлы и файлы, которые они размещают.

И в последнем случае каждый узел отслеживает информацию (в данном случае предполагается, что по крайней мере один одноранговый узел в сети). Затем новый одноранговый узел свяжется с одним из одноранговых узлов, поддерживающих DHT, и получит информацию об узле, на котором размещен требуемый файл.

Комментарии:

1. Спасибо вам за ответ. Думаю, мне нужно будет решить, какую из них реализовать в моей симуляции. Маршрут Napster звучит проще. Есть предложения?