用于处理数据的方法、装置和系统与流程

文档序号:17356482发布日期:2019-04-09 21:43阅读:185来源:国知局
用于处理数据的方法、装置和系统与流程

本申请实施例涉及计算机技术领域,具体涉及用于处理数据的方法、装置和系统。



背景技术:

文件系统作为计算机领域的一种数据存储形式,长期服务于各行各业的计算机应用系统中,但随着数据量的爆炸式增长,基于计算机集群的分布式文件系统应运而生。这种大型的分布式文件系统的设计中需要有单独的元数据处理节点负责管理整个文件系统的元信息,在文件或目录数目达到十亿甚至百亿级别时,元数据节点的负载会成为系统的最大瓶颈,现有的负载均衡方式从固定配置各元数据服务器服务的子目录数,到通过散列表的方式进行映射都是进行负载均衡的有效方式。另外,开源的分布式文件系统还提出来动态子树划分的方式,通过对文件系统中各目录的访问负载进行监控,动态的调整各个元数据服务器负责的子目录树。

这些方法是在不断实践中发展起来的,但也有各自的缺陷和适用范围。其中静态配置的方式不适合数据访问位置固定的场景,同时应对异常情况比较欠缺。散列表映射的方式不适合数据分布固定和环境变化频繁的场景。另外动态划分的方式仅对系统负载进行监控,所做的划分和迁移决策并不一定准确,并不能充分刻画系统的负载水平。



技术实现要素:

本申请实施例提出了用于处理数据的方法、装置和系统。

第一方面,本申请实施例提供了一种用于处理数据的方法,应用于客户端,包括:响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔;从管理服务器端获取预设的完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;根据第一时间间隔从完全二叉树中选择目标路径;将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器。

在一些实施例中,根据第一时间间隔从完全二叉树中选择目标路径,包括:对于完全二叉树中的节点,若第一时间间隔小于该节点的值,则将该节点的预定侧的子节点确定为目标节点;将确定出的目标节点组成目标路径。

在一些实施例中,将访问请求发送到目标路径的叶子节点对应的元数据服务器,包括:通过预设的一致哈希环确定目标路径的叶子节点映射的目标元数据服务器;将访问请求发送到目标元数据服务器。

第二方面,本申请实施例提供了一种用于处理数据的方法,应用于元数据服务器端,包括:响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定访问请求与上次访问请求的时间间隔为第二时间间隔,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量;根据访问请求查询访问结果,以及将访问结果发送到客户端;将完全二叉树中节点的值的变化量发送到管理服务器端。

在一些实施例中,根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量,包括:将第二时间间隔的第一加权值确定为目标路径上的节点的值的减少量,其中,第一加权值为第二时间间隔与预定的第一权重之积;将第二时间间隔的第二加权值确定为目标路径的对称路径上的节点的值的增加量,其中,第二加权值为第二时间间隔与预定的第二权重之积。

第三方面,本申请实施例提供了一种用于处理数据的方法,应用于管理服务器,包括:响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

第四方面,本申请实施例提供了一种用于处理数据的装置,应用于客户端,包括:第一计时单元,被配置成响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔;获取单元,被配置成从管理服务器端获取预设的完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;选择单元,被配置成根据第一时间间隔从完全二叉树中选择目标路径;第一发送单元,被配置成将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器。

在一些实施例中,选择单元进一步被配置成:对于完全二叉树中的节点,若第一时间间隔小于该节点的值,则将该节点的预定侧的子节点确定为目标节点;将确定出的目标节点组成目标路径。

在一些实施例中,第一发送单元进一步被配置成:通过预设的一致哈希环确定目标路径的叶子节点映射的目标元数据服务器;将访问请求发送到目标元数据服务器。

第五方面,本申请实施例提供了一种用于处理数据的装置,应用于元数据服务器端,包括:第二计时单元,被配置成响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定访问请求与上次访问请求的时间间隔为第二时间间隔,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;确定单元,被配置成根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量;第二发送单元,被配置成根据访问请求查询访问结果,以及将访问结果发送到客户端;第三发送单元,被配置成将完全二叉树中节点的值的变化量发送到管理服务器端。

在一些实施例中,确定单元进一步被配置成:将第二时间间隔的第一加权值确定为目标路径上的节点的值的减少量,其中,第一加权值为第二时间间隔与预定的第一权重之积;将第二时间间隔的第二加权值确定为目标路径的对称路径上的节点的值的增加量,其中,第二加权值为第二时间间隔与预定的第二权重之积。

第六方面,本申请实施例提供了一种用于处理数据的装置,应用于管理服务器,包括:更新单元,被配置成响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;下载单元,被配置成响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

