面向广域网的分布式文件系统副本因果一致的访问方法与流程

文档序号:23758935发布日期:2021-01-29 18:17阅读:136来源:国知局
面向广域网的分布式文件系统副本因果一致的访问方法与流程

[0001]
本发明公开了一种面向广域网的分布式文件系统副本因果一致的访问方法,涉及广域高性能计算面临的挑战,属于计算机技术领域。


背景技术:

[0002]
文件副本跨域存放能够极大降低数据集的访问延迟,提高吞吐性能。在hpc应用(hpc,high performance computing,高性能计算)以及大数据处理应用中,大部分分布式计算任务采用内存计算的方法,只有在执行检查点或者持久化计算输出结果时会涉及到文件写入操作。并且计算任务也会通过合理设置的文件路径以及文件名以避免相互之间的冲突。harding的研究说明,如果采取并发访问控制的手段,根据集群节点数量与冲突请求比例的差异,性能最大会有99%以上的损耗。
[0003]
然而由于广域多中心之间的网络带宽较小,导致数据集在多中心不一致的时间窗口太长,并且在同步过程中发生的io操作乱序、非原子性执行等故障也会导致数据集及其副本不可逆的损坏,后果较为严重。因此多应用在多中心并发访问时依旧有一定限度的一致性要求。
[0004]
基于主从架构的并发访问控制方法限制对于单一文件或者存储单元的写访问均只能由主副本节点提交。当前工业界大部分存储系统都采用了中心集中式的并发访问控制方法,为了保证负载均衡也会采用一致性哈希算法或者数据布局策略进行数据分区,保证节点之间的读写访问均衡。
[0005]
主流分布式存储系统ceph、glusterfs、hdfs都是主从副本机制的基于中心集中式的并发访问控制方法。因为在单中心内节点之间的网络通信性能并没有显著的差距,而在限制存储单元的写入请求的提交点为单一节点以后之后相当于构建了一个fifo队列,从而保证了所有写入操作以及更新操作的顺序性,从而保证了数据在时间轴上线性化更新。
[0006]
然而在多中心分布的副本架构上,节点之间的网络通信开销差距极大,限制从副本只读的并发访问控制方法首先极大限制了文件写入的吞吐,极大浪费了珍贵的互联网带宽与计算应用的机时,并且难以挖掘文件读写的局部性。
[0007]
基于分布式锁实现的二阶段锁是当前分布式数据库系统中使用较为广泛的数据并发访问控制方法。分布式锁有多种实现算法,例如spanner中基于共识协议fast-paxos实现锁服务,hadoop中基于zookeeper中zab协议的类unix文件系统树上节点的存在状态实现锁服务,sherlock中基于单机kv数据库实现锁服务。无论使用何种手段,申请锁都需要至少一次远程访问的延迟时间。
[0008]
tango、granola、rococo、ren的研究均采用二阶段锁在实现数据的并发访问控制。二阶段锁将锁的申请分为两个阶段,增长阶段与收缩阶段。在增长阶段只允许申请锁,在收缩阶段只允许释放锁。通过细粒度的二阶段锁能够保证两个冲突的事务操作能够线性化执行,不冲突的事务操作能够并行执行。通过在二阶段锁的基础上使用冲突等待或者冲突终止的方式可以避免死锁的发生。
[0009]
然而基于分布式锁的二阶段锁协议单次锁的开销都会引入较大的时延,因此拥有性能较差的特点。drtm系统为了解决本地操作与远程操作之间的冲突,也采用了基于二阶段锁的并发访问控制方法。与其他分布式存储系统不同的是,drtm的基于rdma原子操作cas实现了一套点对点的远程锁协议。rdma网络能够实现极低的锁申请时延,从而极大提高了基于二阶段锁系统的性能。
[0010]
乐观并发控制(occ)与基于二阶段锁的并发访问控制方法不同的地方在于,乐观并发控制不在操作执行前或者操作过程中阻塞其他并发过程,而是在操作执行完成提交结果的时候进入验证阶段,验证操作执行的过程中是否有其他产生冲突的操作发生,如果冲突发生了那么销毁操作产生的临时变更数据,如果冲突未发生则将临时数据变更应用到持久存储中。
[0011]
deneva提出了maat协议,使用一个用来记录写事务的数据更新的事务私有存储空间,一张记录活跃事务编号的时间表,以及对于每条记录的一个元数据表,用来记录期待读写该记录的事务编号以及该记录上次被读写访问的事务编号。maat规定每个事务都有一个唯一的编号作为逻辑时间戳,事务执行阶段结束之后,将进入maat协议的验证阶段。maat通过比对当前事务访问过的记录的时间信息与时间表中的事务执行时记录的时间信息,以监测冲突情况。在冲突发生时通过冲突解决机制来保证数据一致性。
[0012]
sovran提出对于广域分布的存储系统而言,保证强一致数据访问引入的开销太大,并且在跨中心应用的负载下,读写冲突时常发生。保证存储系统在广域多中心的读写互斥本身也会极大降低访问性能。因此sorvan提出了一种面向广域存储系统的并行快照隔离机制psi,并且基于该并行快照隔离机制实现了广域环境下的因果一致性。并行快照隔离的核心思想在于放宽了最新版本快照更新的提交时间,允许新产生的快照能够在多个中心以不同的时间点提交。相对于主流的快照隔离算法而言,并行快照隔离机制允许不同中心的更新操作乱序提交,只要求同一中心的更新能够顺序提交。这种一致性的放松让各个中心之间不在需要互相协调和等待对方的更新操作,在广域网络环境下能够达到较高的吞吐。而psi的缺陷则是在较长一段时间内数据副本只能维持因果顺序的一致性级别,应用必须能够容忍一定时间的非强一致数据。


