一种读取目录子项元数据的方法及装置的制造方法_3

文档序号:9911258阅读:来源:国知局
实现方式中,目标服务器确定出管理第k至第(k+m)个元数据对象的N个服务器,向N个服务器并行发送请求,其中,在向第s个服务器发送的请求中包含第(k+t)个元数据对象的标识,第(k+t)个元数据对象为第k至第(k+m)个元数据对象中由第s个服务器所管理的元数据对象,s的取值为I至N的整数,t的取值为O至m的整数。
[0049]然后,第s个服务器根据自身的元数据管理模块存储的第(k+t)元数据对象的位置信息,读取第(k+t)元数据对象中的目录子项元数据。然后,将读取的第(k+t)元数据对象中的目录子项元数据返回给目标服务器。
[0050]在另一种可能的实现方式中,第s个服务器接收到目标服务器发送的请求之后,将自身的元数据管理模块存储的第(k+t)元数据对象的位置信息返回给目标服务器,目标服务器接收到该位置信息之后,自行从对应的存储位置处读取第(k+t)元数据对象中的目录子项元数据。
[0051]可选的,在上述第一种方式中,目标服务器在发送给管理第k个元数据对象的服务器的请求中,可以包含起始标志,该起始标识指向第k个元数据对象中的第i个目录子项元数据,表明需从第i个目录子项元数据读取。接受请求的服务器向目标服务器返回第k个元数据对象中的第i个目录子项元数据及其之后的目录子项元数据。
[0052]可选的,在上述第一种方式中,目标服务器在发送给管理第(k+m)个元数据对象的服务器的请求中,可以包含结束标志,该结束标识指向第(k+m)个元数据对象中的第j个目录子项元数据,表明第(k+m)个元数据对象中第j个目录子项元数据为本次最后一个需读取的目录子项元数据。接受请求的服务器向目标服务器返回第(k+m)个元数据对象中的第j个目录子项元数据及其之前的目录子项元数据。
[0053]需要说明的是,存储上述元数据对象的存储模块与管理上述元数据对象的元数据管理模块可以在同一服务器上,也可以在不同服务器上。在存储元数据对象的存储模块与管理元数据对象的元数据管理模块不在同一服务器上时,管理元数据对象的元数据管理模块所在的服务器,向存储元数据对象的存储模块所在的服务器发送获取该元数据对象中的目录子项元数据的请求,在获得目录子项元数据之后,将获得的目录子项元数据发送至目标服务器。
[0054]另外,目标服务器的元数据管理模块也可能管理有第k至第(k+m)个元数据对象中的元数据对象,目标服务器可以通过自身的元数据管理模块获得对应元数据对象中的目录子项元数据。例如,目标服务器根据上述属性信息确定第(k+t)个元数据对象由自身的元数据管理模块所管理,以及其余元数据对象由目标服务器之外的服务器的元数据管理模块所管理,则目标服务器通过自身的元数据管理模块存储的第(k+t)个元数据对象的存储位置的信息,从该存储位置处获得第(k+t)个元数据对象中的目录子项元数据,并从所述目标服务器之外的服务器处获得其余元数据对象中的目录子项元数据。
[0055]步骤105中,目标服务器将获得的目录子项元数据按顺序存入协议缓冲区,直至填满洗衣缓冲区。
[0056]在一种可能的实现方式中,目标服务器获得的目录子项元数据的大小等于或接近于协议缓冲区的大小(即,单次交付量阈值)。
[0057]在另一种可能的实现方式中,目标服务器获得的目录子项元数据的大小多于协议缓冲区的大小,目标服务器将目录子项元数据按顺序存入协议缓冲区,存满之后,余下的目录子项元数据可以有两种处理方式,其一为直接舍弃,其二为将其缓存在目标服务器的本地缓存之中,以便在客户端发送下一次请求时,将其从本地缓存存入协议缓冲区。
[0058]在将获得的目录子项元数据存入协议缓冲区之后,协议缓冲区中的目录子项元数据即形成本次交付元数据,目标服务器将其返回给客户端。
[0059]本发明实施例中,上述步骤102?步骤104可以由目标服务器的中央处理器(Central Processing Unit;简称:CPU)执行,也可以由目标服务器的CA模块执行。
[0060]上述技术方案中,目标服务器在接收到读取第一目录的目录子项元数据的请求后,根据每个元数据对象包含的目录子项元数据的大小以及单次交付量阈值,确定出本次需读取的多个元数据对象,然后,从存储该多个元数据对象的服务器处并行获得元数据对象的目录子项元数据。与现有技术中采用串行方式读取目录子项元数据的方式相比,能够大幅缩减目录子项元数据的读取时间,提高文件系统的效率。
[0061]可选的,本发明实施例中,本次交付元数据包括:从第k个元数据对象中第i个目录子项元数据至第(k+m)个元数据对象中第j个目录子项元数据的目录子项元数据。
[0062]可选的,本发明实施例中,步骤105:目标服务器向客户端发送本次交付元数据,包括如下步骤:
[0063]目标服务器判断本次交付元数据中的最后一个目录子项元数据是否为第一目录的最后一个目录子项元数据;
[0064]若不是,则目标服务器向客户端发送本次交付元数据,并指示客户端继续向目标服务器请求本次交付元数据的最后一个目录子项元数据之后的目录子项元数据。
[0065]具体的,目标服务器在填充完协议缓冲区之后,判断协议缓冲区中的最后一个目录子项元数据是否为第一目录项的最后一个目录子项元数据,若不是,则表明第一目录的目录子项元数据尚未读取完毕,目标服务器将在向协议客户端发送目录子项元数据时,指示客户端继续向目标服务器请求本次交付的最后一个目录子项元数据之后的目录子项元数据。客户端将根据指示,再次向目标服务器发送请求,请求中的定位标识指向本次交付的最后一个目录子项元数据之后的第一个目录子项元数据。
[0066]如果前述判断结果表明本次交付元数据中的最后一个目录子项元数据是第一目录的最后一个目录子项元数据,则目标服务器可以向协议客户端指示第一目录的目录子项元数据已读取完毕。或者,目标服务器不进行上述指示,客户端将在未收到前述指示协议客户端继续向目标服务器请求目录子项元数据的指示信息时,确认已读取完毕。
[0067]可选的,本发明实施例中,目标服务器在发送本次交付元数据之前,先对目录子项元数据进行排序。
[0068]下面以具体应用实例对上述读取目录子项元数据的方法予以说明。
[0069]客户端的协议客户端模块在需要读取第一目录的目录子项元数据时,向目标服务器的CA模块发送第一请求,请求中包含第一目录的标识以及指向存放第一目录的目录子项元数据中的第I个元数据对象的第I个目录子项元数据的定位标识。
[0070]CA模块根据第一请求中的第一目录的标识,确定第一目录的元数据,第一目录的元数据包含如下信息:存放第一目录的每个元数据对象各自包含的目录子项元数据的数目。CA模块根据上述信息以及单次交付量阈值确定出本次最多可向协议客户端交付第I至第5个元数据对象所包含的目录子项元数据。
[0071]然后,CA模块根据第一目录的元数据中包含的管理各元数据对象的元数据管理节点的信息,确定第I至第2个元数据对象由元数据管理节点A所管理,第3至第5个元数据对象分别由元数据管理节点B、元数据管理节点C、元数据管理节点D所管理。其中,所述元数据管理节点A、B、C、D分别位于服务器A、B、C、D。
[0072]然后,CA模块同时向元数据管理节点A至D发送请求,请求节点A返回第I至第2个元数据对象所包含的目录子项元数据,请求节点B返回第3个元数据对象所包含的目录子项元数据,请求节点C返回第4个元数据对象所包含的目录子项元数据,请求节点D返回第5个元数据对象所包含的(全部或前j个)目录子项元数据。
[0073]然后,CA接收节点A至D各自返回的目录子项元数据,按照顺序存入数据缓冲区,即先按顺序存入第I个元数据对象中目录子项元数据,再按顺序存入第2个元数据对象中的目录子项元数据,以此类推,直至存入第5个元数据对象的第j个目录子项元数据,由于数据缓冲区填满,无法再存入第5个元数据对象的第j个目录子项元数据之后的目录子项元数据。则第I个元数据对象中的第I个目录子项元数据至第5个元数据对象的第j个目录子项元数据形成本次交付数据。
[0074]然后,CA判断第5个元数据对象的第j个目录子项元数据是否为第一目录的最后一个目录子项元数据,再确定其不是最后一个目录子项元数据后,CA向协议客户端发送本次交付数据以及第一目录的第5个元数据对象的第j个目录子项元数据的标识,该标识用于指示协议客户端
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1