第七方面,本申请实施例提供了一种用于处理数据的系统,包括:客户端,被配置成响应于接收到访问请求,确定本次访问请求与上次访问请求的第一时间间隔,从管理服务器端获取预设的完全二叉树,根据第一时间间隔从完全二叉树中选择目标路径,将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;至少一个元数据服务器,被配置成响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定本次访问请求与上次访问请求的第二时间间隔,根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量,将访问请求的访问结果发送到客户端,将完全二叉树中节点的值的变化量发送到管理服务器端;管理服务器,被配置成响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树,响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

第八方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面、第二方面和第三方面中任一的方法。

第九方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面、第二方面和第三方面中任一的方法。

本申请实施例提供的用于处理数据的方法、装置和系统,能自主学习元数据服务器的访问负载并结合实际应用场景实现动态负载均衡,通过基于元数据访问的核心指示qps(querypersecond,每秒查询率)以求充分刻画出一个大型分布式文件系统的实时负载情况,从而选择出合适的元数据服务器响应每一个访问请求。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请的一个实施例可以应用于其中的示例性系统架构图;

图2是根据本申请的用于处理数据的方法应用于客户端的一个实施例的流程图;

图3是根据本申请的完全二叉树的结构示意图;

图4是根据本申请的用于处理数据的方法应用于元数据服务器端的一个实施例的流程图;

图5是根据本申请的用于处理数据的方法应用于管理服务器端的一个实施例的流程图;

图6是根据本申请的用于处理数据的方法的一个应用场景的示意图;

图7是根据本申请的用于处理数据的装置应用于客户端的一个实施例的结构示意图;

图8是根据本申请的用于处理数据的装置应用于元数据服务器端的一个实施例的结构示意图;

图9是根据本申请的用于处理数据的装置应用于管理服务器端的一个实施例的结构示意图;

图10是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于处理数据的方法或用于处理数据的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括客户端101、管理服务器端102、元数据服务器端103。网络用以在客户端101、管理服务器端102、元数据服务器端103之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用客户端101通过网络与管理服务器端102、元数据服务器端103交互,以接收或发送消息等。客户端101上可以安装有各种通讯客户端应用,例如数据库类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。客户端101接收到用户的访问请求后可从管理服务器端102获取用于记录元数据服务器端103的负载信息的完全二叉树。然后根据完全二叉树选择出元数据服务器。再将访问请求发送到选择出的元数据服务器端103。

客户端101可以是硬件,也可以是软件。当客户端101为硬件时,可以是具有显示屏并且支持文件访问的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当客户端101为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

管理服务器端102可以是维护元数据服务器端的负载信息的服务器。管理服务器端102可根据元数据服务器端上报的负载状态信息(例如,访问时间间隔)生成完全二叉树,然后将完全二叉树发送给客户端101。

元数据服务器端103负责管理整个分布式文件系统的元数据。当接收到客户端101的访问请求后返回元数据,并根据访问时间间隔确定完全二叉树中节点的值的变化量。然后将变化量发送给管理服务器端102,由管理服务器端102根据接收到的变化量更新完全二叉树。

需要说明的是,客户端101、管理服务器端102、元数据服务器端103可以是硬件,也可以是软件。当客户端101、管理服务器端102、元数据服务器端103为硬件时,可以实现成多个服务器组成的分布式服务器集群/分布式设备集群,也可以实现成单个服务器/单个设备。当上述客户端101、管理服务器端102、元数据服务器端103为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。

需要说明的是,本申请实施例所提供的用于处理数据的方法可以由客户端101执行,也可以由管理服务器端102、元数据服务器端103执行。相应地,用于处理数据的装置可以设置于客户端101中,也可以设置于管理服务器端102、元数据服务器端103中。在此不做具体限定。

应该理解,图1中的客户端、管理服务器端、元数据服务器端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、管理服务器端、元数据服务器端。

继续参考图2,示出了根据本申请的用于处理数据的方法应用于客户端的一个实施例的流程200。该用于处理数据的方法,包括以下步骤:

步骤201,响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔。

在本实施例中,用于处理数据的方法的执行主体(例如图1所示的客户端)可以接收用户访问文件系统的访问请求,访问请求中可包括文件名称、修改时间、文件大小等信息。任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。每次接收到访问请求后,客户端都会记录接收到访问请求的时间。将相邻两次访问请求的时间间隔作为第一时间间隔。

步骤202,从管理服务器端获取预设的完全二叉树.

