Noizefan
@Noizefan

Какова архитектура P2P приложений?

Как устроена архитектура P2P приложений? Имею поверхностные знания, вроде того, что они не имеют центрального сервера и т.п.

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

Или всё таки, должны быть в сети какие-то доминирующие пиры? Тогда если они разом каким-то образом падают, вся система должна сама выбрать других доминантов?
  • Вопрос задан
  • 1725 просмотров
Решения вопроса 1
@nirvimel
Как устроена архитектура P2P приложений?

Идея, на которой построено большинство P2P сетей называется DHT (Distributed hash table) (рус), эталонной реализацией этой идеи является Kademlia (рус).

Каждому клиенту будет необходимо узнать адреса других клиентов. Как они смогут получить друг у друга актуальный список?

Не существует никакого общего списка, в котором были бы перечислены все пиры сети. Невозможно мгновенно (за один запрос) получить информацию об интересующем пире (существует ли он вообще? активен ли? каков его реальный IP для подключения), но эту информацию можно достать из сети за несколько запросов: Кто знает Х? Кто знает кого-то, кто мог бы знать X? Кто знает кого-то, кто мог бы знать кого-то, кто мог бы знать X? и.т.д.

Если приложение действительно децентрализованное, у него ведь не должно быть какого-то пира, который всегда будет знать список более актуальный, чем другие, верно?

Именно так.

Или всё таки, должны быть в сети какие-то доминирующие пиры?

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

Тогда если они разом каким-то образом падают, вся система должна сама выбрать других доминантов?

Их падение никак не повлияет на функционирование сети и уже подключенных к ней пиров. Но новые пиры "по холодному" не смогут подключиться никак, если ни один из "первоначальных" пиров не будет доступен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы