一种分布式关键字表网络及对其进行操作的方法

文档序号:7633515阅读:300来源:国知局

专利名称::一种分布式关键字表网络及对其进行操作的方法
技术领域
:本发明涉及计算机网络领域,尤其涉及一种分布式关键字表网络及对其进行操作的方法。
背景技术
:分布式关键字(key)表是两种非常类似的P2P技术分布式哈希表(distributedhashtable,DHT)和分布式顺序表(distributedorderingtable)的统称。分布式哈希表和分布式顺序表近年来已经成为P2P领域的热点技术,应用于BT、电骡等多种P2P应用。采用分布式关键字表技术构建的叠加网称为分布式关键字表网络,包含分布式哈希表网络和分布式顺序表网络。分布式关键字表网络可以提供数据分布式存储和管理的功能,也可以提供分布式任务处理和管理的功能。分布式关键字表网络的客户端都可以添加/修改/删除/查询分布式关键字表网络中的数据/任务。关键字表网络的节点和/或客户端拥有关键字表网络的路由表,根据路由表能将添加/修改/删除/查询等操作请求路由到数据/任务的存储/部署节点。每个数据/任务都有唯一的标识,称为关键字。分布式关键字表网络中的节点一起共同维护一个数据/任务的关键字空间。关键字空间被划分为多段分配给节点负责,每个节点负责其中的一段或多段空间。每个节点管理其空间段内的数据/任务。关键字表网络的节点共同维护多对从数据/任务关键字到数据/任务的映射。为了保证可靠性,分布式关键字表中将数据/任务存储/部署于多个节点上,具体的,首先,每个数据/任务存储/部署于其主节点,即关键字所在关键字空间段的负责节点。其次,每个数据/任务备份于其主节点的若干邻居关键字空间段的负责节点,通常是后续关键字空间段的负责节点。现有的分布式关键字表中,每个节点同时承担主备两种负载,通常主负载和备份负载的形式不一样。主备负载需要同时均衡,但却难同时均衡。现有技术在划分和分配关键字空间段时,要兼顾物理节点的主备,兼顾前后关键字空间段的负责物理节点,才能做到负载均衡。图I为现有实施例一种关键字表网络负载分配示意图,以图I为例,数据以I主2备的形式存储3份,环形的关键字空间分成若干段(关键字空间一般以环形表示,也可以以其他形式表示),分配给各节点,每个节点负责至少一段,每个节点负责所分配的段数据的主存储,并为前驱的2段做备份,节点自己负责段的数据备份于后续2段的负责节点,图I中节点A的能力是系统所有节点能力之和的1/16,如图I所示,A负责了整个系统1/16的主负载,却负责整个系统6/32的备份负载。由于备份负载的均衡受制于邻居空间段的大小,所以节点A的负载无法均衡。可见,由于节点负载分配受邻居节点影响问题,目前的分布式关键字表网络要么无法做到负载均衡;要么需要依赖很复杂的算法、牺牲性能来频繁调整关键字空间的分割和分配,来实现负载均衡;要么需要以大大增大路由表为代价将关键字空间分割为非常多段,给每个节点分配很多段关键字空间,从而导致路由表的维护及使用较为繁琐,总之,现有分布式关键字表网络不能有效实现负载均衡。
发明内容有鉴于此,本发明的主要目的在于提供一种分布式关键字表网络及对其进行操作的方法,能够有效实现负载均衡。为达到上述目的,本发明的技术方案是这样实现的一种对分布式关键字表网络进行操作的方法,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求路由到存储/部署所述数据/任务的一个关键字空间中的负责节点,由所述负责节点向存储/部署所述数据/任务的其余全部或部分关键字空间发起对所述数据/任务的相同操作。数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。一种对分布式关键字表网络进行操作的方法,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求路由到存储/部署所述数据/任务的一个关键字空间中的负责节点,由所述负责节点向存储/部署所述数据/任务的另一空间发起对所述数据/任务的相同操作,直到被操作的空间数满足预设值。数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。一种对分布式关键字表网络进行操作的方法,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求分别路由到所有存储/部署所述数据/任务的关键字空间中的负责节点。数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。一种分布式关键字表网络,该分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段。每个数据/任务根据其关键字存储/部署于至少一个关键字空间中负责对应关键字空间段的节点上。该分布式关键字表网络中的部分关键字空间为主关键字空间,其余关键字空间为备关键字空间,主关键字空间中的负责节点优先对相应数据/任务的部分操作或全部操作请求进行处理,主关键字空间中的负责节点无法访问时,由备关键字空间的负责节点对所述数据/任务的部分操作或全部操作请求进行处理,或者,该分布式关键字表网络中所有关键字空间对等,关键字空间进行数据/任务操作不受优先顺序限制。分布式关键字表网络中的节点只负责主关键字空间中的关键字空间段,或者,只负责备关键字空间中的关键字空间段。分布式关键字表网络中的节点负责一个关键字空间中的一个或多个关键字空间段,或者,在每个关键字空间都负责一个或多个关键字空间段,或者,在所有关键字空间中的多个关键字空间中负责一个或多个关键字空间段。本发明分布式关键字表网络及对其进行操作的方法,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段。通过本发明,分布式关键字表网络中每个节点可以灵活分配数据/任务,节点间不互相影响任务/数据分配,从而负载分配灵活,能够以较小的代价有效实现负载均衡。图I为现有实施例一种关键字表网络负载分配不意图;图2为本发明实施例I一种关键字表网络的关键字空间分割示意图;图3为本发明实施例2—种关键字表网络负载分配意图;图4为本发明实施例3—种关键字表网络负载分配意图;图5为本发明实施例4关键字表网络中数据/任务操作方法流程示意图;图6为本发明实施例5关键字表网络中数据/任务操作方法流程示意图;图7为本发明实施例6关键字表网络中数据/任务操作方法流程示意图。具体实施例方式为了解决现有分布式关键字表网络的节点负载分配受邻居节点影响,无法做到负载均衡或负载均衡代价大的问题,本发明提出一种分布式关键字表网络,该分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间又分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段。相应的,每个数据/任务根据其关键字存储/部署于至少一个关键字空间中负责对应关键字空间段的节点上。关键字可以通过哈希函数生成,分布式关键字表网络的客户端可以对分布式关键字表网络进行数据/任务的操作,如增加、删除、查询、修改。需要说明的是,可以将所有关键字空间中的部分关键字空间设置为主关键字空间,其余关键字空间设置为备关键字空间,这样,对数据/任务的部分操作(如增加、删除、修改操作)或全部操作请求优先发向主关键字空间中负责所述数据/任务的节点(也称为负责节点),主关键字空间中的负责节点因节点故障等原因无法访问才将所述操作请求发向备关键字空间的负责节点;也可以设置所有关键字空间对等,对任意一个关键字空间均可进行数据/任务操作,没有优先顺序。可选的,分布式关键字表网络中,有的节点只负责主关键字空间中的关键字空间段,有的节点只负责备关键字空间中的关键字空间段。需要说明的是,分布式关键字表网络中,每个节点可以只负责一个关键字空间中的一个或多个关键字空间段,也可以在每个关键字空间都负责一个或多个关键字空间段,还可以在所有关键字空间中的多个关键字空间中负责一个或多个关键字空间段。可选的,分布式关键字表网络的节点或客户端向部分或所有关键字空间节点请求操作同一数据/任务。可选的,分布式关键字表网络的节点或客户端发起一个对数据/任务的操作请求时,该请求被路由到存储/部署所述数据/任务的一个关键字空间中所述数据/任务的负责节点,并由该负责节点代为向存储/部署所述数据/任务的其余全部或部分关键字空间发起对同一数据/任务的相同操作。可选的,分布式关键字表网络的节点或客户端发起一个对数据/任务的操作请求时,该请求被路由到存储/部署所述数据/任务的一个关键字空间中所述数据/任务的负责节点,收到请求的负责节点代为发起对存储/部署所述数据/任务的另一空间的同一数据/任务的相同操作,直到被操作的空间数满足预设值。在分布式关键字表网络中,假设数据/任务存储/部署k份,则一次对数据/任务的操作可以操作I至k份,只要一次读操作的份数r和一次写操作(增删改)的份数w满足r+w>k即可。需要说明的是,要对关键字表网络中的数据/任务执行操作时,关键字表网络节点或关键字表网络的客户端发起的操作请求必须路由到负责所述数据/任务的存储/部署的节点。现有分布式关键字表网络只需将请求路由到一个空间的数据/任务的存储/部署的节点,路由方法有非常多种,但都是根据路由表进行路由;本发明需要路由到多个空间,路由到每个空间的方法可以与现有技术相同或类似。为说明本发明的可实现性,下面举例说明一种路由表和路由方式。每个分布式关键字表网络节点都拥有一个包含所有关键字段和所有分布式关键字表网络节点信息的路由表,路由表记录了任何一个空间的任何关键字段是由哪个节点负责,记录了每个节点的地址。根据想操作的数据或任务的关键字,查询路由表,就知道要将操作请求发送到哪个地址。由于路由和负载分配方式不同,节点的加入和退出分布式关键字表网络可以有很多种方式。下面仍然以拥有完全路由表的方式为例说明一个节点加入分布式关键字表网络时,向分布式关键字表网络中的任意节点获取路由表,分配空间段并复制其中数据后,根据路由表中节点地址,向网络中的所有节点通知自身加入和分配到的空间段,让其他节点更新路由表。分配空间段可以索要负载最重的一个或多个节点的部分空间段或部分空间段的一部分,节点间相互保活,通过保活节点间可以互相检测对方是否退出网络。当一个节点检测到另一个节点退出时,向网络中的所有节点通知,并从网络中选择负载最轻的一个或多个节点来负责退出节点的空间段。每个节点的容量信息可以包含在路由表中,使每个节点知道任何一个节点的负载情况。下面通过具体实施例对本发明的方案作进一步说明。实施例I图2为本发明实施例I一种关键字表网络的关键字空间分割不意图,如图I所不,本发明一种分布式关键字表网络包含多个相同的关键字空间。数据/任务在每个关键字空间至多只存储/分配一份。一个关键字空间被分割可以被分割为多段,将空间以段为单位分配给多个节点负责。一个关键字空间也可以不分割,完全分配给一个节点。实施例2图3为本发明实施例2—种关键字表网络负载分配示意图,如图3所示,该关键字表网络有两个相同的关键字空间,两个关键字空间分别有3个节点,分别为A1、B1、C1,以及A2、B2、C2,节点A1、B1、C1,以及A2、B2、C2都分别在两个空间分配了一个关键字空间段。每个节点在两个空间负责多长的关键字空间段不受其他节点影响。假设节点A1、B1、C1的容量比为367,节点A2、B2、C2的容量比也为367,要实现负载均衡可以让节点A1、B1、C1,以及A2、B2、C2在每个空间负责的空间段长度比也是367,这样的话,不管这两个空间是对等的空间,还是一个主空间一个备份空间,三个节点的负载都是均衡的。实施例3图4为本发明实施例3—种关键字表网络负载分配示意图,如图4所示,该关键字表网络有两个相同的关键字空间,共有4个节点A、B、C、D,节点A、B分别在空间I分配了一个关键字空间段,节点C、D分别在空间2分配了一个关键字空间段。每个节点在负责多长的关键字空间段不受其他节点影响。两个空间的节点完全不同便于实现高可靠性的多地域或多数据中心数据存储。空间I的节点和空间2的节点不同且分布处于不同的地域或数据中心,使每个数据可以存储在两个地域或数据中心中,避免了由于区域故障造成两份数据都丢失的情况。参考图4,假设两个空间是对等的,没有主备之分。每个节点负责的空间长度与两个空间长度和之比应与其容量与所有节点容量和之比相当。假设A、B、C、D的容量比为10:6:7:9,要实现负载均衡只要它们负责的空间长度比为10679S阿,与节点负责了几个空间的空间段无关,与节点负责哪个空间的空间段无关。参考图4,假设两个空间中,一个空间是主空间,另一个空间是备空间。假设A、B的容量比106,专门部署来承担主负载;C、D的容量比为79,专门部署来承担备负载。只需要A、B在主空间分配均衡,即A、B负责的空间长度比为106,C、D在备空间分配均衡,即C、D负责的空间长度比为79即可实现A、B的负载均衡和C、D的负载均衡。实施例4本实施例中,关键字表网络节点或客户端发起一个对某数据/任务的操作请求(包括增删查改),该请求被路由到其中一个空间的该数据/任务的负责节点,并由该负责节点代为对发起其余全部或部分空间的同一数据/任务的相同操作。图5为本发明实施例4关键字表网络中数据/任务操作方法流程示意图,如图5所示,对关键字为13的数据/任务操作请求首先被路由到空间I的负责节点,然后由空间I的负责节点分别发起对空间2和空间3的同一数据/任务的同一操作请求,请求分别被路由到空间2的负责节点和空间3的负责节点,三个负责节点根据请求内容对数据/任务进行相应操作。实施例5本实施例中,关键字表网络节点或客户端发起一个对某数据/任务的操作请求(包括增删查改),该请求被路由到其中一个空间的该数据/任务的负责节点,收到请求的负责节点代为发起对另一空间的同一数据/任务的相同操作,直到被操作的空间数满足预设值。图6为本发明实施例5关键字表网络中数据/任务操作方法流程示意图,如图6所示,对关键字为13的数据/任务操作请求首先被路由到空间I的负责节点;然后由空间I的负责节点发起对空间2的同一数据/任务的同一操作请求,请求被路由到空间2的负责节点;接着由空间2的负责节点发起对空间3的同一数据/任务的同一操作请求,请求被路由到空间3的负责节点;3个负责节点根据请求内容对数据/任务进行相应操作。实施例6本实施例中,关键字表网络节点或客户端分别对全部或部分关键字空间发起对某数据或任务的相同操作请求(包括增删查改),操作请求分别被路由到全部或部分空间的该数据或任务的负责节点。图7为本发明实施例6关键字表网络中数据/任务操作方法流程示意图,如图7所示,对关键字为13的数据/任务操作请求被路由到3个空间的负责节点,3个负责节点根据请求内容对数据/任务进行相应操作。需要说明的是,实施例中所述方法中的路由,可能不经过中间节点,也可能经过若干中间节点。由以上技术方案可以看出,本发明的分布式关键字表网络中每个节点可以灵活分配数据/任务,节点间不互相影响任务/数据分配,负载分配灵活,容易实现负载均衡。同时,本发明的分布式关键字表网络还能够实现主备和对等两种数据/任务管理,便于实现针对主备两种形式负载的节点配置部署,保证数据/任务的高可靠性的多区域或多数据中心的存储。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。权利要求1.一种对分布式关键字表网络进行操作的方法,其特征在于,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求路由到存储/部署所述数据/任务的一个关键字空间中的负责节点,由所述负责节点向存储/部署所述数据/任务的其余全部或部分关键字空间发起对所述数据/任务的相同操作。2.根据权利要求I所述的方法,其特征在于,数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。3.一种对分布式关键字表网络进行操作的方法,其特征在于,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求路由到存储/部署所述数据/任务的一个关键字空间中的负责节点,由所述负责节点向存储/部署所述数据/任务的另一空间发起对所述数据/任务的相同操作,直到被操作的空间数满足预设值。4.根据权利要求3所述的方法,其特征在于,数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。5.—种对分布式关键字表网络进行操作的方法,其特征在于,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段,该方法包括分布式关键字表网络的节点或客户端发起对数据/任务的操作请求时,将所述操作请求分别路由到所有存储/部署所述数据/任务的关键字空间中的负责节点。6.根据权利要求5所述的方法,其特征在于,数据/任务在分布式关键字表网络中存储/部署k份,则一次对所述数据/任务的操作涉及的份数为I至k份,一次读操作的份数r和一次写操作的份数w满足r+w>k。7.一种分布式关键字表网络,其特征在于,该分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段。8.根据权利要求7所述的分布式关键字表网络,其特征在于,每个数据/任务根据其关键字存储/部署于至少一个关键字空间中负责对应关键字空间段的节点上。9.根据权利要求7所述的分布式关键字表网络,其特征在于,该分布式关键字表网络中的部分关键字空间为主关键字空间,其余关键字空间为备关键字空间,主关键字空间中的负责节点优先对相应数据/任务的部分操作或全部操作请求进行处理,主关键字空间中的负责节点无法访问时,由备关键字空间的负责节点对所述数据/任务的部分操作或全部操作请求进行处理,或者,该分布式关键字表网络中所有关键字空间对等,关键字空间进行数据/任务操作不受优先顺序限制。10.根据权利要求7所述的分布式关键字表网络,其特征在于,分布式关键字表网络中的节点只负责主关键字空间中的关键字空间段,或者,只负责备关键字空间中的关键字空间段。11.根据权利要求7所述的分布式关键字表网络,其特征在于,分布式关键字表网络中的节点负责一个关键字空间中的一个或多个关键字空间段,或者,在每个关键字空间都负责一个或多个关键字空间段,或者,在所有关键字空间中的多个关键字空间中负责一个或多个关键字空间段。全文摘要本发明公开了一种分布式关键字表网络,分布式关键字表网络维护多个关键字取值范围相同的关键字空间,每个关键字空间分割为至少一个关键字空间段,关键字空间段分配给节点负责,每个节点负责至少一个关键字空间中的至少一段关键字空间段。本发明还相应地公开一种对分布式关键字表网络进行操作的方法。通过本发明,分布式关键字表网络中每个节点可以灵活分配数据/任务,节点间不互相影响任务/数据分配,从而负载分配灵活,能够以较小的代价有效实现负载均衡。文档编号H04L29/08GK102739707SQ201110086320公开日2012年10月17日申请日期2011年4月7日优先权日2011年4月7日发明者李漓春申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1