服务感知分布式散列表路由的制作方法

文档序号:7793214阅读:301来源:国知局
服务感知分布式散列表路由的制作方法
【专利摘要】在一个实施例中,计算机网络中的节点加入与分布式散列表(DHT)相关联的全局环,并且维护针对全局环的DHT路由表和DHT数据库。此外,节点可确定特定的服务类,其中该节点被配置用于该特定的服务类,并且节点可根据特定的服务类加入特定的基于服务的子环,其中该特定的基于服务的子环的所有节点均在全局环内。同样地,可维护针对特定的基于服务的子环的基于服务的DHT路由表和基于服务的DHT数据库,以使得由特定的服务类识别的DHT操作(例如,通过门户节点)被路由至特定的基于服务的子环。
【专利说明】服务感知分布式散列表路由

【技术领域】
[0001]本公开一般涉及计算机网络,更具体地,涉及分布式散列(hash)表(DHT)。

【背景技术】
[0002]正如本领域技术人员所理解的,分布式散列表(DHT)是基于键-值(key-value)对的、分散的、可扩展的以及容错的数据库系统。一些众所周知的DHT协议有Chord、Pastry、Kademlia和P_Grid,这些协议一般定义了节点加入现有的DHT网络、建立DHT路由表和使用该DHT路由表以向对象的根节点转发TOT/GET消息的处理。根节点通常被定义为其节点标识符(ID)最接近被存储(I3UT)或被检索(GET)的对象的节点。基本的DHT协议对于基于DHT网络中的单一键存储和检索对象的简单应用非常有效。应当注意的是,对象的键是通过对对象中的唯一字段进行散列运算得出的,并且对象的根节点是严格基于该散列的结果的。

【专利附图】

【附图说明】
[0003]通过参照下面的描述并结合附图可以更好地理解本发明的实施例,其中相同的标号表示相同的或功能相似的元素,其中:
[0004]图1示出了计算机网络的示例;
[0005]图2示出了网络设备/节点的示例;
[0006]图3A-3B示出了简化的分布式散列表(DHT)环的示例;
[0007]图4示出了基于服务的DHT子环的示例;
[0008]图5示出了基于服务的子环中的加入消息的示例;
[0009]图6示出了基于服务的DHT操作的示例;
[0010]图7示出了简化的基于服务的子环路由表的示例;
[0011]图8示出了基于服务的子环保持存活(keepalive)操作的示例;
[0012]图9特别是从节点的角度示出了计算机网络中的服务感知DHT路由的示例简化过程;
[0013]图10特别是从门户节点的角度示出了计算机网络中的服务感知DHT路由另一示例简化过程;以及
[0014]图11示出了计算机网络中响应于节点离开全局环的服务感知DHT路由的又一示例简化过程1100。