在本实施例中,当客户端想要访问元数据库时要从管理服务器端获取完全二叉树,该完全二叉树是元数据服务器端的负载模型。可先获取完全二叉树的版本信息,如果客户端检测出该版本和本地存储的完全二叉树版本相同,则无需下载更新,如果版本不同,则下载最新版本的完全二叉树。也可由客户端上报版本信息,由管理服务器端判断客户端的版本否是最新的,如果不是则将最新版本发给客户端。

由于对元数据服务器的访问不会进行具体数据的传输,因此单次请求的负载主要集中在请求的速率,即qps(每秒查询次数)。负载模型的构建基于该指标实现,以相邻两次请求的时间间隔大小来进行决策。具体负载模型是依据虚拟节点的数目(2的幂次方)构建一个完全二叉树,虚拟节点全部在最底层的叶子节点上,每个非叶子节点用来记录两次相邻请求的间隔。如图3所示。n1-n7是普通节点,非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关。v1-v8是叶子节点,用于表征虚拟节点。虚拟节点的数目是2的幂次方,这样才能构造出完全二叉树。

客户端使用版本管理确保获取到最新的负载模型,即完全二叉树。

步骤203,根据第一时间间隔从完全二叉树中选择目标路径。

在本实施例中,初始化时每个节点的值都为1,从根节点进行决策,具体决策方式可以是:比较当前请求与上一次请求的间隔(即第一时间间隔),若值小于该节点的值就去左节点继续查找下面的子节点,否则前往右节点继续查找下面的子节点,直到到达叶子节点,再映射到具体的元数据服务器。元数据服务器收到客户端请求后,记录请求所花时间间隔,然后反向更新二叉树的节点值,将每个节点值减去所花时间间隔的一定比例值(比例值可配),并增加从根节点开始,向对称路径的所有节点的值,增加值按照另外的比例配置。以如图3所示的拥有8个虚拟节点的完全二叉树为示例来说明:

决策过程(客户端执行):n1到n7为非叶子节点,首次访问时间间隔为0,n1的值为1,访问左节点n2,其值为1,继续访问n4,最终得到虚拟节点v1。

更新过程(元数据服务器端执行):v1对应的元数据服务器处理请求的时间间隔为g,依次向上将n4、n2、n1节点的值减去w1*g(w1为配置的比例),然后从根节点开始,将对称路径即n1->n3->n7的每个节点的值增加w2*g(w2为配置的比例)。

在本实施例的一些可选的实现方式中,根据第一时间间隔从完全二叉树中选择目标路径,包括:对于完全二叉树中的节点,若第一时间间隔小于该节点的值,则将该节点的预定侧的子节点确定为目标节点;将确定出的目标节点组成目标路径。预定侧可以是左侧,也可以是右侧。只要在系统中统一约定为某一侧即可。

可选地,还可在两个子节点中选择值较大的节点作为目标节点组成目标路径。此时也可根据时间间隔更新叶子节点的值。

步骤204,将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器。

在本实施例中,可根据事先约定的映射关系将虚拟节点映射到元数据服务器,例如,虚拟节点的编号对元数据服务器的数目取余数,得到的值即为目标元数据服务器的编号。然后将访问请求发送到计算出的元数据服务器端。

