是否有编写分散应用程序的框架?

时间:2015-03-26 12:17:01

标签: client-server distributed p2p bittorrent dht

如果我想为P2P应用程序(比如比特币,Bitorrent等)编写节点,那么有很多部分是相同的:

  • 我需要引导到网络(发现其他同行)
  • 我需要管理一个同伴列表,并监控他们的状态
  • 我需要从邻居
  • 中检索更多同伴的列表
  • 等等。

由于我不想重新发明轮子,他们是一个框架,我可以作为一种基础库来构建吗?

1 个答案:

答案 0 :(得分:0)

你提到了比特币和bittorrent,它们完全不同,所以我假设你不想受任何特定协议甚至序列化格式的束缚。

然而,您提到了高级别问题的对等发现和统计管理,可以在某些网络协议的上构建。 但该协议规定了这种机制如何运作。

听起来有点像你在询问是否有适合摩天大楼的预制屋顶以及木屋。

因此,如果你真的想设计自己的协议,你可能应该首先考虑基础。

  • 您想使用哪种语言
  • 可用的IO /事件处理库
  • 可用的协议解析器和序列化程序
  • 你的目标是吞吐量吗?内存占用少?低延迟?花费最少的程序员时间?
  • 需要什么样的安全性?在协议级别使用大量加密将需要一个值得信赖的加密库(不要自己动手!)
  • 你需要什么样的辅助东西(数据在哪里?文件系统?数据库?你需要一个UI吗?)

或者,根据人们如何解释您的问题,如果您想为特定网络编写客户端,那么您应该只是寻找一个实现该特定网络核心概念的库,同时释放您实施其余的申请 在bittorrent的案例中,这样的例子是libtorrent