问题 我想使用P2P构建一个分散的,类似reddit的系统。我应该以什么现有的p2p库为基础?


我想使用P2P构建一个分散的,类似reddit的系统。基本上,我想保留reddit的基本功能,但要使其分散,以使其更强大并且不受审查。这也将允许人们开发不同的客户端以匹配他们想要浏览它的方式。

你能推荐一些优秀的p2p库作为我的工作吗?它们应该是开源的,跨平台的,强大且易于使用的。我不太关心语言,我可以适应。


5225
2018-04-10 14:00


起源

您应该查看分布式哈希表,有几种生产质量的实现。可能你不需要更多......还有:我非常喜欢你的想法;) - zerm
谢谢!我也喜欢这个想法,但这似乎是一项非常艰巨的任务......如果你有兴趣帮助我,你可以订阅reddit / r / decentralized。当想法变得清晰时,我会尝试招募更多的人。 - static_rtti
我警告你,历史上分布式的解决方案已经获得了很小的牵引力,并且市场上也充斥着reddit克隆。所以,你必须努力尝试推广它并注册足够的初始用户以保持势头。祝你好运! - Marcin
我应该补充一点,你的用户可能不会使用任何类型的罗马脚本,所以无论你做什么,确保unicode在整个过程中正常工作;也许还为人们提供了一个功能,可以过滤他们所看到的内容并通过正在使用的字符集进行搜索? - Marcin
我发现这个问题研究了同样的想法。你将面临的最大问题是人们试图游戏系统。集中管理,Reddit可以轻松确保每个评论和发布一个用户获得一票,并且主持人可以控制subreddits。根据定义,分散版本将没有权限的人。这并不是说这是不可能的,但这是一个你必须考虑的额外问题。 - Cerin


答案:


免责声明:警告,自我推销!!!

你考虑过JXTA的最新版本吗? 发布?它可能足以满足您的需求。另外,我们正在开发一个名为的新P2P框架 乔帕尔,但它还没有运作。

编辑

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

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

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


6
2018-04-11 20:51



感谢您的回答!我不会立即将其标记为被接受,因为我想为这个问题提供奖励,以尽可能多地关注它。另外,对于如何实现分散的,基于p2p的,类似reddit的系统,您有什么意见/建议吗? - static_rtti
你想要实现的是类似于FreeNet,所以我会看一下它的灵感。 - Jérôme Verstrynge
不,我想做的与freenet非常不同。 Freenet基本上是网络的匿名版本。我不太关心匿名。我的目标是允许人们以分散的方式交换这些链接上的链接和评论。 - static_rtti
我的意思是,当涉及到底层架构(不是用户看到的或应用程序提供的功能)时,您应该将通信级别与应用程序级别分开,这就是Freenet所实现的。您可以跳过匿名部分。 - Jérôme Verstrynge
自己用过JXTA,可以推荐:) - Jan Zyka


我没有机会使用它,但是 Telehash 似乎是为这种应用而做的。 Peer2Peer应用程序在处理防火墙的限制方面遇到了特殊的挑战...因为Telehash基于UDP,所以非常适合 打孔 通过防火墙。

编辑static_rtti的评论

如果要求代码速度 设的Libjingle 我有很多努力,但主要是面向 XMPP。你可以移除部分的  代码,至少得到打孔。见 libjingle架构概述 有关其实施的详细信息。


4
2018-04-18 10:28



看起来不错,谢谢你的回答!当我有空的时候,我会调查一下。 - static_rtti
该项目似乎有点死了...... - static_rtti
@static_rtti,我在上面回答。 - Mike Pennington


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

CouchDB的秘诀是Master-to-Master复制协议,它可以让信息像病毒一样传播。当我参加第一届CouchConf时,他们通过举办“沙发派对”(这是一个充满了复制到他们旁边的人模仿ad hoc网络的人的房间)来证明这是多么有效率。

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

附:我一直在考虑做一个类似的项目,但我现在没有太多时间专注于它。上帝加速我的男孩!


1
2017-10-23 23:59



谢谢,我一定会调查一下。 - static_rtti
没问题!如果你有任何问题随时问。我真的认为这是分散网站的理想解决方案。此外,还有可以嵌入到Android和iOS应用程序中的移动版CouchDB,这样您就可以随身携带网站。最后一点,我强烈推荐使用CouchDB进行“地面计算”的Google Tech Talk: googlecode.blogspot.com/2009/09/... - pokstad