获取文件系统中子项元数据的方法、装置和系统的制作方法_3

文档序号:9911121阅读:来源:国知局
5]作为一个可选实施例,该客户端代理可以重复从该元数据服务器中获取长度为该获取长度的子项元数据,并将获取的子项元数据写入该预读缓存,直到该所有子项元数据都获取完成为止。
[0066]作为一个可选实施例,在该客户端代理从元数据服务器中获取目标目录中的子项元数据之前,该方法还包括:
[0067]该客户端代理根据本次获取的长度,确定需要获取的该目标目录下的多个目录分片对象的标识;
[0068]该客户端代理向该元数据服务器发送请求消息,该请求消息包括该多个目录分片对象的标识;
[0069]该客户端代理从元数据服务器中获取目标目录中的子项元数据,包括:
[0070]该客户端代理接收该元数据服务器根据该请求消息发送的该目标目录中的子项元数据。
[0071]在本发明实施例中,该客户端代理可以先确定需要从元数据服务器中获取的子项元数据的长度,即本次获取的长度,根据本次获取的长度,该客户端代理确定需要获取的该目录下的多个目录分片对象的标识。这里,本次获取的长度可以是首次获取该目标目录中的子项元数据时采用的初始获取长度,也可以是后续获取该目标目录中的子项元数据时采用的更新的获取长度,本发明实施例对此不做限定。
[0072]具体而言,该客户端代理可以确定协议客户端需要获取的子项元数据所在目标目录的目标目录标识,该客户端代理将该目标目录标识发送给元数据服务器,该元数据服务器就可以根据该目标目录标识确定该目标目录对应的多个目录分片对象,继而确定该多个目录分片对象中存储的子项元数据。在该客户端代理从该元数据服务器中获取子项元数据之前,该客户端代理会根据该本次获取的长度,计算需要读取的多个目录分片对象的个数,并确定其中每一个目录分片对象的标识。然后该客户端代理向元数据服务器发送包括该多个目录分片对象的标识的请求消息,该元数据服务器会根据该请求消息,向该客户端代理发送与该多个目录分片对象的标识相对应的多个目录分片对象中存储的子项元数据。
[0073]作为一个可选实施例,可以将客户端代理分为前端和后端两部分:前端负责与协议客户端交互,即可以负责接收该协议客户端的请求和响应,从预读缓存中读取缓存的子项元数据并发送给该协议客户端;后端负责与元数据服务器交互,即可以负责读取并接收该元数据服务器发送的子项元数据,将其写入预读缓存中。应理解,上述划分仅仅是从功能上对客户端代理的划分,本发明实施例对此不做限定。
[0074]应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0075]本发明实施例的获取文件系统中子项元数据的方法,通过元数据服务器向客户端代理发送目标目录中多个目录分片对象的子项元数据,由客户端代理将该子项元数据存入预读缓存中,该客户端代理可以直接向协议客户端发送该预读缓存中的子项元数据,同时继续获取目标目录中尚未获取到的子项元数据,这样该客户端代理向协议客户端发送子项元数据与该客户端代理从该元数据服务器中获取子项元数据的过程是并行执行的,解决了协议客户端需要等待客户端代理从元数据服务器中获取子项元数据的问题,从而减少了协议客户端获取子项元数据的整体时延,提高了用户体验。
[0076]图2是本发明实施例的另一获取文件系统中子项元数据的方法200的示意性流程图。
[0077]在S201中,协议客户端与客户端代理协商协议块大小,该协议块大小用于表示协议客户端与该客户端代理一次交互过程中能够传输的目录分片对象的子项元数据的最大长度。
[0078]在S202中,该协议客户端向该客户端代理发送请求消息,该请求消息携带该协议客户端需要获取的子项元数据所在目标目录的目标目录标识和用于标识获取序号的cookie值。该协议客户端初始指定cookie为O,表示从头遍历该目标目录下的目录分片对象。
[0079]在S203中,该客户端代理根据该协议客户端发送的该请求消息,获取目录元数据,即该目标目录的元数据信息。该目标目录的元数据信息包括该目标目录下各个目录分片对象的路由信息和属性信息,其中,该属性信息中包括其对应的目录分片对象中存储的子项元数据的长度。
[0080]具体而言,该客户端代理获取目录元数据,包括:该客户端代理查询缓存,若缓存中有该目标目录的元数据信息,则该客户端代理直接获取该目标目录的元数据信息;若缓存中没有该目标目录的元数据信息,则该客户端代理向元数据服务器发送携带该目标目录标识的请求消息,元数据服务器根据该请求消息向该客户端代理发送该目标目录的元数据信息,客户端代理接收该元数据服务器发送的该目标目录的元数据信息。
[0081 ]在S204中,该客户端代理启动预读任务,初始化设置已交付长度为O,已交付时延为O O
[0082]在S205中,该客户端代理确定首批需要预读的目录分片对象的标识列表,并将该标识列表发送给元数据服务器。
[0083]具体而言,该客户端代理首先将预读长度,即上述的初始获取长度,设置为该协议块大小的两倍,再根据在S203中获取的该目标目录下各个目录分片对象中子项元数据的长度,计算出本次需要读取的目录分片对象的个数,分别确定对应的目录分片对象的标识列表,最后将需要预读的目录分片对象的标识列表发送给该元数据服务器。
[0084]在S206中,该元数据服务器在收到该客户端代理发送的需要读取的目录分片对象的标识列表之后,可以根据该标识列表向该客户端代理发送该目录分片对象中存储的子项元数据。
[0085]应理解,该元数据服务器向该客户端代理发送各个目录分片对象中存储的子项元数据是并发进行的,该客户端代理接收该子项元数据也是并发接收多个目录分片对象中存储的子项元数据的。
[0086]在S207中,该客户端代理接收该元数据服务器发送的子项元数据,并将该子项元数据写入预读缓存。
[0087]在S208中,当预读缓存中的子项元数据的长度达到上述协议块大小时,该客户端代理向该协议客户端发送该预读缓存中的子项元数据,该子项元数据的长度即为交付长度,在本发明实施例中为该协议块大小。同时,该客户端代理向该协议客户端发送用于指示未读取完成所有目录分片对象中存储的子项元数据的指示信息FALSE。
[0088]具体而言,在该客户端代理使用预读缓存中的内容向该协议客户端发送子项元数据的同时,该客户端代理可以向该协议客户端发送指示信息,该指示信息用于指示是否发送完该目标目录下所有目录分片对象的子项元数据。例如,可以将该指示信息设置为TRUE或者FALSE,TRUE表示发送完了所有目录分片对象的子项元数据,FALSE表示未发送完所有目录分片对象的子项元数据,需要该协议客户端继续请求获取子项元数据;也可以将该指示信息设置为I或者O,I表示发送完了所有目录分片对象的子项元数据,O表示未发送完所有目录分片对象的子项元数据,本发明实施例对此不做限定。
[0089]应理解,在该客户端代理以交付长度为单位向该协议客户端发送预读缓存中的子项元数据时,该客户端代理同时在以初始获取长度为单位获取该元数据服务器中多个目录分片对象的子项元数据并将其写入预读缓存中,这两个过程是并行执行的。
[0090]在S209中,当该客户端代理完成了首批子项元数据的获取之后,该客户端代理统计预读速度,该预读速度用于表示该客户端代理从该元数据服务器中已获取的子项元数据的平均速度。
[0091]具体而言,该预读速度为已预读长度除以预读时延,其中,该已预读长度用于表示该客户端代理从该元数据服务器集群中读取的子项元数据的累计长度,该预读时延用于表示该客户端代理从该元数据服务器集群中读取该初始获取长度的子项元数据的累计时间。
[0092]在S210中,当该客户端代理完成了首批子项元数据的交付之后,该客户端代理计算已交付长度,该已交付长度为初始化的已交付长度加上本次交付长度,即为本次交付长度。同时,该客户端代理记录应答时刻,该应答时刻即为该客户端代理完成子项元数据交付的时刻。
[0093]在S211中,该协议客户端接收该客户端代理发送的子项元数据和指示信息,由于该指示信息为FALSE,表示未获取完所有目录分片对象的子项元数据,因此,该协议客户端继续向该客户端代理发送请求消息,用于请求获取剩余目录分片对象的子项元数据。
[0094]该请求消息携带该协议客户端需要获取的子项元数据所在目录(即上述目标目录)的目标目录标识和用于标识获取序号的cookie值。此刻,该协议客户端设置cookie为已交付子项的哈希值的最大值,即为本次起点。
[0095]在S212中,当接收到该协议客户端发送的请求消息时,该客户端代理计算上次交付时延和已交付时延,该上交付时延为当前时刻减去上述应答时刻,该已交付时延为之前的已交付时延加上次交付时延,用于表示该客户端代理完成一次向该协议客户端发送子项元数据到再次开始向该协议客户端发送子项元数据的时间间隔的累计。
[0096]在S213中,该客户端代理调整需要预读的目录分片对象的标识列表。
[0097]具体地,该客户端代理先计算出历史交付速度,该交付速度为已交付长度除以已交付时延,其中,该已交付长度用于表示该客户端代理向该协议客户端发送的子项元数据的累计长度。然后,该客户端代理根据历史交付速度和历史预读速度,计算本次读取子项元数据的预读长度,即更新的获取长度。该客户端代理计算该历史交付速度与该历史预读速度之比乘以该获取长度的值,并将其确定为更新的获取长度。该客户端代理根据该更新的获取长度和该目标目录下各个目录分片对象中子项元数据的长度,补充需要预读的目录分片对象的标识列表,使得尚未交付的子项元数据,即本次已从该元数据服务器中读取的子项元数据,和即将预读的子项元数据的总长度为该更新的获取长度。该客户端代理将确定的需要预读的目录分片对象的标识列表发送给该元数据服务器。
[0098]在S214中,该元数据服务器在收到该客户端代理发送的需要读取的目录分片对象的标识列表之后,根据该标识列表向该客户端代理并发发送该目录分片对象中存储的子项元数据。
[0099]在S215中,该客户端代理接收该元数据服务器发送的子项元数据,并将该子项元数据写入预读缓存。
[0100]在S216中,当该预读缓存中的子项元数据长度达到上述协议块大小时,该客户端代理向该协议客户端发送该预读缓存中的子项元数据,该子项元数据的长度即为交付长度,在本发明实施例中为该协议块大小。同时,该客户端代理向该协议客户端发送未读取完成所有目录分片对象中存储的子项元数据的指示信息FALSE。
[
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1