Мне нужно создать одноранговую сеть с общим доступом к файлам (без центрального сервера).
Я прочитал много информации по теме.Требуется убедиться, что каждый узел в сети хранит полный список других узлов и полный список всех файлов в сети.
Я знаю, что это не самый лучший способ сделать это, но это требование, так что ... Другое (на мой взгляд, странное) требование состоит в том, что связь между узлами должна быть реализована с использованием протокола HTTP и JSON-serialized.
Это означает, что каждый узел будет выступать в качестве веб-сервера, а также будет иметь возможность подключения к любому другому узлу.
Поэтому я хочу знать хороший способ доставки сообщения.от одного узла ко всем другим без единого узла для непосредственного подключения к другим (слишком много подключений).
Я искал способ как-то маршрутизировать сообщение на несколько уровней, чтобы трафик был несколько распределен.Как я знаю и могу подключиться к любому одноранговому узлу в сети, я могу эффективно построить маршрут перед отправкой сообщения, а затем сказать некоторым партнерам, чтобы он перенаправил его.Но как мне найти лучший маршрут?И что произойдет, если есть прослушиваемый одноранговый узел, который не может перенаправить сообщение?
РЕДАКТИРОВАТЬ: Извините, если я не прояснил это.Сообщение должно быть получено ВСЕМИ узлами сети, а не только одной целью.
РЕДАКТИРОВАТЬ 2: Вы можете думать о том, что я хочу сделать, как сеть веб-серверов.Они должны иметь возможность хранить данные распределенными (не является частью вопроса), но каждый из них должен знать, какие ресурсы доступны в сети (хеш-таблица).Клиент может загрузить материал на один из серверов (неважно, какой).Когда это происходит, ВСЕ другие должны знать об этом изменении, чтобы обновить свои хеш-таблицы.То же самое применимо, если новый сервер присоединяется к сети.Мой вопрос заключается в том, как распространять это сообщение без единого сервера для подключения ко всем остальным, что, несомненно, будет генерировать большой трафик на одном сервере.