【TomP2P】基于P2P的分布式存储框架

P2P技术已经不是一个新的技术了,我们早就已经感受到了迅雷、快播等P2P软件带来的极致下载体验,近些年新起并大热的区块链技术,又让P2P技术换发第二春。相对于集中式的软件架构,P2P网络在数据共享、带宽利用,以及隐私保护等方面体现了较大的优势,并且某些视频播放软件,在集中式软件架构基础上混合P2P能力加持,实现了节省带宽、优化播放体验的效果。

TomP2P介绍

TomP2P是一个使用Java实现的开源的P2P框架,采用的是Apache 2.0 License开源协议,这个对于Java开发者来说可以说是相当友好了。利用TomP2P可以快速实现一个P2P网络,一方面他帮开发者屏蔽了P2P中的很多技术细节,另一方面他又提供了可读性可扩展性极强的API,方便开发者们对其进行扩展,通过扩展可以轻松实现丰富的自定义功能。

注:TomP2P官网(可能需要科学上网):https://tomp2p.net/

P2P网络(来自:https://bihu.com/article/826950)

TomP2P项目早在2004年便已启动,受限于当时Java版本,最早的版本,TomP2P底层通讯使用的BIO(阻塞式IO),现在来看已经是比较落后的方式。之后的版本使用了Apache MINA,届时,在异步通讯方面得到了极大的改进,但还并不是很完善。直到最后采用了Java最流行的网络通讯框架Netty,且一并统一了内部的编程规范(利用Future机制,大量采用了异步编程的方式),并保持至今;从本系列文章中摘录的大量的TomP2P源码中也不难看出这个特点,如果你对Netty相当了解的话,那阅读本系列中的代码,甚至是TomP2P的源码将不是一件难事。

注:在这里推荐一个不错的学习java并发编程和网络编程的网站:并发编程网

TomP2P目前大量使用在学术方面的项目和研究中,并且很多学术论文都基于此,但欠缺的是稍有真正商用落地的项目,并且相关的性能报告也难以找到 ,故此TomP2P的可靠性还有待检验。以下是使用TomP2P的一些项目:

  • Hive2Hive
  • LiveShift
  • DRFS
  • P2PFastSS
  • PeerVote
  • PSH/CompactPSH
  • P2P-PTT, a P2PSIP based PTT service

特性列表

  • 已使用Java6版本特性,并使用Netty NIO实现DHT(分布式哈希表)
  • 基于XOR迭代路由方式实现类似Kademlia的DHT算法
  • 已实现标准的DHT get() put() 方法
  • DHT框架支持扩展,并已扩展实现了putIfAbsent(), add(), send(), digest()等方法
  • 布隆过滤器
  • 支持节点之间数据备份,包括间接、直接两种方式
  • 混合的分布式tracker
  • 基于Key-pair签名和验签机制,实现数据防篡改保护
  • 通过UPNP和NAT-PMP机制实现端口映射(需要设备支持)
  • 支持IPV6
  • 异步编程框架

下载TomP2P

方式一:Maven依赖

由于TomP2P的jar包没有上传中心仓库,所以在pom.xml文件中添加特定的仓库配置


  
    tomp2p.net
    http://tomp2p.net/dev/mvn/
  

然后再添加TomP2P的maven依赖


  net.tomp2p
  tomp2p-{module}
  5.0-Beta8

注:5.0-Beta8版本是最新的稳定版本,发布于2015年,目前源码已经很少有更新了,但框架功能已基本完善,开发者可根据自己需要下载源码进行修改和扩展

方式二:下载完整发布包

tomp2p-all-5.0-Beta8-dist.zip

方式三:下载源码自行打包

源码地址:https://github.com/tomp2p/TomP2P

TomP2P Github

注:当前最新源码可能有编译错误,建议切到5.0-Beta8版本对应的tag进行修改和打包,github上也有对应版本的完整发布包下载入口

你可能感兴趣的:(【TomP2P】基于P2P的分布式存储框架)