基于P2P的分布式网络存储服务

团队介绍

基于P2P的分布式网络存储服务

光大科技有限公司智能云计算部运维服务团队光大e信项目组,致力于为全集团员工提供信息共享、工作协同的一站式移动办公服务平台,助力集团进行战略数字化转型。团队拥有经验丰富的互联网技术研发人员,在自主研发创新项目中不断总结技术经验,不定期进行原创技术文章和实践经验分享,共同去探索如何更好地去进行大型金控集团数字化战略转型IT信息建设。

1

背景介绍

基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务

什么是分布式网络存储?

分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落

名词解释:

P2P: 对等网络 Peer to Peer,每个节点,既是服务端,也是客户端

peer: n.同辈,同龄人

基于P2P的分布式网络存储服务

传统C/S架构有哪些问题?

资源存储在服务端,对服务器存储空间、服务器IO性能要求高,客户端的网络资源没有得到充分利用

2

基于P2P的分布式网络存储服务

定位问题:寻找节点上的文件

什么是定位问题?

? 如何存取一个文件(分布式网络存储系统中的成员/节点)?

? 存文件:存在哪个计算机上?

? 取文件:怎么定位该文件?

分布式环境下存储文件有哪些定位方案?

? 基于目录/索引的定位机制

? 基于洪泛查询的定位机制

? 基于哈希的分布式映射定位机制

分布式网络存储系统以及关键问题

基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务

3

定位方案

基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务

基于目录的定位机制—— Napster 1999年首次提出

基于P2P的分布式网络存储服务

? 索引存放在集中式服务器上

    索引包括文件名、网络地址

   用户在服务器上注册,并且提供共享的文件列表

? 文件存储在各个节点(用户)中

Napster文件分享过程

? 用户向Napster服务器上传文件列表

? 服务器记录文件信息及其所在的网络位置IP地址

Napster文件下载过程

? 用户向服务器查询文件

? 服务器返回文件所在机器的IP地址

? 文件被直接从所在机器传送给用户

Napster缺点

? 服务器的单点失败问题

什么是单点失效?

举个简单例子就是:网站就一台服务器,当这台服务器挂了,网站就没办法访问了

如何避免单点失效?

打造高可用(不易宕机),高性能(支持大规模并发),可以伸缩(压力大时增加服务分摊压力,压力小时关闭部分服务,节约资源)的服务器集群

? 服务器容易受到拒绝服务攻击DoS

DoS是Denial of Service的简称,即拒绝服务,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击

带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过

连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求

4

基于P2P的分布式网络存储服务
基于P2P的分布式网络存储服务

基于洪泛查询的定位机制 Gnutella

名词解释:

洪泛:洪水泛滥之意

特点:

? 没有集中式服务器

? 没有索引

? 文件存储在各个节点上

定位过程

? 用户将文件请求发送给邻居

? 如果邻居可以响应该请求,那么邻居就响应;否则邻居将该请求转发给自己的邻居

? 一旦定位用户请求的文件后,相关的节点直接将文件传输给用户

洪泛查询问题

洪泛过渡:请求在网络中无法找到目的地址,像死循环一样消耗网络资源

如何解决洪泛过度?

? 向查询请求中在网络层首部设置 Time To Live(TTL)

TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8bit字段

TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64

如何设置合理的TTL?

? TTL设置过大,没有解决洪泛问题

? TTL设置过小,找不到文件

基于P2P的分布式网络存储服务

Gnutella优点

没有中心点,不容易出现单点失败导致的系统瘫痪故障,不容易受到DoS攻击

Gnutella缺点

洪泛查询方式,消耗网络资源

基于哈希的分布式映射定位机制

 Chord 2001年由MIT提出

什么是Chord?

Chord是一个算法,也是一个协议。作为一个算法,Chord可以从数学的角度严格证明其正确性和收敛性;作为一个协议,Chord详细定义了每个环节的消息类型。当然,Chord之所以受追捧,还有一个主要原因就是Chord足够简单,3000行的代码就足以实现一个完整的Chord

一致性hash算法原理

基于P2P的分布式网络存储服务

Chord的文件映射机制

? 把每个节点的网络地址映射在Hash环上

1.计算每个节点网络地址的Hash值

2.把地址Hash值映射在Hash环上

? 把文件信息映射在Hash环的节点上

1.计算每个文件信息的Hash值

2.把文件hash值映射在上面同一个Hash环上

3.把文件Hash值映射在具体节点上

Chord例子

10个节点,5个文件

? 计算每个节点网络地址的Hash值

每个节点按照自己网络地址(e.g.IP地址+端口号),计算各自Hash值

· 节点1的网络地址的Hash值为1, 表示为N1

· 节点2的网络地址的Hash值为8,表示为N8

· ….

· 节点10的网络地址的Hash值为8,表示为N56

? 把地址Hash值映射在Hash环上

基于P2P的分布式网络存储服务

? 计算每个文件信息的Hash值

文件1的Hash值为10,表示为 K10

文件2的Hash值为24,表示为 K24

文件3的Hash值为30,表示为 K30

文件4的Hash值为38,表示为 K38

文件5的Hash值为54,表示为 K54

? 把文件hash值映射在上面同一个Hash环上

基于P2P的分布式网络存储服务

? 写出节点和文件的映射表

(K10,N14)

(K24,N32)

(K30,N32)

(K38,N38)

(K54,N56)

Hash环文件查找定位

? 顺序方案

如果每个节点记录保持自己与空间环上紧邻的前驱peer和后继peer的两个网络连接,如此就可以形成一个网络环,采用的数据结构:循环双向链表

优点:插入、删除维护方便

缺点:查询慢

基于P2P的分布式网络存储服务

任何节点的查找请求,如果沿Chord环一圈,肯定能够找到相关的文件,时间复杂度是O(N),N为网络节点数

基于P2P的分布式网络存储服务

Chord : Finger table方案

? 基本出发点

让每个节点有规律地多存储一些Chord环中的信息,这样可以加快查找文件的速度

? 方案

每个节点都存储O(log(n))条记录,各自形成一个自己的Finger table

? 例如

m=6 ,节点 N8 存储 空间8+1, 8+2, 8+4,8+8,…,8+32 的实体网络地址信息

基于P2P的分布式网络存储服务

? 查找过程

节点N8查找文件K54

基于P2P的分布式网络存储服务

? 时间复杂度

O(logN),N为网络节点数,以空间换时间(每个节点多维护了Finger Table)

联想

? 看完了Chord设计思路,笔者联想到redis中实现zset这种数据类型采用的数据结构—跳表,同样采取的是空间换时间的思路加速查询

? redis集群如何保证key均匀地分布在不同的节点,且能够适应增加、删除节点?

通过一致性hash算法,可以点击下方链接查看更多:

https://www.zsythink.net/archives/1182

总结

基于P2P的分布式网络存储服务

本文从分布式网络存储系统的定位问题,引出3种解决方案,分别是基于目录/索引的定位机制、 基于洪泛查询的定位机制、基于哈希的分布式映射定位机制,以及3种方案对应的实现方法。

作者:刘思远

● 走进MPLS VPN

● 全业务链故障演练平台

● 浅谈云计算之ELB(弹性负载均衡)

● RabbitMQ高可用镜像队列集群

微信公众号EBCloud

感谢您的关注!

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32703.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:29
Next 2024年4月2日 下午3:29

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注