CN104008152B - 支持海量数据访问的分布式文件系统的架构方法 - Google Patents
支持海量数据访问的分布式文件系统的架构方法 Download PDFInfo
- Publication number
- CN104008152B CN104008152B CN201410216506.6A CN201410216506A CN104008152B CN 104008152 B CN104008152 B CN 104008152B CN 201410216506 A CN201410216506 A CN 201410216506A CN 104008152 B CN104008152 B CN 104008152B
- Authority
- CN
- China
- Prior art keywords
- file
- node
- proposal
- nodes
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持海量数据访问的分布式文件系统的架构方法,该方法基于分布式哈希表,通过对文件路径进行哈希映射获取存取节点。采用完全分布式的无中心化架构设计,新节点通过若干次通信即可加入集群。节点间的寻址采用Kademlia算法,对路由表进行划分并通过异或运算得到节点间的距离以实现最近邻节点的跳转。通过PaxosLease算法选取领导者来处理映射到该节点的操作,以解决一致性问题。文件的实际数据则进行固定大小的分块存储,并冗余备份在若干个节点上,提供安全性以及分布式计算的需求。架构的系统在海量文件处理时能显著地提高处理效率,在较低延迟需求的环境中也可取得较好效果。
Description
技术领域
本发明涉及分布式文件系统研究领域,特别涉及一种支持海量数据访问的分布式文件系统的架构方法。
背景技术
随着互联网技术的发展,“云计算”正日益受人们重视,它是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等传统技术的融合而形成的一种新的面向用户的服务型产品概念。而“云存储”又是最为贴近普通网民的云服务之一。
早期的分布式文件系统,文件及其元数据信息没有做冗余备份,一旦其中某台服务器故障,则存储在该服务器上的文件就不可用。而且随着文件数量增加,系统也变得更为庞大,既难扩展也难管理。现代的分布式文件系统则更加注重元数据的分布策略,将文件元数据和数据存储分离,可以提高服务的并发性、可用性,并充分利用集群中实际数据存储机器的磁盘IO。
目前常见的分布式文件系统有GFS、HDFS、Lustre、MogileFS等,其各自适用于不同的领域。最活跃是Hadoop上的HDFS,其架构图如图8所示,其面向的是分布式计算,采用单一元数据服务器的架构,系统简单,适合较大的文件体积,通过追加方式写入的文件往往达到了成百上千GB,将文件进行分块存储。对于分布式数据处理、计算的场景来说,HDFS足够应付,并已有许多成功案例。但是其单个的主节点容易成为瓶颈,而且有单点失败的情况。MogileFS支持大量小文件的读写,可自动复制文件,但是不支持文件的随机读写,对数据库过度依赖,同样存在单点故障。Lustre采用对象存储技术,适合对大文件进行读写,其将大文件分片,通过存储节点上的RAID提供可靠性,故系统不提供多个副本的冗余备份。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种支持海量数据访问的分布式文件系统的架构方法,该系统借鉴了各种分布式文件系统的优点,其无中心化架构及冗余备份机制可向上层提供安全可靠的、高效的分布式文件存取服务以及海量的数据访问。
本发明的目的通过以下的技术方案实现:支持海量数据访问的分布式文件系统的架构方法,包括以下步骤:
(1)采用非阻塞的网络通信框架,在Linux系统中,采用epoll选择器。使系统在大量连接及高IO时仍有很高的性能;
(2)采用简单且高效的基于动态代理的远程过程调用(RPC,Remote ProcedureCall),降低系统复杂性;
(3)与传统的C/S架构类似,客户端通过API访问文件系统,集群中的节点通过以太网实现相互通信,每个节点负责维护路由表、元数据、文件数据。客户端连接任意一个已注册服务的节点即可实现对文件的操作;
(4)文件通过一致性哈希算法映射到相应的节点上,保证文件的分布与节点数目无关,节点的加入与退出对系统的影响和数据的迁移量降到最低,分布式哈希表采用Kademila算法,能最大限度的减少查找文件中的时间消耗;
(5)对大文件分块,文件的数据以及元数据都备份在3个不同的节点上,节点宕机后能迅速切换,保证数据的安全有效;
(6)完全分布式的结构在多个节点上都存在文件备份,对某个文件操作时需要判断真正可操作的备份。系统采用一种优秀的、可快速在多个节点中选举出领导者的算法PaxosLease,由领导者操作后再同步到其他备份。
上述方法的步骤(1)中所述的非阻塞网络通信框架,是基于Java的NIO库MINA,其提供支持TCP/UDP上抽象的事件驱动的API。其也是优秀的过滤器链和和多线程控制器模型,对数据包快速进行封装解包,并交给多线程控制器处理,MINA在完整的RPC调用中耗时约为0.5毫秒。
上述方法的步骤(2)中所述的远程过程调用的传统模式为三层:
(2-1)存根/框架(Stub/Skeleton)层:用于客户端存根(代理)和服务器端框架。
(2-2)远程引用(Remote Refference)层:用于远程引用行为。
(2-3)传输(Transport)层:用于连接的建立和管理,以及远程对象的跟踪。
Java自带的RMI框架内部过多的异常检查,传输时附带不必要的信息,存根的生成也使得代码的管理变得复杂,见图11。而动态的代理模式(见图6)在运行时根据需要动态的生成代理对象,将要调用的方法名、参数通过包装后发送给服务端,服务端接收到请求后查找已经注册的服务实体,调用实体的方法后对返回值和异常包装后发送给客户端。
上述方法的步骤(3)中所述的元数据参考Linux文件系统索引节点和GFS的思想,包括文件的子节点信息、文件大小、权限模式、数据块信息等,形成树形结构,系统中每个文件块的大小为64M,大文件被分块存储,并由文件元数据的块信息链表维护;文件操作API包括创建节点、判断是否存在、创建目录、删除、列出目录文件等与其他操作系统类似的操作。
上述方法的步骤(4)所述Kademila协议算法过程有:
(4-1)机器特征(如IP地址)和文件路径都通过哈希运算得到一个ID,本系统采用了快速且健全的64位CityHash算法,具有均匀、碰撞率低等特点。
(4-2)ID分布在264大小的环上,为寻找与当前key所映射到的ID最邻近的节点,需要计算到已知节点的距离。在Kademila算法中,两个ID间的距离通过异或运算得到:
d(x,y)=x⊕y
可以知道,异或运算是单向性的。对于任意给定的节点x和距离D,总会存在一个确定的节点y,使得d(x,y)=D;
(4-3)Kad路由表由称之为K桶的数据结构组成,K桶实际存放的是<K,V>对映射,每个K桶都有一个ID以及它所包含的ID值的距离范围。当插入的<K,V>对足够多时,K桶会分裂,在最终状态下一台机器的Kad路由表为64个。若某个K桶已满,则采用LRU算法替换,有利于临计节点的管理。
(4-4)Kad路由是一棵非平衡的线段二叉树,但是一个节点的Kad路由不会太大,查询的平均时间复杂度为O(logN),其操作分为插入、删除、查找最接近某ID值的一个。
上述方法的步骤(5)所述的大文件的分块策略参考HDFS中的分块策略,将大于64M的文件进行分块,默认每个分块为64M。每个分块都备份到邻近的3个节点上,文件的写入默认采用的是追加的方式,写入过程为链式的,每个节点接收到数据后向下一个节点传输,数据至少在第一个节点校验成功后认为写入成功,若有分块写入失败,则由检查数据备份的线程发起同步。
上述方法的步骤(6)所述PaxosLease算法具体如下:
当一个提案者(Proposer)提出一个议案,要想该议案获得批准,必须获得超过半数的决议者(Acceptor)的批准,才能同步到所有执行议案的人(Learner)手册上。决议者和消息传递的服务员并不是全职工作的(对应在分布式系统中节点、网络失效),我们认为只要超过半数(1+n/2)的决议者批准了议案,则该议案获得了通过。
其约束包括:
P1:一个决议者必须接受第一次收到的提案;
P2:一旦一个具有提案值v(提案值是每个提案必须具有的,比如现实中的税收提案,那么提案值可以是税收比率)的提案被批准,那么之后批准的提案必须具有值v。
批准一个提案值v意味着多个决议者接受了该值,因此,可以对P2进行加强:
P2a:一旦一个具有提案值v的提案被批准,那么之后任何决议者再次接受的提案必须具有值v。
由于通信是异步的,约束条件P2a和约束条件P1会发生冲突。如果一个提案值v被批准后,一个提案者和一个决议者从休眠中苏醒,前者提出一个具有新的提案值的提案。根据约束条件P1,后者应当接受,根据约束条件P2a,则不应当接受,这中场景下约束条件P2a和P1有矛盾。于是需要对提议者的行为进行约束:
P2b:一旦一个具有提案值v的提案被批准,那么以后任何提案者提出的提案必须具有值v。
约束条件P2b蕴涵了约束条件P2a,是一个更强的约束,但是难以实现,可以找到一个蕴涵约束条件P2b的约束P2c:
P2c:如果一个编号为n的提案具有提案值v,那么存在一个多数派,要么他们中所有人都没有接受编号小于n的任何提案,要么他们已经接受的所有编号小于n的提案中编号最大的那个提案具有提案值v。
本发明与现有技术相比,具有如下优点和有益效果:
(1)本发明借鉴了各种分布式文件系统的优点,如HDFS的文件分块,在此基础上提出基于哈希映射的分布式文件系统,使每个节点既作为数据访问节点,也作为元数据存储节点,克服传统的单点失败情形,既能提供服务,也能作为路由查询、跳转的中继节点,克服了元数据由单一节点维护的压力,无单点故障的问题,极大提高了系统的稳定性。
(2)本发明是完全分布式架构,每个节点都是廉价PC,充分挖掘其运算与IO能力,节点的退出对数据的迁移和系统的影响降到最低,节点的加入也非常灵活,具有很高的扩展性。
(3)本发明方法中一次文件操作的查找过程采用Kademila算法,所需要的时间是对数级的复杂度,能最大限度的减少查找过程中的时间消耗。对具体的3个副本中的操作通过PaxosLease选举领导者,可靠性强。两个阶段所有操作具有非常低的时间延迟。
附图说明
图1为本实施例两层系统架构示意图。
图2为本实施例RPC通信模型。
图3为本实施例文件数据写入中的传输通道示意图。
图4为本实施例Kademlia算法一次插入K桶的演示图。
图5为本实施例Kademlia算法中一次查找ID的示意图。
图6为动态代理示意图。
图7为本实施例PaxosLease算法一次竞争的过程示意图。
图8为现有技术中Hadoop文件系统HDFS架构图。
图9为MINA网络框架结构图。
图10为RPC结构框架图。
图11为Java自身的RPC框架(RMI)调用示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
本实施例所述支持海量数据访问的分布式文件系统所采用的硬件网络结构如图1所示,为两层系统架构,具体包括客户端和若干个服务器,每个服务器均包括名称节点(NameNode)和数据节点(DataNode),与传统的C/S架构类似,客户端通过API访问文件系统,集群中的节点通过以太网实现相互通信,每个节点负责维护路由表,元数据,文件数据。客户端可实现以下操作:A、连接到任意节点;B、连接到具体服务器。客户端通过连接任意一个已注册服务的节点即可实现对文件的操作。
本实施例所述的架构方法基于分布式哈希表,通过对文件路径进行哈希映射获取存取节点。此系统采用完全分布式的无中心化架构设计,新节点通过若干次通信即可加入集群。节点间的寻址算法采用了Kademlia算法,对路由表进行划分并通过异或运算得到节点间的距离以实现最近邻节点的跳转。通过PaxosLease算法选取领导者来处理映射到该节点的操作,以解决一致性问题。文件的元数据通过对文件绝对路径的哈希映射到所对应的节点,并存储在该节点上。元数据对象直接保存在内存中以提供访问服务,同时在硬盘上保存一份镜像以作故障恢复使用。文件的实际数据则进行固定大小的分块存储,并冗余备份在若干个节点上,提供安全性以及分布式计算的需求。该系统在海量文件处理时能显著地提高处理效率,在较低延迟需求的环境中也可取得较好效果。下面结合附图对具体的方法步骤进行描述。
一、本实施例采用基于Java的NIO库MINA,在Linux系统中,采用epoll选择器。MINA的网络框架图如图9所示。
二、采用简单且高效的基于动态代理的远程过程调用(RPC,RemoteProcedureCall),降低系统复杂性,RPC通信模型如图2所示。
所述的RPC传统模式为三层,如图10所示,包括:存根/框架(Stub/Skeleton)层:用于客户端存根(代理)和服务器端框架;远程引用(Remote Refference)层:用于远程引用行为;传输(Transport)层:用于连接的建立和管理,以及远程对象的跟踪。
三、与传统的C/S架构类似,客户端通过API访问文件系统,集群中的节点通过以太网实现相互通信,每个节点负责维护路由表、元数据、文件数据。客户端连接任意一个已注册服务的节点即可实现对文件的操作。
所述的元数据参考Linux文件系统索引节点和GFS的思想,包括文件的子节点信息、文件大小、权限模式、数据块信息等,形成树形结构,系统中每个文件块的大小为64M,大文件被分块存储,并由文件元数据的块信息链表维护;文件操作API包括创建节点、判断是否存在、创建目录、删除、列出目录文件等与其他操作系统类似的操作。例如在本实施例中建立的两个元数据INode和BlockInfo的数据结构分别为以下的结构,INode包括了fsVersion、path、type、mode、createTime、modifyTime、children、size、blockInfos等信息;BlockInfo包括了path、blocklength、offset、seqNum、replica等信息。
四、文件通过一致性哈希算法映射到相应的节点上,其中分布式哈希表采用Kademila算法,最大限度的减少查找文件中的时间消耗。
所述Kademila协议算法过程有:
(4-1)机器特征(如IP地址)和文件路径都通过哈希运算得到一个ID,本系统采用了快速且健全的64位CityHash算法,具有均匀、碰撞率低等特点。
(4-2)ID分布在264大小的环上,为寻找与当前key所映射到的ID最邻近的节点,需要计算到已知节点的距离。在Kademila算法中,两个ID间的距离通过异或运算得到:
d(x,y)=x⊕y
可以知道,异或运算是单向性的。对于任意给定的节点x和距离D,总会存在一个确定的节点y,使得d(x,y)=D;
(4-3)Kad路由表由称之为K桶的数据结构组成,K桶实际存放的是<K,V>对映射,每个K桶都有一个ID以及它所包含的ID值的距离范围。当插入的<K,V>对足够多时,K桶会分裂,在最终状态下一台机器的Kad路由表为64个。若某个K桶已满,则采用LRU算法替换,有利于临计节点的管理。
(4-4)Kad路由是一棵非平衡的线段二叉树,但是一个节点的Kad路由不会太大,查询的平均时间复杂度为O(logN),其操作分为插入、删除、查找最接近某ID值的一个。
结合附图4、5具体给出Kademila算法一次查找过程如下:
(1)K桶的分裂
每台机器都有一个Kad路由表,K桶实际存放的是<K,V>对映射。每个K桶都有一个ID以及它所包含的ID值的距离范围。当插入的<K,V>对足够多时,K桶会分裂。见图4。
(2)查找ID
设定:
节点ID | 路由信息 |
0 | 0,1,11,15 |
1 | 1,2,10,15 |
2 | 2,3,11,13 |
3 | 3,4,12,14 |
4 | 4,5,12,13 |
5 | 5,6,13,15 |
6 | 6,7,12,14 |
7 | 7,8,10,12 |
8 | 8,9,11,13 |
9 | 3,9,10,15 |
10 | 0,6,10,11 |
11 | 0,7,11,12 |
12 | 0,9,12,13 |
13 | 1,8,13,14 |
14 | 2,7,14,15 |
15 | 0,9,12,15 |
在本实施例中,需要从节点0出发,查找节点13,如上表所示,结合图5,查找过程如下:
a)在节点0,通过findNear(寻找邻近点)操作找到0、11、15这三个节点可能知道节点13。其中0已访问过,不再访问。
b)从节点11获取到0、11、12;从节点15获取到0、12、15。其中0、11、15这三个节点已经访问过,不再访问。剩余节点12作下一次跳转。
c)从节点12中获得了命中节点13,并获得了节点13的IP值。
由此可见,在Kad网络中进行ID查找所需的RPC请求次数不超过logN次,并且随着运行时间的增加,Kad的路由信息会更加丰富,邻近节点会更加清楚彼此的情况,而热门的远端节点也能得以信任并保存。在理想情况下,通过1到2次通信就能完成节点查找,这是其他DHT技术所不具备的优势。
五、对大文件分块,文件的数据以及元数据都备份在3个不同的节点上,节点宕机后能迅速切换,保证数据的安全有效。
所述大文件分块的策略参考HDFS中的分块策略,将大于64M的文件进行分块,默认每个分块为64M。每个分块都备份到邻近的3个节点上,如图3所示,文件的写入默认采用的是追加的方式,写入过程为链式的,每个节点接收到数据后向下一个节点传输,数据至少在第一个节点校验成功后认为写入成功,若有分块写入失败,则由检查数据备份的线程发起同步。
六、系统采用一种优秀的、可快速在多个节点中选举出领导者的算法PaxosLease,由领导者操作后再同步到其他备份。算法步骤如下:
当一个提案者(Proposer)提出一个议案,要想该议案获得批准,必须获得超过半数的决议者(Acceptor)的批准,才能同步到所有执行议案的人(Learner)手册上。决议者和消息传递的服务员并不是全职工作的(对应在分布式系统中节点、网络失效),我们认为只要超过半数(1+n/2)的决议者批准了议案,则该议案获得了通过。
下面结合附图7具体给出PaxosLease算法过程如下:
1)提案者希望获得一个T(T<M)秒的lease。首先它需要准备一个提案编号[request.ballotNumber],并发送到决议者的多数牌上。
2)决议者在接收到一个请求的时候,判断请求的提案编号[request.ballotNumber]是否大于本机状态中承诺的最大提案编号[state.highestPromised]。如果小于,决议者可以忽略请求或发送回一个拒绝响应。如果是等于或大于,决议者构造一个Prepare Response,其中包含了目前的已批准的决议[state.acceptedProposal],它为空或目前的leader。另外,决议者将本地的最高承诺编号设置为请求所带来的提案编号,并将最高承诺编号连同目前已接受的决议发回给提案者。
3)提案者检验从决议者发回的prepare response,如果决议者的多数派回复的已接受提案为空,表示它们可以接受一个新提案,提案者把自己当作lease的拥有者,也就是leader,并开启一个倒计时T,lease将在时间T之后失效。提案者将倒计时T、决议编号以及提案值组成propose request发送到所有决议者。
4)决议者在收到propose request后,检查编号[request.ballotNumber]是否大于本机状态所承诺的最大编号。如果小于,则忽略或回发一个拒绝响应。如果等于或大于,决议者接受提案:设置最大提案编号、启动倒计时T以及设置lease拥有者(leader)。然后,构造propose response并回发,其中包含了决议编号。在倒计时超时之后,本地状态的lease拥有者设置为空。除非系统重启,否则决议者不会重设他们的最高承诺编号。
5)提案者检验所回收的propose response,如果决议者的多数派回复接受提案,则提案者拥有lease直到在第3步设置的倒计时超时。提案者接收到多数派的回复时,将自己的状态转成“拥有lease”。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (8)
1.支持海量数据访问的分布式文件系统的架构方法,其特征在于,包括以下步骤:
(1)采用非阻塞的网络通信框架,在Linux系统中,采用epoll选择器;
(2)采用基于动态代理的远程过程调用;所述的远程过程调用的传统模式为三层:
(2-1)存根/框架层:用于客户端存根/代理、服务器端框架;
(2-2)远程引用层:用于远程引用行为;
(2-3)传输层:用于连接的建立和管理,以及远程对象的跟踪;
步骤(2)中所述的动态代理模式为:运行时根据需要动态的生成代理对象,将要调用的方法名、参数通过包装后发送给服务端,服务端接收到请求后查找已经注册的服务实体,调用实体的方法后对返回值和异常包装后发送给客户端;
(3)客户端通过API访问文件系统,集群中的节点通过以太网实现相互通信,每个节点负责维护路由表、元数据、文件数据;客户端连接任意一个已注册服务的节点即实现对文件的操作;
(4)文件通过一致性哈希算法映射到相应的节点上,分布式哈希表采用Kademila算法;节点间的寻址算法采用了Kademlia算法,对路由表进行划分并通过异或运算得到节点间的距离以实现最近邻节点的跳转;
(5)对大文件分块,文件的数据以及元数据都备份在若干个不同的节点上;所述对大文件分块的步骤为:将大于64M的文件进行分块,默认每个分块为64M;每个分块都备份到邻近的3个节点上,文件的写入默认采用的是追加的方式,写入过程为链式的,每个节点接收到数据后向下一个节点传输,数据至少在第一个节点校验成功后认为写入成功,若有分块写入失败,则由检查数据备份的线程发起同步;
(6)完全分布式的结构在多个节点上都存在文件备份,对某个文件操作时采用PaxosLease算法在多个节点中选举出领导者,由领导者操作后再同步到其他备份。
2.根据权利要求1所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,步骤(1)中所述的非阻塞的网络通信框架,是基于Java的NIO库MINA,其提供支持TCP/UDP上抽象的事件驱动的API,对数据包进行封装解包,并交给多线程控制器处理。
3.根据权利要求1所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,步骤(3)中所述的元数据参考Linux文件系统索引节点和GFS的思想,包括文件的子节点信息、文件大小、权限模式、数据块信息,形成树形结构,系统中每个文件块的大小为64M,大文件被分块存储,并由文件元数据的块信息链表维护;文件操作API包括创建节点、判断是否存在、创建目录、删除、列出目录文件的操作。
4.根据权利要求1所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,步骤(4)所述Kademila算法步骤如下:
(4-1)机器特征和文件路径都通过哈希运算得到一个ID;
(4-2)ID分布在264大小的环上,为寻找与当前key所映射到的ID最邻近的节点,需要计算到已知节点的距离,在Kademila算法中,两个ID间的距离通过异或运算得到:
<mrow>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi>x</mi>
<mo>&CirclePlus;</mo>
<mi>y</mi>
<mo>;</mo>
</mrow>
异或运算是单向性的,对于任意给定的节点x和距离D,总会存在一个确定的节点y,使得d(x,y)=D;
(4-3)Kad路由表由称之为K桶的数据结构组成,K桶实际存放的是<K,V>对映射,每个K桶都有一个ID以及它所包含的ID值的距离范围,当插入的<K,V>对足够多时,K桶会分裂,在最终状态下一台机器的Kad路由表为64个;若某个K桶已满,则采用LRU算法替换;
(4-4)Kad路由是一棵非平衡的线段二叉树,其操作分为插入、删除、查找最接近某ID值的一个。
5.根据权利要求4所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,步骤(4-1)中机器特征和文件路径都通过64位CityHash算法得到一个ID。
6.根据权利要求1所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,步骤(6)所述PaxosLease算法具体如下:
当一个提案者提出一个议案,要想该议案获得批准,必须获得超过半数的决议者的批准,才能同步到所有执行议案的人手册上;其约束包括:
P1:一个决议者必须接受第一次收到的提案;
P2:一旦一个具有提案值v的提案被批准,那么之后批准的提案必须具有值v。
7.根据权利要求6所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,对上述约束条件P2进行进一步约束:
P2a:一旦一个具有提案值v的提案被批准,那么之后任何决议者再次接受的提案必须具有值v;
同时,对提议者的行为进行约束:
P2b:一旦一个具有提案值v的提案被批准,那么以后任何提案者提出的提案必须具有值v。
8.根据权利要求7所述的支持海量数据访问的分布式文件系统的架构方法,其特征在于,约束包括:
P2c:如果一个编号为n的提案具有提案值v,那么存在一个多数派,要么他们中所有人都没有接受编号小于n的任何提案,要么他们已经接受的所有编号小于n的提案中编号最大的那个提案具有提案值v。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410216506.6A CN104008152B (zh) | 2014-05-21 | 2014-05-21 | 支持海量数据访问的分布式文件系统的架构方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410216506.6A CN104008152B (zh) | 2014-05-21 | 2014-05-21 | 支持海量数据访问的分布式文件系统的架构方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008152A CN104008152A (zh) | 2014-08-27 |
CN104008152B true CN104008152B (zh) | 2017-12-01 |
Family
ID=51368809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410216506.6A Expired - Fee Related CN104008152B (zh) | 2014-05-21 | 2014-05-21 | 支持海量数据访问的分布式文件系统的架构方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008152B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016051512A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
CN104317947B (zh) * | 2014-11-07 | 2017-12-12 | 南京烽火星空通信发展有限公司 | 一种基于海量数据的实时结构化数据比对系统 |
CN104462335B (zh) * | 2014-12-03 | 2017-12-29 | 北京和利时系统工程有限公司 | 一种访问数据的方法和服务器代理 |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
CN106557509A (zh) * | 2015-09-29 | 2017-04-05 | 镇江雅迅软件有限责任公司 | 一种分布式文件系统 |
CN105630973A (zh) * | 2015-12-25 | 2016-06-01 | 深圳市中博科创信息技术有限公司 | 集群文件系统文件存储的方法及集群文件系统 |
CN106210038B (zh) * | 2016-07-06 | 2019-01-29 | 网易(杭州)网络有限公司 | 数据操作请求的处理方法及系统 |
CN106708439A (zh) * | 2016-12-23 | 2017-05-24 | 深圳市中博科创信息技术有限公司 | 一种分布式文件系统中节点选择计算方法及系统 |
CN106709045B (zh) * | 2016-12-29 | 2020-09-15 | 北京同有飞骥科技股份有限公司 | 分布式文件系统中节点选择方法及装置 |
CN106686117B (zh) * | 2017-01-20 | 2020-04-03 | 郑州云海信息技术有限公司 | 一种分布式计算集群的数据存储处理系统及方法 |
CN106936899B (zh) * | 2017-02-25 | 2021-02-05 | 九次方大数据信息集团有限公司 | 分布式统计分析系统的配置方法及分布式统计分析系统 |
CN106789632A (zh) * | 2017-02-25 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种大规模分布式存储系统的节点路由的方法 |
CN110019501A (zh) * | 2017-08-24 | 2019-07-16 | 深圳市金证科技股份有限公司 | 一种数据采集方法、装置及终端设备 |
CN107832138B (zh) * | 2017-09-21 | 2021-09-14 | 南京邮电大学 | 一种扁平化的高可用namenode模型的实现方法 |
CN107613026A (zh) * | 2017-10-31 | 2018-01-19 | 四川仕虹腾飞信息技术有限公司 | 基于云存储系统的分布式文件管理系统 |
CN108319634B (zh) * | 2017-12-15 | 2021-08-06 | 深圳创新科技术有限公司 | 分布式文件系统的目录访问方法和装置 |
CN110071870B (zh) * | 2018-01-24 | 2022-03-18 | 苏宁云商集团股份有限公司 | 基于Alluxio的多HDFS集群的路由方法及装置 |
CN108462737B (zh) * | 2018-01-29 | 2021-02-02 | 哈尔滨工业大学深圳研究生院 | 基于批处理和流水线的分层数据一致性协议优化方法 |
CN110120961B (zh) * | 2018-02-06 | 2022-04-26 | 北京京东尚科信息技术有限公司 | 一种分布式服务集群及其路由同步的方法 |
CN109688211A (zh) * | 2018-12-18 | 2019-04-26 | 杭州茂财网络技术有限公司 | 数据分布式处理方法 |
CN109885550B (zh) * | 2018-12-28 | 2022-09-13 | 安徽维德工业自动化有限公司 | 一种基于全联通路由层的文件存储系统 |
CN111695018B (zh) * | 2019-03-13 | 2023-05-30 | 阿里云计算有限公司 | 数据处理方法及装置、分布式网络系统、计算机设备 |
CN110381157A (zh) * | 2019-07-26 | 2019-10-25 | 正链科技(深圳)有限公司 | 一种基于Kademlia算法的分布式定向数据存储P2P网络 |
CN113220644B (zh) * | 2021-05-28 | 2022-04-26 | 北京微纳星空科技有限公司 | 一种文件处理方法、装置、设备及存储介质 |
CN117851369B (zh) * | 2023-12-14 | 2024-11-26 | 天翼云科技有限公司 | 一种基于分布式存储系统的大数据存储访问方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI476610B (zh) * | 2008-04-29 | 2015-03-11 | Maxiscale Inc | 同級間冗餘檔案伺服器系統及方法 |
CN101840366B (zh) * | 2010-05-13 | 2012-05-23 | 上海交通大学 | 环链式n+1位奇偶校验码的存储方法 |
-
2014
- 2014-05-21 CN CN201410216506.6A patent/CN104008152B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及系统 |
Non-Patent Citations (2)
Title |
---|
"Kademlia协议资源定位模型的分析与改进";劳炽元;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110315;第I139-55页 * |
"Paxos 优化算法下的数据库元数据一致性方法研究";周一帆;《现代电子技术》;20130701;第36卷(第13期);第65-67,70页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104008152A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104008152B (zh) | 支持海量数据访问的分布式文件系统的架构方法 | |
CN111480157B (zh) | 用于在区块链网络中添加节点的系统和方法 | |
US10789217B2 (en) | Hierarchical namespace with strong consistency and horizontal scalability | |
US8533231B2 (en) | Cloud storage system with distributed metadata | |
Terrace et al. | Object storage on CRAQ: High-throughput chain replication for read-mostly workloads | |
US8805984B2 (en) | Multi-operational transactional access of in-memory data grids in a client-server environment | |
US9558194B1 (en) | Scalable object store | |
CN110730204A (zh) | 区块链网络中删除节点的方法和区块链系统 | |
US10922303B1 (en) | Early detection of corrupt data partition exports | |
JP2021508876A (ja) | 高性能分散型記録システムにおける同時トランザクション処理 | |
US11297031B2 (en) | Hierarchical namespace service with distributed name resolution caching and synchronization | |
EP3769230B1 (en) | Taking snapshots of blockchain data | |
CN111770149B (zh) | 基于分布式存储的新型联盟链系统 | |
JP2008533564A (ja) | データ管理のための方法および装置 | |
US12072866B2 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN108923932A (zh) | 一种去中心化协同验证模型及验证算法 | |
CN111400112A (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
CN102420854A (zh) | 面向云存储的分布式文件系统 | |
CN107832138A (zh) | 一种扁平化的高可用namenode模型的实现方法 | |
EP3769219B1 (en) | Taking snapshots of blockchain data | |
CN107547657A (zh) | 一种基于云存储系统中单点数据编号的方法、装置以及存储介质 | |
CN107734008A (zh) | 一种数据存储系统中的故障处理的方法、装置、节点设备以及存储介质 | |
CN107678688A (zh) | 一种基于云存储系统中的管理冗余副本的方法、装置和存储介质 | |
CN113138879A (zh) | 用于混合边缘复制的方法和系统 | |
CN107707643A (zh) | 一种数据存储系统中更新数据的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171201 |
|
CF01 | Termination of patent right due to non-payment of annual fee |