在本实施例的一些可选的实现方式中,将访问请求发送到目标路径的叶子节点对应的元数据服务器,包括:通过预设的一致哈希环确定目标路径的叶子节点映射的目标元数据服务器。将访问请求发送到目标元数据服务器。在解决分布式系统中负载均衡的问题时候可以使用hash(哈希)算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(比如用户id%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。

继续参考图4,示出了根据本申请的用于处理数据的方法应用于元数据服务器端的一个实施例的流程400。该用于处理数据的方法,包括以下步骤:

步骤401,响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定访问请求与上次访问请求的时间间隔为第二时间间隔。

在本实施例中,用于处理数据的方法的执行主体(例如图1所示的元数据服务器端)可以接收客户端发送的访问请求和完全二叉树中的目标路径。这里的完全二叉树即为步骤201-204涉及的完全二叉树。元数据服务器端记录每次接收到访问请求的时间,并将相邻两次访问请求的时间间隔确定为第二时间间隔。第二时间间隔和第一时间间隔只是在名称上区分是元数据服务器端还是客户端接收的访问请求的时间间隔,它们之间没有相互关联。一个元数据服务器端可接收来自多个客户端的访问请求,不区分客户端的统计被访问的时间间隔。

步骤402,根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量。

在本实施例中,元数据服务器收到客户端请求后,记录请求所花时间间隔,然后反向更新二叉树的节点值。除了更新目标路径上的节点的值之外,还可更新目标路径的对称路径上的节点的值。例如,将每个目标路径上的节点值减去所花时间间隔的一定比例值(比例值可配),并增加从根节点开始,向对称路径的所有节点的值,增加值按照另外的比例配置。对称路径为以根节点为对称中心的镜像对称路径。如图3所示,目标路径若为n1、n2、n4、v1,则对称路径为n1、n3、n7、v8。这样做的目的是使得各元数据服务器的单位时间的访问次数更均衡。

根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量,包括:将第二时间间隔的第一加权值确定为目标路径上的节点的值的减少量,其中,第一加权值为第二时间间隔与预定的第一权重之积。将第二时间间隔的第二加权值确定为目标路径的对称路径上的节点的值的增加量,其中,第二加权值为第二时间间隔与预定的第二权重之积。以如图3所示的拥有8个虚拟节点的完全二叉树为示例来说明:

决策过程(客户端执行):n1到n7为非叶子节点,首次访问时间间隔为0,n1的值为1,访问左节点n2,其值为1,继续访问n4,最终得到虚拟节点v1。

更新过程(元数据服务器端执行):v1对应的元数据服务器处理请求的时间间隔为g,依次向上将n4、n2、n1节点的值减去w1*g(w1为配置的比例),然后从根节点开始,将对称路径即n1->n3->n7的每个节点的值增加w2*g(w2为配置的比例)。w1和w2可根据元数据服务器端的处理能力进行配置,不同的元数据服务器端可分别采用不同的w1和w2,也可采用相同的w1和w2。

步骤403,根据访问请求查询访问结果,以及将访问结果发送到客户端。

在本实施例中,访问结果即为访问请求所指示的文件的元数据。将访问结果返回给客户端。

步骤404,将完全二叉树中节点的值的变化量发送到管理服务器端。

在本实施例中,每个元数据服务器端都会在接收到访问请求后更新完全二叉树中节点的值的变化量,然后将变化量发给管理服务器端。由管理服务器端维护完全二叉树。可按预定格式发送节点与变化量的对应关系,例如,节点n1、n2、n4:-0.2,节点n1、n3、n7:+0.4。

可选地,还可由元数据服务器端直接更新完全二叉树的值,这样就需要元数据服务器端从管理服务器端获取最新的完全二叉树。更新后再返回给管理服务器端。

继续参考图5,示出了根据本申请的用于处理数据的方法应用于管理服务器端的一个实施例的流程500。该用于处理数据的方法,包括以下步骤:

步骤501,响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树。

在本实施例中,用于处理数据的方法的执行主体(例如图1所示的管理服务器端)从至少一个元数据服务器端接收完全二叉树中节点的值的变化量,然后根据接收到的节点的值的变化量更新完全二叉树。例如,原始完全二叉树的节点值都为1,收到某个元数据服务器端发送的变化量:节点n1、n2、n4:-0.2,节点n1、n3、n7:+0.4之后。完全二叉树的节点值更新为n1:1.2,n2:0.8,n3:1.4,n4:0.8,n5:1,n6:1,n7:1.4。如果接收到其它元数据服务器端发送的变化量后,可在上一次更新后的节点值的基础上进一步更新。

步骤502,响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

在本实施例中,当客户端想要访问元数据库时要从管理服务器端获取完全二叉树。当管理服务器端接收到客户端发送的获取完全二叉树的请求时,可先发送完全二叉树的版本信息,由客户端判断是否是进行更新。也可由客户端发送版本信息,由管理服务器端判断是否要将最新版本发送给客户端。

继续参见图6,图6是根据本实施例的用于处理数据的方法的应用场景的一个示意图。在图6的应用场景中,用户通过客户端发送了访问请求,客户端从管理服务端下载最新版本的完全二叉树。然后客户端根据最近两次接收到访问请求的时间间隔从完全二叉树中查找目标路径,并将目标路径的叶子节点对应的元数据服务器确定为目标元数据服务器。客户端将访问请求和目标路径都发送给元数据服务器端。元数据服务器端接收到访问请求后记录时间,并与上一次接收到的访问时间做比对,确定时间间隔。然后根据时间间隔确定出完全二叉树的节点的值的变化量和访问结果。最后将访问结果返回给客户端,将完全二叉树的节点的值的变化量返回给管理服务器端。管理服务器端根据接收到的完全二叉树的节点的值的变化量更新二叉树。

本申请的上述实施例提供的方法基于元数据访问的核心指标qps构建负载模型(即完全二叉树),该模型没有任何训练过程,仅用来表征当前元数据服务器的整体系统负载水平,实现起来容易。各个元数据服务器端会对整个文件系统目录树都进行处理,不存在子目录数划分和动态迁移的问题,确保了元数据的安全性,提高了元数据服务器设计上的稳定性。通过引入虚拟节点和一致哈希环,元数据服务器的新增和下线,对系统的总体影响很小,系统可随着具体业务与负载水平进行适当的扩展。

进一步参考图7,作为对上述各图所示方法的实现,本申请提供了一种用于处理数据的装置应用于客户端的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图7所示,本实施例的用于处理数据的装置700包括:第一计时单元701、获取单元702、选择单元703和第一发送单元704。其中,第一计时单元701,被配置成响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔;获取单元702,被配置成从管理服务器端获取预设的完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;选择单元703,被配置成根据第一时间间隔从完全二叉树中选择目标路径;第一发送单元704,被配置成将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器。

在本实施例中,用于处理数据的装置700的第一计时单元701、获取单元702、选择单元703和第一发送单元704的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204。

在本实施例的一些可选的实现方式中,选择单元703进一步被配置成:对于完全二叉树中的节点,若第一时间间隔小于该节点的值,则将该节点的预定侧的子节点确定为目标节点。将确定出的目标节点组成目标路径。

在本实施例的一些可选的实现方式中,第一发送单元704进一步被配置成:通过预设的一致哈希环确定目标路径的叶子节点映射的目标元数据服务器。将访问请求发送到目标元数据服务器。

进一步参考图8,作为对上述各图所示方法的实现,本申请提供了一种用于处理数据的装置应用于元数据服务器端的一个实施例,该装置实施例与图4所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图8所示,本实施例的用于处理数据的装置800包括:第二计时单元801、确定单元802、第二发送单元803、第三发送单元804。其中,第二计时单元801,被配置成响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定访问请求与上次访问请求的时间间隔为第二时间间隔,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点;确定单元802,被配置成根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量;第二发送单元803,被配置成根据访问请求查询访问结果,以及将访问结果发送到客户端;第三发送单元804,被配置成将完全二叉树中节点的值的变化量发送到管理服务器端。

在本实施例中,用于处理数据的装置800的第二计时单元801、确定单元802、第二发送单元803、第三发送单元804的具体处理可以参考图4对应实施例中的步骤401、步骤402、步骤403、步骤404。

在本实施例的一些可选的实现方式中,确定单元802进一步被配置成:将第二时间间隔的第一加权值确定为目标路径上的节点的值的减少量,其中,第一加权值为第二时间间隔与预定的第一权重之积。将第二时间间隔的第二加权值确定为目标路径的对称路径上的节点的值的增加量,其中,第二加权值为第二时间间隔与预定的第二权重之积。

进一步参考图9,作为对上述各图所示方法的实现,本申请提供了一种用于处理数据的装置应用于管理服务器端的一个实施例,该装置实施例与图5所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图9所示,本实施例的用于处理数据的装置900包括:更新单元901和下载单元902。其中,更新单元901,被配置成响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点。下载单元902,被配置成响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

在本实施例中,用于处理数据的装置900的更新单元901和下载单元902的具体处理可以参考图5对应实施例中的步骤501、步骤502。

下面参考图10,其示出了适于用来实现本申请实施例的电子设备(如图1所示的电子设备)的计算机系统1000的结构示意图。图10示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram1003中,还存储有系统1000操作所需的各种程序和数据。cpu1001、rom1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。

以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一计时单元、获取单元、选择单元和第一发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一计时单元还可以被描述为“响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔的单元”。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:响应于接收到访问请求,确定访问请求与上次访问请求的时间间隔作为第一时间间隔。从管理服务器端获取预设的完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点。根据第一时间间隔从完全二叉树中选择目标路径。将访问请求和目标路径发送到目标路径的叶子节点对应的元数据服务器。或者使得该装置:响应于接收到客户端发送的访问请求和完全二叉树中的目标路径,确定访问请求与上次访问请求的时间间隔为第二时间间隔,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点。根据目标路径和第二时间间隔确定完全二叉树中节点的值的变化量。根据访问请求查询访问结果,以及将访问结果发送到客户端。将完全二叉树中节点的值的变化量发送到管理服务器端。或者使得该装置:响应于接收到至少一个元数据服务器端发送的完全二叉树中节点的值的变化量,根据接收到的节点的值的变化量更新完全二叉树,其中,完全二叉树的非叶子节点的值与元数据服务器接收到的最近两次访问请求的时间间隔相关,叶子节点用于表征分布式系统中与元数据服务器对应的虚拟节点。响应于接收到客户端发送的获取完全二叉树的请求,将完全二叉树发送到客户端。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1