#hashtable #p2p #dht
#хэш-таблица #p2p #dht
Вопрос:
Я изучаю архитектуру p2p с помощью моделирования на одной машине. Для этого мне сказали, что я могу использовать именованные каналы. Я нахожусь на стадии проектирования моделирования. Вот как я планирую двигаться дальше:
-
Создайте одноранговую программу, способную подключаться к «сети» p2p. Сеть представляет собой совокупность таких одноранговых узлов. Одноранговый узел идентифицируется по идентификатору процесса на компьютере.
-
Когда одноранговый узел создается, т.е. присоединяется к сети, он объявляет о своем прибытии посредством самонастройки на «главный узел» или трекер. Когда одноранговый узел объявляет о своем прибытии, главный узел обновляет свой список одноранговых узлов (идентификаторы процессов) и возвращает список одноранговых узлов, доступных в сети, новому одноранговому узлу.
-
После подключения к сети одноранговый узел теперь может загрузить файл из сети или загрузить файл в ответ на входящий запрос на файл, который у него есть. Файлы, которые одноранговый узел получает по сети, автоматически становятся доступными для загрузки.
-
Чтобы загрузить файл, одноранговый узел вызывает алгоритм определения местоположения, который определяет местоположение однорангового узла по файлу, который текущий одноранговый узел пытается загрузить.
Как вы можете видеть, в моем понимании дизайна есть пробел. Исходя из моего наивного подхода, я рассматриваю # 2 и # 3 как разные шаги. Однако у меня такое чувство, что они должны быть как-то связаны. Я предполагаю, что моему пониманию не хватает понимания того, как работает распределенная хэш-таблица и алгоритм, такие как Chord или CAN. Мне нужна помощь в обобщении этих разрозненных идей, которые помогут мне реально реализовать симуляцию.
Для начала мой первый вопрос: где и как мне запустить алгоритм определения местоположения? Или где находится распределенная хэш-таблица, созданная с помощью шагов, перечисленных выше?
Ответ №1:
У вас есть выбор либо реализовать сервер отслеживания в стиле Napster. Или вы можете реализовать узлы с поддержкой DHT в стиле Bit torrent.
В первом случае трекер отслеживает все узлы и файлы, которые они размещают.
И в последнем случае каждый узел отслеживает информацию (в данном случае предполагается, что по крайней мере один одноранговый узел в сети). Затем новый одноранговый узел свяжется с одним из одноранговых узлов, поддерживающих DHT, и получит информацию об узле, на котором размещен требуемый файл.
Комментарии:
1. Спасибо вам за ответ. Думаю, мне нужно будет решить, какую из них реализовать в моей симуляции. Маршрут Napster звучит проще. Есть предложения?