Я хочу построить децентрализованную систему, похожую на Reddit, используя P2P.На какой существующей библиотеке p2p я должен ее основывать? - PullRequest
11 голосов
/ 10 апреля 2011

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

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

Ответы [ 3 ]

6 голосов
/ 12 апреля 2011

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

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

EDIT

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

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

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

4 голосов
/ 18 апреля 2011

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

РЕДАКТИРОВАТЬ для комментария static_rtti :

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

1 голос
/ 24 октября 2012

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

Секретным соусом для CouchDB является протокол репликации Мастер-Мастер, который позволяет распространять информацию как вирус. Когда я присутствовал на первом CouchConf, они продемонстрировали, насколько это эффективно, устроив «вечеринку кушетки» (где у вас есть комната, полная людей, реплицирующихся на человека, который рядом с ними, имитирующий специальную сеть).

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

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

...