11

我想使用 P2P 构建一个去中心化的、类似 reddit 的系统。基本上,我想保留 reddit 的基本功能,但使其去中心化,使其更加健壮且不受审查。这也将允许人们开发不同的客户端来匹配他们想要浏览它的方式。

你能推荐好的 p2p 库来作为我工作的基础吗?它们应该是开源的、跨平台的、强大的和易于使用的。我不太在乎语言,我可以适应。

4

3 回答 3

6

免责声明:警告,在这里自我宣传!!!

您是否考虑过 JXTA 的最新版本?对于您想要做的事情,这可能就足够了。另外,我们正在开发一个名为Chaupal的新 P2P 框架,但它还没有运行。

编辑

还有我称之为快速而肮脏的 UDP 解决方案(毕竟它不是那么肮脏,我应该称之为最小)。

  1. 只需使用公共地址实现一台服务器并开始侦听 UPD。
  2. 位于 NAT 后面的对等方与服务器联系,服务器可以从接收到的数据报中读取他们的私有 IP 地址是如何转换为公共 IP 地址的。
  3. 您将该信息发送回对等点,后者可以将其转发给其他对等点。服务器还可以帮助在对等点之间交换此信息。
  4. 然后,对等方可以通过将数据报发送到这些转换后的地址来直接(一对一)通信。

简单,易于实现,但不包括丢失的数据报、重放、乱序等……(即 TCP 在 IP 堆栈级别为您解决的典型问题)。

于 2011-04-11T20:51:24.267 回答
4

我还没有机会使用它,但Telehash似乎是为这种应用程序而设计的。Peer2Peer 应用程序在处理防火墙的限制方面面临着特殊的挑战……因为 Telehash 基于 UDP,它非常适合通过防火墙打孔。

编辑 static_rtti 的评论

如果代码速度是一个要求,那么libjingle会付出很多努力,但主要是针对XMPP. 您可以移植部分ICE代码,至少可以打孔。有关其实现的详细信息,请参阅libjingle 架构概述

于 2011-04-18T10:28:27.247 回答
1

查看 CouchDB。它是一个使用 HTTP API 的去中心化网络应用平台。人们用它来创建“CouchApps”,它们是分散的基于 CouchDB 的应用程序,可以病毒式传播到其他 CouchDB 服务器。编写 CouchApps 只需要知道 Javascript 并学习 CouchDB API。您可以阅读这本免费的在线书籍以了解更多信息:http: //guide.couchdb.org

CouchDB 的秘诀是 Master-to-Master 复制协议,它让信息像病毒一样传播。当我参加第一次 CouchConf 时,他们通过举办“Couch Party”展示了这是多么有效(在这种情况下,你有一个满屋子的人复制到他们旁边的人身上,模拟一个 ad hoc 网络)。

此外,默认情况下,使 CouchApp 工作的所有代码在称为设计文档的特殊实体中都是公开的。

PS我一直在考虑做一个类似的项目,但我目前没有太多时间投入到它上面。上帝加速我的孩子!

于 2012-10-23T23:59:24.840 回答