【具体实施方式】
[0015]MM
[0016]根据本公开的一个或多个实施例,计算机网络中的节点加入与分布式散列表(DHT)相关联的全局环,并且维护针对全局环的DHT路由表和DHT数据库。此外,该节点可确定其被配置用于的特定的服务类,并且可以根据特定的服务类加入特定的基于服务的子环,其中该特定的基于服务的子环的所有节点均在全局环内。同样地,可为特定的基于服务的子环维护基于服务的DHT路由表和基于服务的DHT数据库,以使得由特定的服务类识别的DHT操作(例如,通过门户节点)被路由至特定的基于服务的子环。
[0017]具体实施例
[0018]计算机网络是通过通信链路和区段进行互连的节点的地理上分布的集合,这些通信链路和区段用于在端节点(比如,个人计算机和工作站,或其他诸如传感器之类的设备等等)间传输数据。从局域网(LAN)到广域网(WAN),许多类型的网络都是可用的。LAN通常通过位于同一广义物理位置(比如,建筑物或园区)的专用私有通信链路连接节点。另一方面,WAN通常通过诸如公用载波电话线、光学光路、同步光纤网络(SONET)、同步数字体系(SDH)链路之类的长距离通信链路连接地理上分散的节点。
[0019]图1是示例简化的计算机网络100的示意框图,其中计算机网络100示意性地包括通过各种通信方法进行互连的节点/设备200 (例如,如所示的被标记为“ 1234”、“3A68”、“58DA”等等),一般称作“网络130”。例如,链路可以是有线链路或共享介质(例如,无线链路),其中,某些节点200 (诸如,路由器、传感器、计算机等等)可例如基于物理位置、当前操作状态等与其他节点200进行通信。通过使用诸如某些已知的有线协议、无线协议等等适当的预定义网络通信协议,可以在计算机网络100的节点/设备间交换数据分组140。在本上下文中,协议由一组定义了节点彼此之间如何交互的规则组成。本领域技术人员将理解任何数量的节点、设备、链路等等均可被用于该计算机网络中,并且此处所示的视图是为了简单起见。
[0020]图2是示例节点/设备200的示意框图,其中该示例节点/设备200可由本文所述的一个或多个实施例用作上面图1中所示的任何节点。设备可包括通过系统总线250进行互连的一个或多个网络接口 210 (例如,有线的、无线的等等)、至少一个处理器220和存储器240。
[0021](一个或多个)网络接口 210包括用于通过被耦合至网络100的链路传送数据的机械、电气以及信令电路。这些网络接口可被配置为使用一个或多个通信协议发送和/或接收数据。还应当注意的是节点可具有两个不同类型的网络连接210,例如,无线和有线/物理连接,并且此处所示的视图仅仅是为了说明。
[0022]存储器240包括多个可由处理器220和网络接口 210寻址的用于存储与本文所述的实施例相关联的软件程序和数据结构的存储位置。处理器220可包括适用于执行软件程序和操纵数据结构245的硬件元件或硬件逻辑。操作系统242通过调用支持在设备上执行的软件处理和/或服务的操作等来在功能上组织设备,操作系统242的某些部分通常驻存在存储器240中并且可由处理器执行。如本文所述的,这些软件处理和/或服务可包括路由处理244和说明性的分布式散列表(DHT)处理248。
[0023]包括各种计算机可读介质的其他处理器和存储器类型可被用于存储和执行与本文所述的技术有关的程序指令,这对本领域技术人员是显而易见的。另外,尽管描述说明了各种处理,可以明确地预期各种处理可被实施为被配置成根据本文的技术(例如,根据相似处理的功能)来运作的模块。此外,尽管处理被分别示出,但本领域技术人员将理解的是处理可以是其他处理中的例程或模块。例如,DHT处理248可以是路由处理244的特定组成部分。另外,尽管处理244和248在集中式存储器240中被示出,替代的实施例提供了这些处理具体地操作于网络接口 210中。
[0024]如本领域技术人员所理解的,路由处理244包括由处理器220执行的计算机可执行指令以实现由一个或多个诸如先应式或反应式路由协议之类的路由协议提供的功能。在有能力的设备上,这些功能可被配置成管理一个或多个包含诸如被用于做出路由/转发决策的数据的路由表或转发表(例如,数据结构245)。
[0025]如上面所提到的,分布式散列表(DHT)是基于键-值对的、分散的、可扩展的并且容错的数据库系统。基本的DHT协议对于基于DHT网络中的单一键存储和检索(PUT和GET)对象的简单应用非常有效。应当注意的是,对象的键是通过对对象中的唯一字段进行散列运算获得的,并且对象的根节点是严格基于该散列的结果的。也就是说,为了将对象置于节点中,对象的键被用于确定网络(参与DHT “环”)中对应于那个散列的键的特定的节点。
[0026]图3A示出了说明每一个节点如何具有其自身的键空间的示例简化DHT环300。尤其,为确定节点的键空间(其中该节点是“根节点”),对节点的标识符(ID)(例如,媒体访问控制(MAC)地址、节点ID等等)被进行散列运算以确定DHT中特定的“位置”(例如,通常是在2128或2256个数字范围内的数字)。如图3A所示,例如,假设节点“X”具有的散列环值为“5”,并且节点“Y”具有的值为“20”,于是在具有0-29的位置的环中,节点X与5-19的键空间相关联,并且节点Y与20-29和0-4的键空间相关联(从而成为“环”结构)。为了将对象(例如,文件、数据结构等等)置于网络中,对象被进行散列运算(例如,对象中的唯一字段)以将其与特定的键(例如,“12”)相关联,其后相关联的PUT请求被发送至对应于该键空间的节点(例如,节点X)。为了检索对象(GET),请求者提交该相同的键(例如,“12”),并且DHT环300被用于确定哪个设备对应于该键空间(同样,节点X)。如图3B所示,当在DHT环300中插入新节点“Z”时(例如,新节点“Z”的散列ID对应于值“10”),键空间被相应地划分以使得在示例中节点X处理5-9、节点Z处理10-19并且节点Y处理20-29和0-4。(本领域技术人员将理解的是组织键空间的方式有很多,并且此处所示出和描述的组织不意图限制本发明的实施例的范围。)
[0027]注意,如果DHT网络是地理上分散的(通常是这样),对象可被存储在物理上远离大多数GET发起的位置,这是由于DHT中的每一个节点均具有相同的成为任意对象的根节点的可能性。对PUT没有使用局部性信息。因此,GET可能劣于最优情况。为了减少GET的延迟,对象被存储在靠近大多数GET发起的节点是很有必要的。基本DHT协议还不能在对象间做出区分,并且不具有提供不同服务水平的机制。例如,如果DHT环过载,目前没有允许用于具有较低服务水平的对象的PUT被拒绝而用于具有较高服务水平的对象的PUT被接受的机制。
[0028]因此,本文的技术提供了无缝地解决上述问题的服务感知DHT系统。尤其,本文的技术定义了允许由最有可能通过创建相干的基于服务的“子环”而从中被检索的节点存储对象的DHT系统。例如,管理员(操作者)可控制一组节点以存储对象的每个类,并且通过配置可实现服务差异化。以这种方式,建立了通过服务类型有效地存储和定位对象的服务感知DHT技术,该服务感知DHT技术考虑到例如局部性、网络以及硬件信息。如本文所描述的,每一个服务水平由独立的DHT路由表管理,其中节点可参与多个服务水平,并且一个或多个节点形成DHT覆盖以将服务水平管理为特定的基于服务的(DHT网络的每一个节点均参与的“全局”的)子环。
[0029]特别地,根据下面详细描述的本公开的一个或多个实施例,计算机网络中的节点加入与DHT相关联的全局环,并且维护针对该全局环的DHT路由表和DHT数据库。此外,节点可确定特定的服务类,其中该节点被配置用于该服务类,并且可根据该特定的服务类加入特定的基于服务的子环,其中,该特定的基于服务的子环的所有节点均在全局环内。正因如此,可维护针对特定的基于服务的子环的基于服务的DHT路由表和基于服务的DHT数据库,以使得由特定的服务类识别的DHT操作(例如,通过门户节点)被路由至特定的基于服务的子环。
[0030]作为说明,本文所描述的技术可由硬件、软件和/或固件比如根据DHT处理248、结合路由处理244执行,DHT处理248可包括由处理器220执行以实现与本文所描述的技术相关的功能的计算机可执行指令。例如,本文的技术可被视为常规DHT协议的扩展,并且正因如此,本文的技术可相应地由本领域所理解的执行那些协议的相似的组件处理。
[0031]在操作上,与(如经典DHT协议)仅仅创建一个DHT环不同,本文的技术除了创建全局环外还可以创建多个相干DHT子环,其中每个DHT子环专用于处理一个服务类(即,基于服务的子环)。所有节点通常必须加入全局环(例如,为了下面所描述的保持存活优化),但每个节点可选择性地加入所配置的那样多的子环。又如下面所描述的,诸如“PUT”和“GET”之类的DHT操作可由特定的服务类标识符识别,该特定服务类标识符允许操作被路由至对应的DHT子环。
[0032]图4示出了根据本文的说明性的实施例的基于服务的DHT子环的示例。尤其,如所示出的,全局环410可包括一个或多个节点200 (比如,上面图1中所示的节点),其中,该全局环是通过一般常规的方式根据DHT路由表415和DHT数据库创建的。然而,与全局环410相关联的是任意数量的具有全局环的一个或多个节点的基于服务的子环420 (服务“A”和服务“B”)。也就是说,每个(与全局环相关联的)基于服务的子环的每个节点均在全局环内。例如,节点“1234”位于服务A和服务B中的每个子环以及全局环内。然而,节点“2167”仅位于服务A(和全局环)中,而节点“3A68”仅位于服务B(和全局环)中。应当注意的是,不是全局环410内的每个节点都需要位于多个基于服务的子环420中的任何一个子环内,比如,节点“2498”。此外,除了全局环的路由表415和数据库之外,还有与每个子环相关联的独立的DHT路由表425和数据库。
[0033]为了配置基于服务的子环,操作者或管理员创建服务类并且将对象映射至将被存储在DHT子环中的服务类。一般来说,管理员可以基于检索位置的可能性、节点的CPU、节点的盘容量(capacity)等等分配和识别最“佳”的DHT节点以为每个服务类对象指向PUT和GET。换句话说,操作者可确定DHT节点被配置用于的一个或多个服务类,这可以基于从节点类型、节点性能(capability)、节点位置、节点功能、节点应用(在节点上运行的专门应用或各种类型的应用)等等所选择的服务类。
[0034]此外,管理员(或自动化处理)还识别针对每个服务类或子环的引导程序(bootstrap)节点(“BN”)。具体地,所有节点必须经由全局引导程序节点加入全局环并且经由相应的服务引导程序节点加入任意服务覆盖。图5示出了根据本文的一个或多个实施例的基于服务的子环的加入消息/过程的示例。具体地,除了加入DHT的全局环410 (并因此维护针对全局环的DHT路由表415和DHT数据库)之外,计算机网络100的某些节点还可根据它们的(一个或多个)特定的服务类加入一个或多个基于服务的子环420。为了这样做,加入的节点向引导程序节点(全局BN或服务BN)发送加入消息540,引导程序节点将该加入消息路由至该加入的节点的键的根节点。
[0035]例如,对于新节点加入的每一个服务类(例如,节点“2167”加入服务A),新节点将加入消息540发送至该特定的服务类的引导程序节点(BN)。其后,对应的服务类的引导程序节点将加入消息路由至对应的服务类的根节点,例如,节点“1234”。当加入消息被路由时(如本领域技术人员将理解的),沿着路径的每个节点必须将路由表发送至对应于“R”行数字减去I的特定服务类的加入的节点,其中R是新节点将被插入到转发节点的路由表的行号。通过这个方案,到加入消息540被路由至根节点时,新节点将具有完整的路由表420以参与针对特定的服务类的PUT和GET的路由。换句话说,新节点发送针对其参与的所有服务类/子环(不仅仅是全局环)的加入消息,并且每个加入消息540被发送至针对特定的服务类的引导程序节点。(应当注意的是特定的环/子环的引导程序节点不需要是该环/子环的一部分。)
[0036]根据本文的技术,诸如PUT和GET之类的DHT操作由特定的服务类识别,以使得它们可被适当地路由至多个子环中的特定的基于服务的子环420。图6示出了基于服务的DHT操作的示例,其中一个或多个面向客户端的门户节点630接收DHT操作请求660 (例如,PUT/GET、PUB/SUB等等),并且将操作转发至适当的服务覆盖。也就是说,门户节点确定所识别的请求的服务类(标签665,例如,基于对象类型的服务类编号),并且将该请求路由至特定的基于服务的子环的所选择的节点(显然,门户节点知道每个基于服务的子环/覆盖的至少一个成员)。其后,该子环的节点可因此在该基于服务的子环内执行DHT机制。通过这种方式,服务类被用于确定哪个DHT路由表和节点来执行所请求的诸如存储和检索对象之类的DHT操作。
[0037]每个节点200维护其自身的针对其所属的每个环和子环的路由表(数据结构245)。图7示出了简化的基于服务的子环路由表的示例,其中节点(例如,节点“1234”)维护针对多个基于服务的子环中的每一个子环的独立的基于服务的DHT路由表420和独立的基于服务的DHT数据库,例如,分别针对服务A和服务B的路由表720a和720b。应当注意的是,除了存储全局路由表410 (图7中的710)之外还存储路由表720a和720b。具体地,DHT节点处的基于服务的路由表是该节点处的全局路由表的子集,并且通过定期轮询和(例如,基于接近度的)邻居选择来维护。因此,全局路由表中的每个单元格(条目)能够包含多个邻居以覆盖DHT节点上运行的所有服务。
[0038]DHT协议通常将保持存活用于活跃性(liveliness)和冗余。由于本文的技术中基于服务的路由表425 (725)是全局路由表415 (715)的子集,在本文的一个或多个实施例中,保持存活仅与全局路由表中的邻居进行交换。也就是说,本文的技术基于在全局环内进行交换的保持存活消息,维护针对每个特定的子环的保持存活操作,显然提供了比维护针对每个子环的保持存活更高的效率。显然,根据本文的技术,邻居选择算法中的优化涉及赋予运行多个服务的邻居更高的权重。可选择地,该权重可基于与该邻居的物理接近度的权衡。
[0039]图8示出了基于服务的子环保持存活操作的示例,其中尽管创建了多个环,服务感知DHT路由不需要发送保持存活消息840以维护每个独立的环。反而,需要基于服务的DHT子环中的每个节点加入全局环410以消除否则将针对每个独立的环420发送的保持存活消息。(然而,需注意的是,全局路由表仍包含比无服务感知DHT环多的条目,这是由于轮询之后所选择的邻居可能无法运行节点(例如,节点“1234”)被订阅的所有服务。)
[0040]此外,当节点离开全局环410时,全局环410中其余的节点将从该离开的节点参与的(即,该离开的节点已加入的)所有环(子环420和全局环410)中移除该离开的节点。注意,判定节点是否离开全局环可基于显式通知或是响应于没有接收到保持存活消息。
[0041]为了说明服务感知DHT路由使用基于服务的DHT子环,下面的用例作为示例(而不是以限制的方式)被给出:
[0042]1.DHT网络由两种类型的节点组成:具有持久存储的节点(例如,盘节点)和不具有持久存储的节点(例如,无盘节点)。显然,无盘节点能参与GET操作,但不能参与PUT操作。管理员可将无盘节点配置为一个服务类并且将盘节点配置为另一服务类,以使得PUT操作将仅被路由至盘节点。
[0043]2.内容提供商使用DHT来存储影片,其中内容提供商具有部署在全球不同部分的DHT节点。理想情况下,内容提供商希望基于地区的影片观看人口统计数据(例如,国籍、语言、种族等等)向DHT节点存储不同的影片,这是由于那将允许更高的GET操作的可能性。例如,中国影片相比于墨西哥更有可能在中国被观看,同时墨西哥影片则更有可能在墨西哥被观看。所以内容提供商可能希望识别中国的DHT节点以存储中国影片而识别墨西哥的节点以存储墨西哥影片。为了实现这点,墨西哥影片可被分配一个服务类而中国影片可被分配另一服务类。
[0044]显然,可基于服务感知DHT路由提供其他用例,比如,服务器容量、时区、专门内容等等,本文所描述的那些仅仅作为示例。
[0045]图9特别是从节点的角度示出了根据本文所描述的一个或多个实施例的计算机网络中的服务感知DHT路由的示例简化过程900。过程900可开始于步骤905,并且进行到步骤910,其中,如上面更加详细地描述的,节点(例如,1234)加入与(例如,在特定的引导程序节点处的)DHT相关联的全局环410,其中在步骤915中,该节点还维护针对全局环的DHT路由表415和DHT数据库。此外,在步骤920中,节点可(例如,基于配置)确定该节点被配置用于的一个或多个服务类,以使得其后在步骤925中节点可根据(一个或多个)特定的服务类加入一个或多个对应的基于服务的子环420。如上面所提到的,(一个或多个)特定的基于服务的子环的所有节点均在全局环内(例如,通过针对该子环的专门引导程序节点)。在步骤930中,节点针对其所加入的基于服务的子环420的每个子环维护基于服务的DHT路由表425和基于服务的DHT数据库。
[0046]过程900示意性地进行到步骤935,其中节点基于在全局环410内进行交换的保持存活消息参与对(一个或多个)特定的子环420的保持存活操作的维护(维护路由表)。此外,在步骤940中,节点可接收由被路由至特定的基于服务的子环的特定的服务类识别的DHT操作(例如,PUT/GET)。过程900示意性地“结束”于步骤945,然而,过程可从任意上面的步骤处继续以更新服务类、加入新的基于服务的子环、维护保持存活、接收DHT操作等等,并且过程900的视图不意图限制本文的实施例的范围。
[0047]此外,图10特别是从门户节点630的角度示出了根据本文所描述的一个或多个实施例的计算机网络中的服务感知DHT路由的另一示例简化过程1000。过程1000可开始于步骤1005,并进行至步骤1010,其中,如上面更加详细地描述的,门户节点确定与DHT相关联的全局环410,并且门户节点还得知该全局环中的至少一个节点(例如,如果其自身未参与该环)。此外,在步骤1015中,门户节点确定多个服务类并根据该多个服务类确定相关联的基于服务的子环420,其中如上面所描述的,基于服务的子环的所有节点均在全局环内。注意,此处门户节点还得知参与每个基于服务的子环的至少一个节点。根据门户节点操作,在步骤1020中门户节点将由特定的服务类识别的引入DHT操作(例如,PUT/GET)路由至多个基于服务的子环中的特定的基于服务的子环,其中该特定的基于服务的子环对应于该被识别的特定的服务类。过程1000示意性地结束于步骤1025,尽管显然还可有更新DHT成员关系(在全局环和/或子环内的节点)、路由DHT操作等的继续选择。还应当注意的是在门户节点还是参与全局环和/或任意子环的节点的情况下,门户节点还可根据上面图9中的过程900进行操作。
[0048]最后,图11示出了响应于节点离开全局环计算机网络中的服务感知DHT路由的又一示例简化过程1100。过程1100开始于步骤1105,并进行到步骤1110,其中,如上面更加详细地描述的,响应于确定特定的节点已离开全局环(例如,明确地离开或未响应保持存活消息),在步骤1115中节点(DHT节点)可从该特定的节点已加入的所有多个基于服务的子环中移除该特定的节点。其后,说明性的过程1100结束于步骤1120,直到另一节点离开全局环。
[0049]应当注意的是,尽管如上面所描述的过程900-1100中的某些步骤是可选的,但是图9-11中所示的步骤仅仅是用于说明的示例,并且某些其他步骤可根据需要而被包括或排除。此外,尽管示出了步骤的特定顺序,但是此排序仅仅是说明性的,并且在不背离本文的实施例的范围的情况下可使用任何适当的步骤安排。另外,尽管过程900-1100是被分开描述的,但是来自每个过程的某些步骤可被并入彼此之中,并且过程之间不意图互相排斥。
[0050]因此,本文所描述的技术提供了计算机网络中的服务感知DHT路由。具体地,通过指定哪些节点处理服务水平,并且创建针对每个服务水平的独立的DHT路由表,本文的技术使客户能够根据服务水平建立分布式数据库应用。也就是说,本文的技术允许管理员在考虑到局部性、网络和访问模式信息的情况下定义哪些节点在每个服务水平处存储哪些对象,这是常规“扁平”DHT不能提供的。此外,由于专用环被创建以处理每个服务水平,因此将可减少PUT/GET延迟。换句话说,由于DHT是服务感知的,与将一切都置于一个扁平DHT环中相对,通过服务水平来存储和定位对象是更加有效的。
[0051]目前可用的某些技术为每个服务创建“命名空间”,并且支持此服务(为该服务运行代码)的DHT节点注册到此命名空间,本质上在单一 DHT环的顶部创建了覆盖树。这些树的维护招致显著的开销,这是由于必须在每个服务水平上实现保持存活,即,针对多个服务注册的物理节点必须交换针对每个服务的保持存活。本文所提出的技术不会遇到这个问题,这是由于多个逻辑环被创建并且覆盖在全局DHT环的顶部,并且保持存活仅被交换以维护全局环。当前可用的技术还缺乏对于每跳操作(例如,多播、路由跟踪等等)的本地支持,在每跳操作中,消息路由中的每个节点必须执行一些操作,即,这是因为DHT仅执行路由至键(route-to-key)。然而,本文的技术本地支持每跳操作,这是由于消息仅需要在已针对该服务进行注册的节点上路由。
[0052]此外,由于本文的技术不需要被缓存占用的附加的磁盘空间,本文的技术优于缓存。缓存可能需要对陈旧的缓存条目进行管理。另外,当与运行多个DHT实例相比较时,本文的技术通常更具有可扩展性,并且不需要像多个DHT实例所需的那么多的处理能力。也就是说,多个DHT实例扩展性不佳,这是由于DHT协议需要被扩展用于多个实例以便于处理在不同端口接收到的消息,并且每个实例还必须发送其自身的保持存活以维护其路由表。
[0053]此外,本文的技术也提供了超过层级式DHT的优势。具体地,层次式DHT使用在逻辑层级中被互相连接的一系列完整环(完整的键空间,也就是说每个键仅能够存在于一个环中)。例如,层级式DHT被用于将多个DHT环(被称为域)互连以提供更好的故障隔离和安全性。每个域还可被置于不同的管理控制之下。每个叶级管理处于层级中的树的底部的域,并且树中的每个较高的层级通过合并所有在下面的域来处理成群的域。顶级域(被称为通用域)由所有的域组成。
[0054]然而,层级式DHT的主要用途是合并多个扁平DHT以形成通用DHT(提供商间对等)以使得置于一个域中对象对其他域可用。跨域访问对象是通过代理节点或网关节点进行的。然而,层级式DHT的使用与如本文所描述的服务感知DHT是不同的。例如,本文的技术指向应用,提供了通用DHT路由平台可被共享的同时允许特定于应用的功能仅驻存在某些节点上的方式。然而,在层级式DHT结构中,叶节点仅属于一个域。因此,如果物理节点运行多个应用并且域对应于服务(应用),则DHT节点必须是逻辑节点,并且多个逻辑节点将驻存在物理DHT节点上。尽管虚拟节点对于异构DHT是有用的技术,但是它们不适用于构建服务域。例如,在企业DHT中,物理节点可运行成百上千的应用,并且用于为每个应用程序维护虚拟节点所需的控制消息量将是不可行的。此外,作为实现层级式DHT优势的折衷,随着GET传播的层级越高,针对对象的GET的延迟呈指数地增加。另一方面,如本文所描述的服务感知DHT构架不会受到这个问题的困扰,这是由于其依靠服务类/服务域来将GET指向适当的逻辑环(子环)。
[0055]尽管已经示出和描述了提供服务感知DHT路由的说明性的实施例,需要理解的是可在本文的实施例的精神和范围之内做出各种其他的改编和修改。具体地,上面的描述一般地提及与Pastry-like DHT协议类似的做法。然而,这些实施例并不就此被限制,而是适用于任何适当的DHT协议。此外,尽管上面的实施例说明了某些类型的可能特别适用的服务或方案,但是这样的讨论仅意图作为示例而不限制本文的实施例。
[0056]前面的描述已指向具体的实施例。然而,显而易见的是可对所描述的实施例做出其他变化和修改以实现它们的一部分或全部优势。例如,可明确地预期到本文所描述的组件和/或元件能够被实施为存储在有形(非暂态)计算机可读介质(例如,盘/CD/RAM/EEPROM等等)中的、具有在计算机、硬件、固件或它们的组合中执行的程序指令的软件。因此,此描述仅以示例的方式做出,并且不限制本文的实施例的范围。因此,所附权利要求的目标在于将所有这样的变化和修改涵盖在本文的实施例的真实精神和范围之内。
【权利要求】
1.一种方法,包括: 通过计算机网络中的节点加入与分布式散列表(DHT)相关联的全局环; 维护针对所述全局环的DHT路由表和DHT数据库; 确定所述节点被配置用于的特定的服务类; 根据所述特定的服务类加入特定的基于服务的子环,其中所述特定的基于服务的子环的所有节点均在所述全局环内;以及 维护针对所述特定的基于服务的子环的基于服务的DHT路由表和基于服务的DHT数据库,其中,由所述特定的服务类识别的DHT操作被路由至所述特定的基于服务的子环。
2.根据权利要求1所述的方法,其中,存在与所述全局环相关联的多个基于服务的子环,其中,所述多个基于服务的子环中的每一个子环的每一个节点均在所述全局环内。
3.根据权利要求2所述的方法,其中,所述全局环内的一个或多个特定的节点不在所述多个基于服务的子环中的任何一个子环之内。
4.根据权利要求1所述的方法,还包括: 确定所述节点被配置用于的多个服务类; 根据所述多个服务类加入多个基于服务的子环;以及 维护针对所述多个基于服务的子环中的每一个子环的独立的基于服务的DHT路由表和独立的基于服务的DHT数据库。
5.根据权利要求1所述的方法,还包括: 基于在所述全局环内进行交换的保持存活消息,维护针对所述特定的子环的路由表。
6.根据权利要求1所述的方法,其中,服务类是以下各项中的至少一项:节点类型?’节点性能;节点位置;节点功能;以及节点应用。
7.根据权利要求1所述的方法,其中加入所述基于服务的子环包括:通过所述基于服务的子环的特定的引导程序节点加入该基于服务的子环。
8.一种方法,包括: 通过计算机网络中的门户节点确定与分布式散列表(DHT)相关联的全局环; 确定多个服务类并根据所述多个服务类确定相关联的基于服务的子环,其中,所述基于服务的子环的所有节点均在所述全局环内;以及 将由特定的服务类识别的DHT操作路由至所述多个基于服务的子环中的特定的基于服务的子环,其中该特定的基于服务的子环对应于所识别的所述特定的服务类。
9.根据权利要求8所述的方法,还包括: 确定特定的节点已离开所述全局环;以及,作为响应, 将所述特定的节点从该所述特定的节点已加入的所有多个基于服务的子环中移除。
10.根据权利要求8所述的方法,其中,所述全局环内的一个或多个特定的节点不在所述多个基于服务的子环中的任何一个子环之内。
11.根据权利要求8所述的方法,还包括: 基于在所述全局环内进行交换的保持存活消息,维护针对所述多个子环的路由表。
12.根据权利要求8所述的方法,其中,服务类是以下各项中的至少一项:节点类型;节点性能;节点位置;节点功能;以及节点应用。
13.根据权利要求8所述的方法,其中,所述门户节点是参与到所述全局环之内的节 点。
14.一种装置,包括: 网络接口,该网络接口作为节点在计算机网络内进行通信; 处理器,该处理器被耦合至所述网络接口并且适用于执行一个或多个处理;以及存储器,该存储器被配置为存储能够由所述处理器执行的处理,所述处理当被执行时,能操作来: 加入与分布式散列表(DHT)相关联的全局环; 维护针对所述全局环的DHT路由表和DHT数据库; 确定所述节点被配置用于的特定的服务类; 根据所述特定的服务类加入特定的基于服务的子环,其中所述特定的基于服务的子环的所有节点均在所述全局环内;以及 维护针对所述特定的基于服务的子环的基于服务的DHT路由表和基于服务的DHT数据库,其中,由所述特定的服务类识别的DHT操作被路由至所述特定的基于服务的子环。
15.根据权利要求14所述的装置,其中所述处理当被执行时,还能操作来: 确定所述节点被配置用于的多个服务类; 根据所述多个服务类加入多个基于服务的子环;以及 维护针对所述多个基于服务的子环中的每一个子环的独立的基于服务的DHT路由表和独立的基于服务的DHT数据库。
16.根据权利要求14所述的装置,其中所述处理当被执行时,还能操作来: 基于在所述全局环内进行交换的保持存活消息维护针对所述特定的子环的路由表。
17.一种装置,包括: 网络接口,该网络接口作为门户节点在计算机网络内进行通信; 处理器,该处理器被耦合至所述网络接口并且适用于执行一个或多个处理;以及存储器,该存储器被配置为存储能够由所述处理器执行的处理,所述处理当被执行时,能操作来: 确定与分布式散列表(DHT)相关联的全局环; 确定多个服务类,并且根据所述多个服务类确定相关联的基于服务的子环,其中,所述基于服务的子环的所有节点均在所述全局环内;以及 将由特定的服务类识别的DHT操作路由至所述多个基于服务的子环中的特定的基于服务的子环,其中,所述特定的基于服务的子环对应于所识别的所述特定的服务类。
18.根据权利要求17所述的装置,其中,所述处理当被执行时,还能操作来: 确定特定的节点已离开所述全局环;并且,作为响应, 将所述特定的节点从该所述特定的节点已加入的所有多个基于服务的子环中移除。
19.根据权利要求17所述的装置,其中,所述处理当被执行时,还能操作来: 基于在所述全局环内进行交换的保持存活消息,维护针对所述多个子环的路由表。
20.根据权利要求17所述的装置,其中所述门户节点是参与到所述全局环内的节点。
【文档编号】H04L29/08GK104380289SQ201380027181
【公开日】2015年2月25日 申请日期:2013年5月24日 优先权日:2012年5月25日
【发明者】史蒂文·V·梁, 马尼什·巴德瓦耶 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1