Gitee + 区块链:基于 IPFS 的 Git 分布式存储技术探索

来源: OSCHINA
编辑: Gitee
2019-10-31

Gitee 团队一直在探索去中心化的存储技术,甚至是建立于区块链上的完全去中心化的存储,以为开发者提供更安全、稳定的代码托管环境,为此我们一直在跟踪和研究两大核心技术问题,一是去中心化的底层存储技术,二是适用的高效共识算法。

一、去中心化的底层存储协议

在底层存储协议方面, Gitee 团队深入研究了 IPFS 协议,同时在探索 IPFS 协议作为底层存储技术在实现去中心化代码托管的落地可行性和优缺点。

IPFS(InterPlanetary File System - 星际文件系统)是一个基于内容哈希寻址的点对点的超媒体分发协议,2014 年开始由 Protocol labs在开源社区下推动发展,目前已经提供了基于 Golang 的开源实现(详情请访问:https://github.com/ipfs/ipfs),站在存储角度,IPFS 具有如下主要特点:

1. 去中心化存储,相对目前的基于 HTTP 的中心化存储网络,去中心化存储可以避免大型中心服务器的单点故障的问题。

2. 基于内容寻址,IPFS 的内容定位不在通过URI的形式,而是通过内容的唯一 hash 进行定位得到内容的存储地址。

3.天然抵抗 DDOS,基于其去中心化和内容寻址的特点,IPFS 网络具备天然抵抗 DDOS 的特性。
 

4.减少存储冗余,IPFS 会对文件按照一定的尺寸进行拆分,然后对每个分片计算 hash,对于相同 hash 的分片只会存储一份,对于有大量重复文件的场景,这会大大的减少存储的冗余。

5.天然的 CDN,IPFS 是一个基于 p2p 的去中心化网络,任何一个节点均可作为入口节点,再结合其分片存储的功能,这让 IPFS 网络具备天然的内容加速功能。

6. 自动版本管理,IPFS 的实现中默认内置了 Git 的实现,从而实现存储的版本化管理。

IPFS 的特性拓展 Gitee 代码存储的想象空间,近期,我们测试了 IPFS 在文件存储的方面的性能,发现其目前的 Golang 实现版本在私有 IPFS 存储网络的情况下,性能相比目前的基于 S3 协议的对象存储不相上下,大文件存储(大于等于 1G)方面性能比 S3 协议甚至更优,这对我们的存储技术探索之路来说,是值得振奋的消息。

二、共识算法

关于共识算法方面,Gitee 团队研究对比了几个前沿的区块链存储项目,例如:Filecoin, Blockstack, Storj 等,也在测试他们各自的共识算法以便于找到或改进得到更适合 Gitee 去中心化代码托管环境的共识机制。

Gitee 团队持续加大对此方向的研究,包括研发和测试用于代码托管的公链,并持续分享相关的探索成果。

更多关于码云 Gitee 的资讯请关注公众号:

展开阅读全文
23 收藏
分享
加载中
精彩评论
区块链不是去中心化,只是弱中心化
2019-10-31 11:26
4
举报
我也是一直在关注,现在就是求一个好的界面客户端。
有了UI的终端,才能普及,而不是仅仅是爱好者的玩物。
2019-10-31 11:23
1
举报
如果中途增加节点,这个分片会用怎样的算法把这个节点增加进已有的分片中
2019-10-31 09:38
1
举报
最新评论 (15)
个人感觉不应该用IPFS,原因如下:
1. 挖矿本是一种资源的浪费,而且并没有创造价值。
2. 应该鼓励存储冗余。
减少存储存在风险。文件单分片存储更易引起哈希碰撞;单点故障会引起若干文件不可用,因为若干文件的唯一分片在一个节点上。
存储冗余更加安全高效。按文件生成hash大大减少的碰着的几率;因为多节点存储,单点故障不影响文件的可用性。
3. 版本管理冲突,IPFS 的实现中默认内置了 Git 的实现,从而实现存储的版本化管理。
4. IPSF是分享者买单,这并不合理,应该是分享者获益。分享者做出了贡献,贡献价值体现在传输,传输越多价值越大,这才是目前互联网的实际情况。
5. 不是任何节点都可以加入,因为上行下行网速是不一样的,个人IP上行速度很慢,不适合组网。
2019-12-05 17:44
0
回复
举报
既然对于相同 hash 的分片只会存储一份,那是怎么抵抗单点故障问题的?
2019-11-08 11:33
0
回复
举报
这样就可以把自己的代码无情的甩在别人的硬盘上还不用掏钱了?
2019-11-06 15:47
0
回复
举报
ipfs还是测试版本,还不能用于生产吧
2019-11-01 07:05
0
回复
举报
现在我不理解区块链,究竟区块链的数据是存在中心服务器?还是存在那里?
2019-10-31 17:07
0
回复
举报
ipfs有实践经验
2019-10-31 13:46
0
回复
举报
区块链不是去中心化,只是弱中心化
2019-10-31 11:26
4
回复
举报
我也是一直在关注,现在就是求一个好的界面客户端。
有了UI的终端,才能普及,而不是仅仅是爱好者的玩物。
2019-10-31 11:23
1
回复
举报
以前玩过ipfs一段时间,发现上传了的文件很难删除,不知道这点现在有没有改善了
2019-10-31 10:38
0
回复
举报
ipfs本来就是为了干掉404,文件没有删除的概念,除了未被ding住的文件,其他的都不可被删除!
2019-10-31 16:01
0
回复
举报
如果中途增加节点,这个分片会用怎样的算法把这个节点增加进已有的分片中
2019-10-31 09:38
1
回复
举报
ipfs目前的实现中还不带负载和数据存储的路由,一般都是定向存储,roadmap里面提到了会分片分散,类似于均衡存储!
2019-10-31 16:02
0
回复
举报
更多评论
18 评论
23 收藏
分享
返回顶部
顶部