技术实现要素:

[0013]
本公开提出了一种面向广域网的分布式文件系统副本因果一致的访问方法。
[0014]
在本公开实施例中,可以为客户端提供广域分布的副本空间中副本文件的因果一致的访问服务。通过挖掘副本文件写入操作的依赖关系构建偏序关系,利用最大时间偏差、时间戳及用户定义优先级构建全序关系,通过一种支持多版本控制的区间树存储数据索引,通过多版本索引区间树的版本回滚解决并发冲突,并最终提供副本文件因果一致的访问服务。
[0015]
本发明的技术解决方案如下:
[0016]
一种面向广域网的分布式文件系统副本因果一致的访问方法,其特征在于,包括:
[0017]
仅同步副本文件的索引结构与按需同步数据;
[0018]
通过追溯广域分布式环境中副本文件数据操作的依赖顺序来提供因果一致的偏序关系;
[0019]
通过最大时间戳偏差分析以及用户可定义的优先级来为数据操作提供稳定的全序关系;
[0020]
通过一种支持回滚的多版本索引区间树来存储副本文件的索引结构并且进行多版本并发控制;
[0021]
通过副本文件索引结构的多版本并发控制来处理逻辑时间中的并发冲突。
[0022]
所述的方法,包括以下步骤:
[0023]
步骤1,当客户端向广域网上某个存储中心的副本提交数据写入请求时,存储网关节点会根据当前存储中心对于目标副本文件可见的所有写入请求为该请求赋予依赖关系;
[0024]
步骤2,当广域网上的某个存储中心的存储网关节点接收到其他存储中心广播的数据段更新操作时,会根据当前请求的依赖关系、时间戳偏差以及用户定义的副本空间当前节点nice值为所有接收到的数据写操作构建全序关系;
[0025]
步骤3,存储网关节点会根据预先构建的数据写操作全序关系为目标副本文件构建多版本索引区间树,并通过树的版本回滚来解决网络包乱序到达导致的并发冲突;
[0026]
步骤4,当客户端向广域网上某个存储中心的副本提交数据读取请求时,存储网关节点会根据当前存储中心中维护的多版本索引区间树提供的满足因果一致性的最大版本进行数据同步,最终返回满足因果一致性的副本文件数据;
[0027]
所述步骤1中当客户端向广域网上某个存储中心的副本提交数据写入请求时,还包括:
[0028]
a1)由管理节点组织与分发的集群节点状态图进行存储中心内部的存储网关节点的相互发现;
[0029]
a2)存储中心的存储网关节点维护一组副本文件的版本向量,版本向量由加入当前副本空间的所有存储中心所维护的某个副本文件在各个中心的最后一个写入请求的客户提交版本组成,并且按照各个存储中心加入副本空间的时间顺序进行排列;
[0030]
a3)当接收到其他存储中心广播的写入请求时,当前存储中心的版本向量中写入请求来源存储中心的对应版本槽将进行推进更新;
[0031]
a4)当接收到由客户端提交的数据写入请求时,在请求提交时刻存储网关节点所维护的副本文件版本向量将作为该数据写入请求的依赖版本,并且版本向量中当前存储中心的版本槽将向前推进;
[0032]
a5)存储网关节点会向其他中心推送所有带有时间戳以及依赖版本向量的数据段更新请求。
[0033]
所述步骤2中当广域网上的某个存储中心的存储网关节点接收到其他存储中心广播的数据段更新操作时,还包括:
[0034]
b1)当广域网上的某个存储中心的存储网关节点接收到其他存储中心广播的数据段更新操作时,会根据当前请求的依赖关系、时间戳偏差以及用户定义的副本空间当前节点nice值为所有接收到的数据写操作构建全序关系;
[0035]
b2)存储网关节点会根据接收到的数据段更新操作中携带的依赖关系来构建因果一致的偏序关系,其偏序关系由一个比较版本向量的函数产生,对于两个来源于不同存储中心的数据段更新请求,比较函数会将这两个更新请求的版本向量中对方存储中心所对应的版本槽进行比较,如果两个版本槽的对比形成了一致的大小关系,那么这两个请求拥有
因果顺序关系,如果两个版本槽的对比形成了不一致的大小关系,那么两个请求拥有并行关系;
[0036]
b3)当两个请求拥有并行关系,由存储网关节点根据集群节点状态图中请求来源的存储网关节点的最大时间偏差以及请求时间戳进行比较,其中最大时间偏差为存储网关节点到广域网ntp服务器最大延迟的一半,请求时间戳为请求来源存储中心接受客户端请求时的时间,如果两个请求时间戳的差绝对值大于两个请求来源中心的最大时间偏差的和,那么根据两个请求的时间戳形成大小关系;
[0037]
b4)当两个请求拥有并行关系且两个请求时间戳的差绝对值小于等于两个请求来源中心的最大时间偏差的和时,比较用户定义的副本空间在各个存储中心的nice值,并通过比较nice值形成大小关系,nice值在各个存储中心是唯一的;
[0038]
b5)当两个请求拥有并行关系并且产生了并行冲突,即由于网络延迟等原因未按全序关系到达目标存储网关节点,那么会对索引区间树进行版本回滚并且重新应用按全序关系排列的数据段更新请求。
[0039]
所述步骤3中当广域网上的某个存储中心的存储网关节点根据数据段更新请求的全序关系更新多版本索引区间树时,还包括:
[0040]
c1)索引区间树基于b*树进行变种,其的叶子节点的key为数据段的区间头,其值为数据段的区间尾以及数据段源数据所处中心id号,非叶子结点key为其子节点数据段所处的区间,其值为由多个版本子树指针组成向量;
[0041]
c2)索引区间树的插入操作基于b*树,插入或更新一个数据段时,如果目标数据段区间被某一子树完全包含,则插入目标数据段至该子树;
[0042]
c3)如果待插入的目标数据段区间包含当前节点的多个子树的区间,则在当前子树根节点的版本指针向量尾部创建当前子树的根节点的副本,推进当前子树的根节点的版本,并向根节点方向更新最大版本号,删除区间被完全包含的子树的引用,并在值最小子树中执行目标数据段的插入操作,在值最大子树中执行目标数据段的删除操作;
[0043]
c4)如果待插入的目标数据段与当前叶子结点的区间有重叠部分或连续,则在当前叶子节点的版本指针向量尾部创建当前叶子结点的副本,如果目标数据段与叶子结点的值相等,则合并叶子结点与目标数据段的区间,如果目标数据段与当前叶子结点的值不相等,则分裂当前叶子结点为重叠部分与未重叠部分,并覆盖重叠部分的值;
[0044]
c5)多版本索引区间树的不支持数据段区间删除操作;
[0045]
c6)多版本索引区间树的区间查询操作基于b*树,当目标区间位于当前节点的多棵子树时,查询请求会被分裂为多个子区间查询,并最终返回一组区间索引向量的结果;
[0046]
c7)多版本索引区间树的版本回滚时,将会回滚当前节点的所有子树中的最大版本号大于目标版本的子树,如果子树的根节点的版本指针向量中拥有目标版本的版本槽,则使用版本槽中的副本替换该子树的根节点并递归操作。
[0047]
所述步骤4中当客户端向广域网上某个存储中心的副本提交数据读取请求时,还包括:
[0048]
d1)存储网关节点根据当前存储中心中维护的多版本索引区间树提供的满足因果一致性的最大版本进行数据同步;
[0049]
d2)为了保证多版本索引区间树能够提供满足因果一致性的索引,存储网关节点
将读请求提交时的多版本区间树的根节点最大版本作为读取目标版本,并且会阻塞等待偏序关系中所有版本向量小于该版本的请求全部到达并应用;
[0050]
d3)从多版本区间树获得目标数据段的索引向量后,存储网关节点会向目标数据段所处中心发送目标数据区间与版本的同步请求,并最终返回因果一致的数据。
附图说明
[0051]
图1为一种面向广域网的分布式文件系统副本因果一致的访问方法流程图。
[0052]
图2为一种面向广域网的分布式文件系统副本因果一致的访问方法架构图。
[0053]
图3为一种存储数据索引且支持多版本控制的区间树图。
[0054]
图中概念说明如下:超算中心:使用超级计算机以及相关网络、存储设施提供服务的机构。gvds:为本专利技术所依托的底层软件系统,由多个超算中心内的服务节点共同组成。文件数据索引:本专利中的文件数据索引指代一个集合,该集合由二元组形式的偏移位以及数据量组成的数据区段号、数据所在超算中心id号、数据所在存储集群id号构成。用于在gvds全局环境中定位一个数据段的位置。数据索引更新操作:一种请求的上下文,用于描述一次客户端文件写或者gvds实例跨中心同步操作后对文件数据的索引应有更新的描述性参数。op:在本专利中作为数据索引更新操作的简称。op a.1:指代从超算中心a中发出的逻辑序列号为1的请求。依赖关系:在本专利中,在一个超算中心内一个新提交的请求依赖于当前超算中心中所有已经被应用的请求。依赖于{a.0,b.0}:在本专利中,指当前请求在本中心提交时,在本中心中已经执行的操作序列号。全序关系:在跨超算中心之间,通过一组比较规则,所有操作请求均能够相互比较来确定请求执行的先后顺序。多版本区间树:本专利中一种数据索引树的形式,用于提供数据索引存储结构的同时,支持树中节点的版本回溯与前进。[0,20]:指代本树节点或者子树中包含文件数据段[0,20]的索引数据。t1/t2:本专利的图中用于指代一个逻辑时间,树节点中的逻辑时间用于标识节点的插入时间。中心a/b:用于泛指数据所在超算中心id号、数据所在存储集群id号等用于确定一个数据块在gvds全局环境中所需的定位信息。
具体实施方式
[0055]
本公开实施例提供了一种面向广域网的分布式文件系统副本因果一致的访问方法,其通过仅同步副本文件的索引结构与按需同步数据来减少广域网流量;通过追溯广域分布式环境中副本文件数据操作的依赖顺序来提供因果一致的偏序关系;通过最大时间戳偏差分析以及用户可定义的优先级来为数据操作提供稳定的全序关系;通过一种支持回滚的多版本索引区间树来存储副本文件的索引结构并且进行多版本并发控制。下面对本发明作进一步详细的说明。
[0056]
图1示出根据本公开实施例的分布式文件系统副本访问方法的流程图,主要有如下四个步骤组成。
[0057]
s1)构建依赖关系,当客户端向广域网上某个存储中心的副本提交数据写入请求时,存储网关节点会根据当前存储中心对于目标副本文件可见的所有写入请求为该请求赋予依赖关系。
[0058]
s2)构建全序关系,当广域网上的某个存储中心的存储网关节点接收到其他存储
中心广播的数据段更新操作时,会根据当前请求的依赖关系、时间戳偏差以及用户定义的副本空间当前节点nice值为所有接收到的数据写操作构建全序关系。
[0059]
s3)更新存储数据索引的多版本区间树,存储网关节点会根据预先构建的数据写操作全序关系为目标副本文件构建多版本索引区间树,并通过树的版本回滚来解决网络包乱序到达导致的并发冲突。
[0060]
s4)处理客户端提交的读数据请求,当客户端向广域网上某个存储中心的副本提交数据读取请求时,存储网关节点会根据当前存储中心中维护的多版本索引区间树提供的满足因果一致性的最大版本进行数据同步,最终返回满足因果一致性的副本文件数据。
[0061]
s1)构建依赖关系,在本公开实施例中,构建依赖关系的步骤如下:
[0062]
由管理节点组织与分发的集群节点状态图进行存储中心内部的存储网关节点的相互发现;存储中心的存储网关节点维护一组副本文件的版本向量,版本向量由加入当前副本空间的所有存储中心所维护的某个副本文件在各个中心的最后一个写入请求的客户提交版本组成,并且按照各个存储中心加入副本空间的时间顺序进行排列;当接收到其他存储中心广播的写入请求时,当前存储中心的版本向量中写入请求来源存储中心的对应版本槽将进行推进更新;当接收到由客户端提交的数据写入请求时,在请求提交时刻存储网关节点所维护的副本文件版本向量将作为该数据写入请求的依赖版本,并且版本向量中当前存储中心的版本槽将向前推进;存储网关节点会向其他中心推送所有带有时间戳以及依赖版本向量的数据段更新请求。
[0063]
s2)构建全序关系,在本公开实施例中,构建全序关系的步骤如下:
[0064]
当广域网上的某个存储中心的存储网关节点接收到其他存储中心广播的数据段更新操作时,会根据当前请求的依赖关系、时间戳偏差以及用户定义的副本空间当前节点nice值为所有接收到的数据写操作构建全序关系;存储网关节点会根据接收到的数据段更新操作中携带的依赖关系来构建因果一致的偏序关系,其偏序关系由一个比较版本向量的函数产生,对于两个来源于不同存储中心的数据段更新请求,比较函数会将这两个更新请求的版本向量中对方存储中心所对应的版本槽进行比较,如果两个版本槽的对比形成了一致的大小关系,那么这两个请求拥有因果顺序关系,如果两个版本槽的对比形成了不一致的大小关系,那么两个请求拥有并行关系;当两个请求拥有并行关系,由存储网关节点根据集群节点状态图中请求来源的存储网关节点的最大时间偏差以及请求时间戳进行比较,其中最大时间偏差为存储网关节点到广域网ntp服务器最大延迟的一半,请求时间戳为请求来源存储中心接受客户端请求时的时间,如果两个请求时间戳的差绝对值大于两个请求来源中心的最大时间偏差的和,那么根据两个请求的时间戳形成大小关系;当两个请求拥有并行关系且两个请求时间戳的差绝对值小于等于两个请求来源中心的最大时间偏差的和时,比较用户定义的副本空间在各个存储中心的nice值,并通过比较nice值形成大小关系,nice值在各个存储中心是唯一的;当两个请求拥有并行关系并且产生了并行冲突,即由于网络延迟等原因未按全序关系到达目标存储网关节点,那么会对索引区间树进行版本回滚并且重新应用按全序关系排列的数据段更新请求。
[0065]
s3)更新存储数据索引的多版本区间树,在本公开实施例中,更新存储数据索引的多版本区间树的步骤如下:
[0066]
索引区间树基于b*树进行变种,其的叶子节点的key为数据段的区间头,其值为数
据段的区间尾以及数据段源数据所处中心id号,非叶子结点key为其子节点数据段所处的区间,其值为由多个版本子树指针组成向量;索引区间树的插入操作基于b*树,插入或更新一个数据段时,如果目标数据段区间被某一子树完全包含,则插入目标数据段至该子树;如果待插入的目标数据段区间包含当前节点的多个子树的区间,则在当前子树根节点的版本指针向量尾部创建当前子树的根节点的副本,推进当前子树的根节点的版本,并向根节点方向更新最大版本号,删除区间被完全包含的子树的引用,并在值最小子树中执行目标数据段的插入操作,在值最大子树中执行目标数据段的删除操作;如果待插入的目标数据段与当前叶子结点的区间有重叠部分或连续,则在当前叶子节点的版本指针向量尾部创建当前叶子结点的副本,如果目标数据段与叶子结点的值相等,则合并叶子结点与目标数据段的区间,如果目标数据段与当前叶子结点的值不相等,则分裂当前叶子结点为重叠部分与未重叠部分,并覆盖重叠部分的值;多版本索引区间树的不支持数据段区间删除操作;多版本索引区间树的区间查询操作基于b*树,当目标区间位于当前节点的多棵子树时,查询请求会被分裂为多个子区间查询,并最终返回一组区间索引向量的结果;多版本索引区间树的版本回滚时,将会回滚当前节点的所有子树中的最大版本号大于目标版本的子树,如果子树的根节点的版本指针向量中拥有目标版本的版本槽,则使用版本槽中的副本替换该子树的根节点并递归操作。
[0067]
s4)处理客户端提交的读数据请求,在本公开实施例中,处理客户端提交的读数据请求的步骤如下:
[0068]
存储网关节点根据当前存储中心中维护的多版本索引区间树提供的满足因果一致性的最大版本进行数据同步;为了保证多版本索引区间树能够提供满足因果一致性的索引,存储网关节点将读请求提交时的多版本区间树的根节点最大版本作为读取目标版本,并且会阻塞等待偏序关系中所有版本向量小于该版本的请求全部到达并应用;从多版本区间树获得目标数据段的索引向量后,存储网关节点会向目标数据段所处中心发送目标数据区间与版本的同步请求,并最终返回因果一致的数据。
[0069]
本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。在此指明,以上叙述有助于本领域技术人员理解本发明创造,但并非限制本发明创造的保护范围。任何没有脱离本发明创造实质内容的对以上叙述的等同替换、修饰改进和/或删繁从简而进行的实施,均落入本发明创造的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1