Я хочу создать децентрализованную, красноватую систему с использованием P2P. Какую существующую библиотеку p2p я должен использовать?

Я хочу создать децентрализованную, красноватую систему с использованием P2P. В принципе, я хочу сохранить основные возможности reddit, но сделать его децентрализованным, сделать его более надежным и невосприимчивым к цензуре. Это также позволит людям разрабатывать разные клиенты, чтобы они соответствовали тому, как они хотят его просматривать.

Не могли бы вы порекомендовать хорошие библиотеки p2p для моей работы? Они должны быть открытыми, кросс-платформенными, надежными и простыми в использовании. Меня не волнует язык, я могу приспособиться.

Ответ 1

Отказ от ответственности: предупреждение, самореклама здесь!!!

Рассматривали ли вы последний релиз JXTA ? Вероятно, этого достаточно для того, что вы хотите сделать. Кроме того, мы работаем над новой инфраструктурой P2P под названием Chaupal, но она еще не работает.

ИЗМЕНИТЬ

Есть также то, что я называю быстрым и грязным UDP-решением (которое в конце концов не так грязно, я бы назвал его минимальным).

  • Просто выполните один сервер с открытым адресом и начните прослушивание UPD.
  • Точки, расположенные за NAT, свяжутся с сервером, который может прочитать, как их частный IP-адрес был переведен в общедоступный IP-адрес из полученных дейтаграмм.
  • Вы отправляете эту информацию обратно партнеру, который может перенаправить его другим сверстникам. Сервер также может помочь обмениваться этой информацией между одноранговыми узлами.
  • Затем одноранговые узлы могут связываться напрямую (один к одному) путем отправки дейтаграмм на эти переведенные адреса.

Простая, простая в использовании, но не покрывающая потерянные дейтаграммы, повторы, неподходящие и т.д. (т.е. типичные вещи, которые TCP решает для вас на уровне стека IP).

Ответ 2

У меня не было возможности использовать его, но Telehash, похоже, было сделано для такого приложения. У приложений Peer2Peer есть особая проблема, связанная с ограничениями брандмауэров... поскольку Telehash основан на UDP, он хорошо подходит для дырочной штамповки через брандмауэры.

EDIT для комментария static_rtti:

Если скорость кода является обязательным требованием, libjingle прилагает много усилий, но в первую очередь ориентируется на XMPP. Вы можете отключить части кода ICE и, по крайней мере, получить перфорирование. Подробнее об их реализации см. В обзор архитектуры libjingle.

Ответ 3

Проверьте CouchDB. Это децентрализованная платформа веб-приложений, использующая HTTP API. Люди использовали его для создания "CouchApps", которые являются децентрализованными приложениями на основе CouchDB, которые могут распространяться в вирусной природе на другие серверы CouchDB. Все, что вам нужно знать, чтобы написать CouchApps - это Javascript и изучить CouchDB API. Вы можете прочитать эту бесплатную онлайн-книгу, чтобы узнать больше: http://guide.couchdb.org

Секретный соус для CouchDB - это протокол репликации Master-to-Master, который позволяет распространять информацию как вирус. Когда я посетил первый CouchConf, они продемонстрировали, насколько это эффективно, выбрасывая "Couch Party" (где у вас есть комната, полная людей, копирующих человека рядом с ними, имитирующего специальную сеть).

Кроме того, весь код, который делает работу CouchApp общедоступным по умолчанию в специальных сущностях, известных как Design Documents.

P.S. Я подумывал о том, чтобы сделать аналогичный проект, но у меня нет много времени, чтобы посвятить его в данный момент. БОГ СКОРОСТЬ МОЙ МАЛЬЧИК!