我想使用 P2P 构建一个去中心化的、类似 reddit 的系统。基本上,我想保留 reddit 的基本功能,但使其去中心化,使其更加健壮且不受审查。这也将允许人们开发不同的客户端来匹配他们想要浏览它的方式。
你能推荐好的 p2p 库来作为我工作的基础吗?它们应该是开源的、跨平台的、强大的和易于使用的。我不太在乎语言,我可以适应。
我想使用 P2P 构建一个去中心化的、类似 reddit 的系统。基本上,我想保留 reddit 的基本功能,但使其去中心化,使其更加健壮且不受审查。这也将允许人们开发不同的客户端来匹配他们想要浏览它的方式。
你能推荐好的 p2p 库来作为我工作的基础吗?它们应该是开源的、跨平台的、强大的和易于使用的。我不太在乎语言,我可以适应。
免责声明:警告,在这里自我宣传!!!
您是否考虑过 JXTA 的最新版本?对于您想要做的事情,这可能就足够了。另外,我们正在开发一个名为Chaupal的新 P2P 框架,但它还没有运行。
编辑
还有我称之为快速而肮脏的 UDP 解决方案(毕竟它不是那么肮脏,我应该称之为最小)。
简单,易于实现,但不包括丢失的数据报、重放、乱序等……(即 TCP 在 IP 堆栈级别为您解决的典型问题)。
我还没有机会使用它,但Telehash似乎是为这种应用程序而设计的。Peer2Peer 应用程序在处理防火墙的限制方面面临着特殊的挑战……因为 Telehash 基于 UDP,它非常适合通过防火墙打孔。
编辑 static_rtti 的评论:
如果代码速度是一个要求,那么libjingle会付出很多努力,但主要是针对XMPP
. 您可以移植部分ICE代码,至少可以打孔。有关其实现的详细信息,请参阅libjingle 架构概述。
查看 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我一直在考虑做一个类似的项目,但我目前没有太多时间投入到它上面。上帝加速我的孩子!