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

文档序号:9667432阅读:来源:国知局
实施例中,文件读请求还可以携带文件句柄,文件接口服务器向存储各个 目标数据块的存储服务器发送数据块获取请求,具体用于根据文件句柄在本地获取文件的 文件属性,文件属性包括文件中各个数据块的存储路径;根据各个目标数据块的存储路径, 确定存储各个目标数据块的存储服务器;向各个确定的存储服务器发送数据块获取请求。
[0074] 在图1所示的分布式系统中,客户端向文件接口服务器发送文件读请求,文件读 请求携带偏移地址以及读取数据量,文件接口服务器根据偏移地址以及读取数据量,确定 客户端需要读取的至少一个目标数据块以及至少一个目标数据块所属的目标数据分条,当 至少一个目标数据块为目标数据分条中的部分数据时,文件接口服务器向锁服务器发送针 对目标数据分条的数据分条版本号获取请求,并接收锁服务器响应数据分条版本号获取请 求所反馈的数据分条版本号,文件接口服务器向各个存储目标数据块的存储服务器发送数 据块获取请求,并接收各个存储服务器响应数据块获取请求所反馈的目标数据块及其对应 的数据块版本号,当数据分条版本号和各个目标数据块对应的数据块版本号相同时,文件 接口服务器将各个目标数据块发送给客户端。当客户端需要读取的数据块是数据分条中的 部分数据时,可避免文件系统内部读取整个数据分条,有效提升系统性能。
[0075] 请参见图3,图3是本发明实施例中提供的一种基于分布式系统的文件读取方法 的流程示意图,如图所示本发明实施例中的基于分布式系统的文件读取方法至少可以包 括:
[0076] S301,客户端向文件接口服务器发送文件读请求,文件读请求携带偏移地址以及 读取数据量。
[0077] S302,文件接口服务器根据偏移地址以及读取数据量,确定客户端需要读取的至 少一个目标数据块以及至少一个目标数据块所属的目标数据分条。
[0078] 具体实现中,文件接口服务器可以在本地缓存中获取文件的文件属性,文件属性 可以包括:文件的文件总数据量,数据EC保护级别以及文件中的各个数据块的存储路径。 进而文件接口服务器可以根据偏移地址、读取数据量、文件总数据量以及数据EC保护级 另IJ,确定客户端需要读取的至少一个目标数据块。
[0079] 例如,文件接口服务器确定文件的文件总数据量为30MB(兆字节),数据EC保护级 别为3+2 (即该文件的各个数据分条包括3个数据块和2个校验数据块),如果各个数据块 的数据量为512KB,则该文件包括的数据分条的个数为:30*102V(512*3) = 20,当偏移地 址为5MB,读取数据量为1MB,则文件接口服务器可以确定客户端需要读取的目标数据块为 数据分条4中的数据块2和数据块3,各个数据块的数据块标识可以为:分条编号-数据块 编号,例如目标数据块的数据块标识为4-2以及4-3。
[0080] 在可选实施例中,文件接口服务器可以根据偏移地址、读取数据量和数据分条的 分条数据量得到至少一个目标数据块所属目标数据分条的数据分条标识。其中,一个文件 可以包括至少一个数据分条,各个数据分条可以包括至少一个数据块。以图2所示的文件 存储的保护示意图为例,该文件包括数据分条1和数据分条2,数据分条1包括数据块1-1、 1- 2以及1-3,数据分条2包括数据块2-U2-2以及2-3。其中数据分条标识的格式可以 为:文件标识-分条编号,文件标识可以为该文件的文件ID,分条编号可以为Γ^/Υ?,.其中 X为偏移地址,Υ为数据分条的分条数据量。例如,偏移地址为1ΜΒ,数据分条的数据量为 1536ΚΒ,则文件接口服务器可以确定目标数据分条为该文件中的数据分条1。其中,分条编 号的获取方法包含但不局限于上述方式,例如分条编号可以为1_X/F」,其中X为偏移地址,Y为数据分条的分条数据量。示例性的,偏移地址为1MB,数据分条的数据量为1536KB,则文 件接口服务器可以确定目标数据分条为该文件中的数据分条〇。具体不受本发明实施例的 限制。
[0081] 进一步可选的,文件接口服务器可以向锁服务器发送读锁获取请求,读锁获取请 求携带该数据分条标识,锁服务器可以判断其他文件接口服务器是否持有该数据分条标识 对应的数据分条的读锁或者写锁,当其他文件接口服务器未持有该数据分条标识对应的数 据分条的读锁以及写锁时,锁服务器可以向文件接口服务器发送对数据分条标识对应的数 据分条的读授权响应消息,以便文件接口服务器通过存储服务器获取目标数据块。
[0082] S303,当至少一个目标数据块为目标数据分条中的部分数据时,文件接口服务器 向锁服务器发送针对目标数据分条的数据分条版本号获取请求。
[0083] 具体的,如果客户端需要读取的目标数据块为目标数据分条中的部分数据,文件 接口服务器可以向锁服务器发送针对目标数据分条的数据分条版本号获取请求,数据分条 版本号获取请求可以携带数据分条标识。例如,文件接口服务器通过文件属性得到文件划 分为6个数据块,该文件包括2个数据分条,数据块的数据块标识分别为1-1、1-2、1-3、2-1、 2- 2以及2-3,客户端需要读取的目标数据块为数据块1-1和数据块1-2,则文件接口服务器 可以确定目标数据块为数据分条1中的部分数据,进而文件接口服务器向锁服务器发送针 对数据分条1的数据分条版本号获取请求。
[0084] 又如,文件接口服务器通过文件属性得到文件划分为6个数据块,该文件包括2个 数据分条,数据块的数据块标识分别为1-1、1-2、1_3、2-1、2-2以及2-3,客户端需要读取的 目标数据块为数据块1-2、1-3、2-1、2-2以及2-3,则文件接口服务器可以确定数据块1-2和 数据块1-3为数据分条1中的部分数据,进而文件接口服务器向锁服务器发送针对数据分 条1的数据分条版本号获取请求。数据块2-U2-2以及2-3为数据分条2中的所有数据, 则文件接口服务器可以通过传统的文件读取方法获取数据块2-U2-2以及2-3,并将获取 到的数据块2-1、2-2以及2-3发送给客户端。
[0085] S304,锁服务器响应数据分条版本号获取请求向文件接口服务器发送数据分条版 本号。
[0086] 具体实现中,锁服务器可以缓存各个数据分条的数据分条版本号,并在文件接口 服务器写数据或者读取整个数据分条时更新该数据分条的数据分条版本号,则锁服务器接 收到文件接口服务器发送的数据分条版本号获取请求之后,可以查找数据分条标识对应的 目标数据分条的数据分条版本号,并将该数据分条版本号发送给文件接口服务器。
[0087] 需要说明的是,当该锁服务器发生故障时,缓存中的数据分条版本号可能丢失,则 锁服务器无法查找到数据分条标识对应的目标数据分条的数据分条版本号。或者当该锁 服务器被淘汰时,文件接口服务器无法通过锁服务器获取到目标数据分条的数据分条版本 号。或者该锁服务器当前是第一次运行,缓存中还未存储各个数据分条的数据分条版本号。 上述情况中,文件接口服务器无法通过锁服务器获取数据分条版本号,则文件接口服务器 可以通过传统的文件读取方法读取客户端所需数据。
[0088] 作为步骤S303以及S304的可选方式,锁服务器可以在响应文件接口服务器发送 的读锁获取请求所反馈的读授权响应消息中携带数据分条版本号,则文件接口服务器无需 通过向锁服务器发送数据分条版本号获取请求的方式获取数据分条版本号,可提升数据传 输效率。具体实现中,文件接口服务器可以向锁服务器发送读锁获取请求,读锁获取请求携 带该数据分条标识,锁服务器响应该读锁获取请求,可以向文件接口服务器发送对数据分 条标识对应的文件的读授权响应消息,读授权响应消息携带文件的数据分条版本号。
[0089] S305,文件接口服务器向存储目标数据块的存储服务器发送数据块获取请求。
[0090] 当目标数据块为数据分条中的部分数据时,文件接口服务器可以向存储目标数据 块的存储服务器发送数据块获取请求。例如,文件接口服务器确定目标数据块为数据块1-2 和数据块1-3,则文件接口服务器可以向存储数据块1-2的存储服务器发送数据块获取请 求,该数据块获取请求携带数据块1-2的数据块标识。文件接口服务器还可以向存储数据 块1-3的存储服务器发送数据块获取请求,该数据块获取请求携带数据块1-3的数据块标 识。
[0091] 在可选实施例中,文件接口服务器获取各个数据块的存储路径之后,可以根据目 标数据块的存储路径确定存储目标数据块的存储服务器,进而向该存储服务器发送数据块 获取请求。例如,文件接口服务器可以根据各个数据块的存储路径确定数据块1-1存储在 存储服务器1中,数据块1-2存储在存储服务器2中,数据块1-3存储在存储服务器3中, 当目标数据块为数据块1-2和数据块1-3时,文件接口服务器可以向存储服务器2发送数 据块获取请求,并向存储服务器3发送数据块获取请求。
[0092] S306,存储服务器响应数据块获取请求向文件接口服务器发送目标数据块及其对 应的数据块版本号。
[0093] 存储服务器响应数据块获取请求向文件接口服务器发送目标数据块及其对应的 数据块版本号。例如,文件接口服务器向存储服务器2发送数据块获取请求,存储服务器2 反馈数据块1-2以及数据块1-2对应的数据块版本号,文件接口服务器还可以向存储服务 器3发送数据块获取请求,存储服务器3反馈数据块1-3以及数据块1-3对应的数据块版 本号。
[0094] S307,当数据分条版本号和各个目标数据块对应的数据块版本号相同时,文件接 口服务器将各个目标数据块发送给客户端。
[0095] 当文件接口服务器通过锁服务器获取到的数据分条版本号和通过各个存储服务 器获取到的目标数据块对应的数据块版本号相同时,文件接口服务器可以确定各个目标数 据块是有效的,进而将各个目标数据块发送给客户端。例如,如果数据分条版本号和数据块 1-2对应的数据块版本号相同,且数据分条版本号和数据块1-3对应的数据块版本号相同, 则文件接口服务器可以确定数据块1-2和数据块1-3是有效的,进而将数据块1-2和数据 块1-3发送给客户端。
[0096] 在图3所示的基于分布式系统的文件读取方法中,当客户端所需的至少一个目标 数据块为目标数据分条中的部分数据时,文件接口服务器向锁服务器发送针对目标数据分 条的数据分条版本号获取请求,锁服务器响应数据分条版本号获取请求向文件接口服务器 发送数据分条版本号,文件接口服务器还可以向各个存储目标数据块的存储服务器发送数 据块获取请求,存储服务器响应数据块获取请求向文件接口服务器发送目标数据块及其对 应的数据块版本号,当数据分条版本号和各个目标数据块对应的数据块版本号相同时,文 件接口服务器将各个目标数据块发送给客户端,当客户端需要读取的数据块是数据分条中 的部分数据时,可避免文件系统内部读取整个数据分条,有效提升系统性能。
[0097] 请参见图4,图4是本发明实施例中提供的一种文件的读取方法的流程示意图,如 图所示本发明实施例中的文件的读取方法至少可以包括:
[0098] S401,客户端向文件接口服务器发送文件读请求,文件读请求携带偏移地址以及 读取数据量。
[0099] S402,文件接口服务器根据偏移地址以及读取数据量,确定客户端需要读取的至 少一个目标数据块以及至少一个目标数据块所属的目标数据分条。
[0100] S403,当至少一个目标数据块为目标数据分条中的所有数据时,文件接口服务器 向存储目标数据块的存储服务器发送数据块获取请求。
[0101] 当目标数据块为目标数据分条中的所有数据时,文件接口服务器可以向存储目标 数据块的存储服务器发送数据块获取请求。例如,目标数据分条中的所有数据块分别为数 据块1-1、数据块1-2以及数据块1-3,文件接口服务器确定目标数据块为数据块1-1、数据 块1-2和数据块1-3,则文件接口服务器可以向存储数据块1-1的存储服务器发送数据块获 取请求,该数据块获取请求携带
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1