一种基于分布式系统的文件读取方法及装置的制造方法_2

文档序号:9667432阅读:来源:国知局
锁服务器发送的锁召回请 求,锁召回请求携带数据分条标识,文件接口服务器可以响应锁召回请求向锁服务器发送 锁召回响应消息,锁召回响应消息携带数据分条标识对应的数据分条的数据分条版本号, 以通知锁服务器更新数据分条标识对应的数据分条的数据分条版本号。
[0026] 具体实现中,文件接口服务器持有对数据分条的读锁或者写锁,如果其他文件接 口服务器向锁服务器发送锁获取请求时,锁服务器可以向该文件接口服务器发送锁召回请 求,文件接口服务器读取文件或者写文件之后,可以响应锁召回请求向锁服务器发送锁召 回响应消息,以便锁服务器将该数据分条的锁授权给其他文件接口服务器。另外,文件接口 服务器通过存储服务器写入文件或者读取数据分条中的所有数据块之后,可以向锁服务器 发送该数据分条的数据分条版本号,以确保锁服务器缓存的数据分条版本号为最新的数据 分条版本号。为了提升文件接口服务器与锁服务器之间的数据传输效率,文件接口服务器 接收到锁服务器发送的锁召回请求时,可以在响应锁召回请求所反馈的锁召回响应消息中 携带数据分条版本号,以便将最新的数据分条版本号发送给锁服务器。
[0027] 在上述技术方案中,可选的,文件读请求还可以携带文件句柄,文件接口服务器根 据文件句柄在本地获取对应文件的文件属性,文件属性包括文件中各个数据块的存储路 径,根据各个目标数据块的存储路径,确定各个存储目标数据块的存储服务器,并向各个确 定的存储服务器发送数据块获取请求。
[0028] 其中,文件句柄用于识别文件,不同文件句柄对应不同的文件,文件接口服务器可 以根据文件句柄在本地获取对应文件的文件属性。文件属性可以包括该文件的总数据量、 数据EC保护级别(即各个数据分条中数据块的个数N和校验数据块的个数M)或者数据块 的存储路径等。文件接口服务器可以根据目标数据块的存储路径,确定各个存储目标数据 块的存储服务器,进而向各个确定的存储服务器发送数据块获取请求。
[0029]在上述技术方案中,可选的,文件接口服务器可以预先建立数据块和存储服务器 的对应关系,例如存储数据块1-1的存储服务器为存储服务器1时,文件接口服务器可以建 立数据块1-1和存储服务器1的对应关系。当至少一个目标数据块为目标数据分条中的部 分数据时,文件接口服务器可以根据预先建立的数据块和存储服务器的对应关系,确定目 标数据块对应的存储服务器,并向确定的存储服务器发送数据块获取请求。
[0030]第二方面提供了一种基于分布式系统的文件读取装置,所述装置可以包括请求接 收单元、数据块确定单元、请求发送单元、版本号获取单元、数据块接收单元以及数据块发 送单元,所述装置可以用于实施结合第一方面的部分或全部步骤。
[0031] 第三方面提供了一种服务器,包括处理器以及存储器,处理器可以用于实施结合 第一方面的部分或全部步骤。
【附图说明】
[0032] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0033]图1是本发明实施例中提供的一种分布式系统的框架示意图;
[0034] 图2是本发明实施例中提供的一种文件存储的保护示意图;
[0035]图3是本发明实施例中提供的一种基于分布式系统的文件读取方法的流程示意 图;
[0036]图4是本发明另一实施例中提供的一种基于分布式系统的文件读取方法的流程 示意图;
[0037]图5是本发明另一实施例中提供的一种基于分布式系统的文件读取方法的流程 示意图;
[0038]图6是本发明另一实施例中提供的一种基于分布式系统的文件读取方法的流程 示意图;
[0039] 图7是本发明实施例中提供的一种文件接口服务器的结构示意图;
[0040] 图8是本发明实施例中提供的一种基于分布式系统的文件读取装置的结构示意 图。
【具体实施方式】
[0041 ] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描 述。
[0042] 请参见图1,图1是本发明实施例中提供的一种分布式系统的框架示意图,如图所 示本发明实施例中的分布式系统至少可以包括客户端、文件接口服务器、存储服务器以及 锁服务器。其中,客户端可以通过网络与文件接口服务器建立通信连接,文件接口服务器分 别与锁服务器以及存储服务器建立通信连接。至少两个存储服务器可以通过网络组成存储 服务器集群。
[0043] 客户端,用于向文件接口服务器发送文件读请求,文件读请求携带偏移地址以及 读取数据量。
[0044] 文件接口服务器,用于根据偏移地址以及读取数据量,确定客户端需要读取的至 少一个目标数据块以及至少一个目标数据块所属的目标数据分条,其中一个文件包括至少 一个数据分条,各个数据分条包括至少一个数据块;当至少一个目标数据块为目标数据分 条中的部分数据时,向锁服务器发送针对目标数据分条的数据分条版本号获取请求。
[0045] 锁服务器,用于响应该数据分条版本号获取请求向文件接口服务器发送数据分条 版本号。
[0046] 文件接口服务器,还用于当至少一个目标数据块为目标数据分条中的部分数据 时,向各个存储目标数据块的存储服务器发送数据块获取请求。
[0047] 存储服务器,用于响应该数据块获取请求向文件接口服务器发送目标数据块以及 目标数据块对应的数据块版本号。
[0048] 文件接口服务器,还用于当锁服务器发送的数据分条版本号和各个存储服务器发 送的目标数据块对应的数据块版本号相同时,将各个目标数据块发送给客户端。
[0049] 具体的,分布式系统中,为了提升文件的可靠性,同时提高存储服务器存储空间的 利用率,文件的存储采用N+M的保护方式,即将N+M个存储服务器通过网络组成一个N+M的 数据保护组,将文件划分为至少N个数据块,通过EC算法对数据块进行处理得到Μ个校验 数据块,将Ν个数据块和Μ个校验数据块存储到Ν+Μ个存储服务器中。其中,一个文件的 Ν+Μ个数据块称为一个数据分条,该数据分条写入存储服务器时通过Quprum事务机制保持 一致性,并且在存储服务器中,每个数据块对应有一个数据块版本号,正常情况下,一个数 据分条中的N+M个数据块对应的数据块版本号是相同的。其中,校验数据块用于文件接口 服务器确定数据分条无效时,通过EC算法对校验数据块进行处理生成数据块。
[0050] 以图2所示的文件存储的保护示意图为例,文件系统包括5个存储服务器,其中N 为3,Μ为2,如果将一个文件划分为6个数据块,则该文件可以包括2个数据分条,各个数据 块的数据块标识可以为分条编号-数据块编号,例如上述数据块的数据块标识分别为1-1、 1_2、1_3、2_1、2_2以及2_3,通过EC算法对数据块1_1、1_2以及1_3进彳丁处理得到校验数 据块1和校验数据块2,其中数据块1-1、1-2以及1-3、校验数据块1以及校验数据块2组 成数据分条1,可以将数据块1-1及其对应的数据块版本号存储到存储服务器1中,将数据 块1-2及其对应的数据块版本号存储到存储服务器2中,将数据块1-3及其对应的数据块 版本号存储到存储服务器3中,将校验数据块1及其对应的数据块版本号存储到存储服务 器4中,将校验数据块2及其对应的数据块版本号存储到存储服务器5中。同理,通过EC 算法对数据块2-U2-2以及2-3进行处理得到校验数据块3和校验数据块4,其中数据块 2-1、2-2以及2-3、校验数据块3以及校验数据块4组成数据分条2,可以将数据块2-1及其 对应的数据块版本号存储到存储服务器1中,将数据块2-2及其对应的数据块版本号存储 到存储服务器2中,将校验数据块1及其对应的数据块版本号存储到存储服务器3中,将校 验数据块2及其对应的数据块版本号存储到存储服务器4中,将数据块2-3及其对应的数 据块版本号存储到存储服务器5中。
[0051] 在可选实施例中,文件接口服务器,还用于当至少一个目标数据块为目标数据分 条中的所有数据时,向各个存储目标数据块的存储服务器发送数据块获取请求。
[0052] 存储服务器,还用于响应数据块获取请求向文件接口服务器发送目标数据块及其 对应的数据块版本号。
[0053] 文件接口服务器,还用于当各个目标数据块对应的数据块版本号相同时,将各个 目标数据块发送给客户端。
[0054] 进一步可选的,文件接口服务器,还用于当各个目标数据块对应的数据块版本号 不完全相同时,向各个存储校验数据块的存储服务器发送校验数据块获取请求。
[0055] 存储服务器,还用于响应校验数据块获取请求向文件接口服务器发送校验数据块 及其对应的数据块版本号。
[0056] 文件接口服务器,还用于当各个校验数据块对应的数据块版本号相同时,通过数 据校验擦除码EC算法对各个校验数据块进行处理,得到目标数据分条中的所有数据块,在 生成的所有数据块中确定目标数据块,并将各个目标数据块发送给客户端。
[0057] 在可选实施例中,文件接口服务器,还用于当各个目标数据块对应的数据块版本 号相同时,将目标数据块对应的数据块版本号作为目标数据分条的数据分条版本号,将数 据分条版本号发送给锁服务器。
[0058] 锁服务器,还用于对该目标数据分条的数据分条版本号进行更新。
[0059] 在可选实施例中,文件接口服务器,还用于当数据分条版本号和各个目标数据块 对应的数据块版本号不完全相同时,向各个存储目标数据分条中数据块的存储服务器发送 数据块获取请求。
[0060] 存储服务器,还用于响应数据块获取请求向文件接口服务器发送数据块及其对应 的数据块版本号。
[0061] 文件接口服务器,还用于当各个数据块对应的数据块版本号相同时,在接收得到 的数据块中确定各个目标数据块,并将各个目标数据块发送给客户端。
[0062] 在可选实施例中,文件接口服务器,还用于接收客户端发送的文件写请求,文件写 请求携带文件句柄、偏移地址、写数据以及写数据量;通过版本号分配器获取文件句柄对应 的文件的数据分条版本号;根据偏移地址以及写数据量,确定写数据所属的数据块以及数 据块所属的数据分条;将写数据发送给存储写数据所属数据块的存储服务器。
[0063] 存储服务器,还用于对写数据所属的数据块进行更新。
[0064] 文件接口服务器,还用于当写数据成功发送时,将数据分条版本号发送给锁服务 器。
[0065] 锁服务器,还用于对该数据分条的数据分条版本号进行更新。
[0066] 在可选实施例中,文件接口服务器,用于向锁服务器发送锁释放请求,锁释放请求 携带数据分条标识以及数据分条版本号。
[0067] 锁服务器,还用于对数据分条标识对应的数据分条的数据分条版本号进行更新, 并响应锁释放请求向文件接口服务器发送锁释放响应消息。
[0068] 在可选实施例中,锁服务器,还用于向文件接口服务器发送锁召回请求,锁召回请 求携带数据分条标识。
[0069] 文件接口服务器,还用于响应锁召回请求向锁服务器发送锁召回响应消息,锁召 回响应消息携带数据分条标识对应的数据分条的数据分条版本号。
[0070] 锁服务器,还用于对数据分条标识对应的数据分条的数据分条版本号进行更新。
[0071 ] 在可选实施例中,文件接口服务器,用于向锁服务器发送读锁获取请求,读锁获取 请求携带目标数据分条的数据分条标识。
[0072] 锁服务器,还用于响应读锁获取请求向文件接口服务器发送对数据分条标识对应 的目标数据分条的读授权响应消息,读授权响应消息携带目标数据分条的数据分条版本 号。
[0073] 在可选
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1