版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、对等网络(P2P)中主流分布式哈希算法比较分析关键词:P2P,对等网络,Peer-to-Peer,摘要:本文首先从P2P的定义出发,介绍了结构化P2P与非结构化P2P的区别以 及结构化P2P的核心技术DHT而后,本文深入介绍了几种主流的 DHT算法与协 议并对每种协议进行了讨论。文章的最后展望了 DHT在未来的发展趋势。对等网络(Peer-to-Peer,简称 P2P)是目前非常热门的应用,自1999年以来,P 2P的研究一直是国外知名学府(如美国麻省理工学院,加州大学伯克利分校和莱斯大学等)以及知名企业的研发机构(如微软,诺基亚的研究院)关注的重点。它 甚至被美国财富杂志称为改变因特网发展的
2、四大新技术之一, 被认为是代表 无线宽带互联网未来的关键技术。作为一项新兴的技术,目前学术界对P2P在技术层面上的定义尚未统一。KeithW. Ross (Polytechnic University)和 Dan Rubenstein(Columbia University)在9中提到了对P2P系统的3个基本定义:相比中央服务器而言有明显的自治性(Auto nomy)。利用网络边缘的资源,如存储/计算能力和信息资源。网络边缘的资源处在动态的变化中(新的资源加入,已有的资源消失)。自治性的要求使得P2P系统不再需要特定的中央管理机制,所有节点之间拥有对 等的关系。这一方面为系统带来了自组织、容错
3、性好、可扩展性强等优点;另一 方面也提出了新的问题:如何在没有集中管理机制的情况下实现系统的自组织和 自管理?定义 2,3中分布性和动态性的特点使得上述问题的实现具有更大的难度。在分 布式系统中,过多过快的信息交互可能消耗大量的网络资源; 而为了实时反映系 统的变化,又要求节点及时获得更新信息,这就需要在节点之间进行通信。为了解决这一对矛盾,已经有许多P2P的框架和协议被提出来并得到了很好的应 用。结构化与非结构化 P2P依照节点信息存储与搜索方式的不同,诸多P2P协议可以分为2大类:结构化(S tructured)的与非结构化(Unstructured)的系统。非结构化P2P系统在非结构化的
4、系统中,每个节点存储自身的信息或信息的索引 ( 如指针和 IP 地 址)。当用户需要在P2P系统中获取信息时,他们预先并不知道这些信息(如某个 文件)会在那个节点上存储。因此,在非结构化 P2P系统中,信息搜索的算法难 免带有一定的盲目性,例如最简单的泛洪式查找(类似于广播)和扩展环查找(从 最近的 n 个节点开始,层层转发直到找到目标或超出了跳数的上限为止 )。一些典型的应用采用了一些优化的办法。如在 Gnutella 中,采用了等级制的组 成结构:节点被分成超级节点(Super Node)和普通节点。 普通节点必须依附于超 级节点, 每个超级节点作为一个独立的域管理者, 负责处理域内的查询
5、操作。 在 查找的过程中,查询首先在域内进行,失败后才会扩展到超级节点之间。非结构化系统的优点在于实现结构简单:无须中央服务器,节点之间完全平等, 网络的层次是单一的,而且节点之间无需维护拓扑信息。结构化P2P系统在结构化P2P系统中,每个节点只存储特定的信息或特定信息的索引。 当用户需 要在P2P系统中获取信息时,他们必须知道这些信息(或索引)可能存在于那些节 点中。由于用户预先知道应该搜索哪些节点, 避免了非结构化P2P系统中使用的 泛洪式查找,因此提高了信息搜索的效率。但是,结构化P2P也引入了新的问题:首先,既然信息是分布存储的, 那么如何将信息分布存储在重叠网中的节点上? 其次,由于
6、节点动态的加入和离开重叠网,如何将拓扑的变更信息通知其它节点?DHT勺引入基本解决了上述问题,因此自从 DHT协议出现以后,结构化P2P的应 用得到了快速的发展。目前已经有很多较为成熟的 DHT*议被提出并且得到了应 用。其中比较有代表性的有:缓冲阵列路由协议(CARP) 一致性哈希;Chord; 内容寻址网络; Pastry 。DHT简介DHT使用分布式哈希算法来解决结构化的分布式存储问题。分布式哈希算法的核 心思想是通过将存储对象的特征(关键字)经过哈希运算,得到键值(Hash Key), 对象的分布存储依据键值来进行。具体来讲,大致有以下步骤:对存储对象的关键字进行哈希运算, 得到键值。
7、 这样就将所有的对象映射到了一 个具体的数值范围中。重叠网中的每个节点负责数值范围中的特定段落。 例如,节点A负责存储键值从 8000到8999的对象;而节点B负责70007999的对象。这样就将对象集合分布 地存储在所有的节点中。节点可以直接存储对象本身,如文件中的一个片段;也可以存储对象的索引,如 该对象所在节点的IP地址。结构化的分布式存储问题解决后,剩下的问题就是用户如何才能找到存储着目标 信息的节点。在有着大量节点(如100万个)的P2P系统中,任何节点都不可能拥 有全部的节点?键值?内容的对应关系; 因此用户获得了键值之后,如何找到该键 值对应的节点就被称为DHT勺路由问题。DHT
8、协议必须定义优化的查找(路由)算 法来完成这一搜寻的工作。不同的DHT*议之间区别很大程度上就在于定义了不 同的路由算法。DHT勺应用非常简洁-API 简单到只有一项输入和一项输出:应用层将数据对象(文件、数据块或索引)通过哈希算法获得键值, 将该键值提交 给DHT后,返回结果就是键值所在节点的IP地址。图1(来自9)显示了这种应 用结构:在这样的支持下,可以开发多种P2P的应用程序,如网络存储与文件共享、即时 消息、音频/视频等。图2(来自9)显示了这种应用结构:Nodeld 10233102叶子集合校天110233033102330211023312010233122|1023300110
9、2330001023323010233232路由表-0-2212102-2-2301203-3-1203203r s1-1-3012331-2-2302031-3-02102210-0-3120310-1-32102210-3-23302102-04)230102-1-1302102-2-23023I1023-0-3221023-1-0001023-2-121 I31102330-01110233-2-32o102331-2-02邻居集合130210221020023011301233313012330221210222301203 13120320333213321图2 DHT应用的层次主流
10、DHT协议缓冲阵列路由协议(CARP Cache Array Routing Protocol)协议简介CARPI由微软公司的 Vi nod Valloppillil和宾西法尼亚大学的 Keith W. Ross在1997年提出的。该协议可以将URL空间映射到一个仅有松散关联关系的 Web cache服务器(在协议中称为“代理”,Proxy)阵列中。支持该协议的HTTP客户端可以根据要访问的URL智能选择目标代理。该协议解决了在代理阵列内分布存 储内容的问题,避免了内容的重复存储,提高了客户端访问时 Web Cache命中的 概率。哈希算法哈希使用的关键字有2个,一个是代理的标识符(每个代理均
11、有唯一的标识),另一个是URL本身。存储内容时,每个代理负责缓冲哈希键值最大的URL这样,当缓冲代理阵列发生少量变化时(新的代理加入或旧的代理退出),原有的URL还有可能仍然被映射到原来的代理上,仍可以按照原有的方式访问。路由算法客户端(HTTP浏览器)首先加载一个代理配置文件,该文件中存储了代理的标识 符和IP地址等用于哈希的关键参数。浏览器在访问网页时,可以根据URL和代理标识获得代理的位置信息(IP 地址),从而可以直接访问缓冲代理中的页面。讨论CARP勺哈希过程比较简单,路由查找更是简单到至多只有一跳(0(1)。但是 CA RP在P2P的应用环境中有一些致命的缺陷:每个节点必须知道其它
12、所有节点勺信息。 在大规模勺重叠网环境中, 由于可能存 在大量的(数百万)节点, 加之节点都是动态加入和退出网络, 因此这一条件几乎 不可能满足。在缓冲阵列发生较大变化时(这在 P2P网络中非常常见),原有的URL和代理之间 的对应关系可能发生改变,从而使得原有的配置文件失效。一致性哈希(Con siste nt Hash)协议简介一致性哈希算法在 1 997年由麻省理工学院提出(参见 0),设计目标是为了解决 因特网中的热点(Hot pot)问题,初衷和 CAR叶分类似。一致性哈希修正了 CAR P使用的简单哈希算法带来的问题,使得 DHT可以在P2P环境中真正得到应用。哈希算法一致性哈希提
13、出了在动态变化的 Cache环境中,哈希算法应该满足的4个适应条件:平衡性(Bala nee)平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去, 这样可以使得所有的 缓冲空间都得到利用。很多哈希算法都能够满足这一条件。单调性(Mo noton icity)单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中, 又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲 中去,而不会被映射到旧的缓冲集合中的其他缓冲区。简单的哈希算法往往不能满足单调性的要求,如最简单的线性哈希:x ax + b mod (P)在上式中,P表示全部缓冲的大小。不难看出,当缓冲大小发生变
14、化时(从P1到P2),原来所有的哈希结果均会发生变化,从而不满足单调性的要求。哈希结果的变化意味着当缓冲空间发生变化时, 所有的映射关系需要在系统内全 部更新。而在P2P系统内,缓冲的变化等价于 Peer加入或退出系统,这一情况 在 P2P 系统中会频繁发生, 因此会带来极大计算和传输负荷。 单调性就是要求哈 希算法能够避免这一情况的发生。分散性(Spread) 在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。 当终端希望通过哈希过程将内容映射到缓冲上时, 由于不同终端所见的缓冲范围 有可能不同, 从而导致哈希的结果不一致, 最终的结果是相同的内容被不同的终 端映射到不同
15、的缓冲区中。 这种情况显然是应该避免的, 因为它导致相同内容被 存储到不同缓冲中去, 降低了系统存储的效率。 分散性的定义就是上述情况发生 的严重程度。 好的哈希算法应能够尽量避免不一致的情况发生, 也就是尽量降低 分散性。负载(Load)负载问题实际上是从另一个角度看待分散性问题。 既然不同的终端可能将相同的 内容映射到不同的缓冲区中, 那么对于一个特定的缓冲区而言, 也可能被不同的 用户映射为不同的内容。 与分散性一样, 这种情况也是应当避免的, 因此好的哈 希算法应能够尽量降低缓冲的负荷。从表面上看,一致性哈希针对的是分布式缓冲的问题,但是如果将缓冲看作 P2P 系统中的Peer,将映射
16、的内容看作各种共享的资源(数据,文件,媒体流等), 就会发现两者实际上是在描述同一问题。路由算法 在一致性哈希算法中,每个节点(对应 P2P系统中的Peer)都有随机分配的ID。 在将内容映射到节点时,使用内容的关键字和节点的 ID 进行一致性哈希运算并 获得键值。一致性哈希要求键值和节点 ID 处于同一值域。最简单的键值和 ID 可以是一维的,比如从 0000到 9999的整数集合。根据键值存储内容时,内容将被存储到具有与其键值最接近的 ID 的节点上。例 如键值为 1001的内容,系统中有 ID 为 1000, 1010, 1100 的节点,该内容将被 映射到 1000 节点。为了构建查询
17、所需的路由,一致性哈希要求每个节点存储其上行节点(ID 值大于 自身的节点中最小的)和下行节点(ID 值小于自身的节点中最大的)的位置信息 (IP 地址)。当节点需要查找内容时,就可以根据内容的键值决定向上行或下行 节点发起查询请求。 收到查询请求的节点如果发现自己拥有被请求的目标, 可以 直接向发起查询请求的节点返回确认; 如果发现不属于自身的范围, 可以转发请 求到自己的上行/ 下行节点。为了维护上述路由信息,在节点加入/退出系统时,相邻的节点必须及时更新路 由信息。这就要求节点不仅存储直接相连的下行节点位置信息, 还要知道一定深 度(n 跳)的间接下行节点信息,并且动态地维护节点列表。当
18、节点退出系统时, 它的上行节点将尝试直接连接到最近的下行节点, 连接成功后, 从新的下行节点 获得下行节点列表并更新自身的节点列表。 同样的,当新的节点加入到系统中时, 首先根据自身的 ID 找到下行节点并获得下行节点列表,然后要求上行节点修改 其下行节点列表,这样就恢复了路由关系。讨论致性哈希基本解决了在P2P环境中最为关键的冋题如何在动态的网络拓扑中分布存储和路由。 每个节点仅需维护少量相邻节点的信息, 并且在节点加入 /退出系统时,仅有相关的少量节点参与到拓扑的维护中。所有这一切使得一致 性哈希成为第一个实用的DHT算法。但是一致性哈希的路由算法尚有不足之处。 在查询过程中,查询消息要经
19、过 O(N) 步(0(N)表示与N成正比关系,N代表系统内的节点总数)才能到达被查询的节点。 不难想象, 当系统规模非常大时, 节点数量可能超过百万, 这样的查询效率显然 难以满足使用的需要。 换个角度来看, 即使用户能够忍受漫长的时延, 查询过程 中产生的大量消息也会给网络带来不必要的负荷。下文中讨论的几种DHT议都对路由做出了优化,提出了各自的算法。Chord 协议Chord在2001年由麻省理工学院提出(参见0),其核心思想就是要解决在 P2P 应用中遇到的基本问题:如何在P2P网络中找到存有特定数据的节点。与前两种 协议不同,Chord专门为P2P应用设计,因此考虑了在P2P应用中可能
20、遇到的特 殊问题,这些内容将在路由的部分进行讨论。哈希算法Chord 使用一致性哈希作为哈希算法。 在一致性哈希协议中并没有定义具体的算 法,在Chord协议中将其规定为 SHA-1路由算法Chord 在一致性哈希的基础上提供了优化的路由算法:在Chord中,每个节点同样需要存储m个其他节点的信息,这些信息的集合被称 为查询表(F in ger Table)。一致性哈希中的节点同样具有这样的表格,但在Chord 中,表格中的节点不再是直接相邻的节点,它们的间距 (ID间隔)将成 2i 的关系排列(i表示表中的数组下标)o这样形成的节点之间路由关系实际上就是折 半查找算法需要的排列关系。在查询的
21、过程中,查询节点将请求发送到与键值最接近的节点上。收到查询请求 的节点如果发现自身存储了被查询的信息,可以直接回应查询节点 (这与一致性 哈希完全相同);如果被查询的信息不在本地,就根据查询表将请求转发到与键值最接近的节点上。 这样的过程一直持续到找到相应的节点为止。 不难看出, 查 询过程实际上就是折半查找的过程。经过Chord的优化后,查询需要的跳数由0 ( N)减少到O(log(N)。这样即使在 大规模的P2P网络中(例如N= 100,000,000),查询的跳数也仅为 0(8),每个节 点仅需存储27个(log2100000000)其他节点的信息。Chord还考虑到多个节点同时加入系统
22、的情况并对节点加入/退出算法作了优 化。讨论Chord算法本身具有如下优点:负载平衡这一优点来自于一致性哈希, 也就是一致性哈希中提到的平衡性。 所有的节点以 同等的概率分担系统负荷,从而可以避免某些节点负载过大的情况。分布性Chord是纯分布式系统,节点之间完全平等并完成同样的工作。这使得Chord具有很高的鲁棒性,可以抵御 DoS攻击。可扩展性Chord协议的开销随着系统规模(结点总数 N)的增加而按照O(logN)的比例增加。 因此 Chord 可以用于大规模的系统。可用性Chord协议要求节点根据网络的变化动态的更新查询表,因此能够及时恢复路由关系,使得查询可以可靠地进行。命名的灵活性
23、Chord 并未限制查询内容的结构, 因此应用层可以灵活的将内容映射到键值空间 而不受协议的限制。Chord在CFS系统中得到了应用,具体的介绍可参见8内容寻址网络(Content-Addressable Network ,CAN)CAN在 2001年由加州大学伯克利分校提出(参见3)。与 Chord 一样,CAN也是 DHT的个变种。哈希算法CAh的哈希算法与一致性哈希有所不同。Chord中,哈希得到的键值总是一维的, 而在CAN中,哈希的结果由d维的笛卡尔空间来表示。d是一个由系统规模决定 的常量。路由算法CAN的路由查询将在d维笛卡尔空间中进行在CAN中,每个节点自身的ID经由哈希后得到
24、的d维向量。经过这样的映射后, 整个P2P系统将被映射到一个d维笛卡尔空间中,每个节点的位置由其自身 ID 决定。CAN对邻居节点的定义并不要求成2i的关系排列,而是改为用在笛卡尔 空间上相邻来表示:在d维笛卡尔空间中,2个节点的d维坐标中有d-1维是相 等的,剩余的一维是相邻的节点称之为相邻节点。CAN中的节点仅存储相邻节点表。由于在d维的空间中最多有2d个相邻的节点, 因此节点的相邻节点表最多有2d个表项。在查询的过程中,查询节点首先计算被查询内容的键值(d维向量),然后在节点列表中查找在笛卡尔空间中与该键值最为接近的相邻节点, 找到后向该节点发送 查询请求(这一策略被称为贪婪策略)。查询
25、请求中将携带被查询内容的键值。 收到查询请求的节点如果发现自身存储了被查询的信息,可以直接回应查询节点 (这与一致性哈希完全相同); 如果被查询的信息不在本地, 就根据相邻节点表将 请求转发到与键值最接近的节点上。这样的过程一直持续到找到相应的节点为 止。在查询过程中,被查询节点到目标节点的笛卡尔空间距离单调地减少。如果查询节点或转发节点发现邻居节点表中无法找到可用的下一跳节点, 则采用 非结构化P2P常用的扩展环搜索(Expanding Ring Search, 使用无状态,受控的 泛洪算法在重叠网中搜索)以找到合适的(符合贪婪策略)下一节点。经过CAN的优化后,查询需要的跳数由0 ( N)
26、减少到均值为(d/4)(n1/d)的随机 制,考虑到d为常数,这一值可以表示为 O(n1/d)或O(dn1/d)。讨论CAN和Chord的主要区别在于路由算法不同。相比之下,在节点数量非常大时, CAN的平均查询跳数要比Chord增加得更快。而且CANS询过程中需要的运算量 也要高于Chord但CAN使用的d为预先设置的常量,因此并不假设系统节点数 量。在节点总数动态变化范围很大的系统中, CAN 的相邻节点表结构保持稳定, 这在P2P的应用中也是很重要的优点。PastryPastry在2001年由位于英国剑桥的微软研究院和莱斯(Rice)大学提出(参见4) 。Pastry 也是DHT勺一个变
27、种。哈希算法Pastry 使用一致性哈希作为哈希算法。 哈希所得的键值为一维(实际上使用的是 128bit 的整数空间) 。 Pastry 也没有规定具体应该采用何种哈希算法。路由算法在Pastry协议中,每个节点都拥有一个 128bit的标识(Node Id)。为了保证 No de ID的唯一性,一般由节点的网络标识(如IP地址)经过哈希得到。Pastry 中的每个节点拥有一个路由表 R(Routing table) , 一个邻居节点集 M(Ne ighborhood Set) 和一个叶子节点集合 L(Leaf set) ,它们一起构成了节点的状 态表。路由表R共有logBN(B = 2b为
28、系统参数,典型值为16, N表示系统的节点总数) 行,每行包括B-1个表项,每个表项记录了一个邻居节点的信息(节点标识、IP 地址、当前状态等)。这样就形成了拥有(B-1)logBN个条目的二维表格。路由表第n行的表项所记录的邻居节点的Node ID前n个数位和当前节点的前n个数 位相同,而第n+1个数位则分别取从0到B-1的值(除了与当前节点第n+1数 位的值)。这样形成的路由表很类似IP路由中最长掩码匹配的算法。参数b(或B) 大小非常关键:B过大则节点需要维护很大的路由表,可能超出节点的负载能力, 但路由表大些可以存储更多的邻居节点, 在转发时更为精确。 平均每次路由查找 需要的跳数在P
29、astry中计算的结果是logBN,因此B的选择反映了路由表大小 和路由效率之间的折衷。叶子节点集合L中存放的是在键值空间中与当前节点距离最近的|L|个节点的信 息,其中一半节点标识大于当前节点,另一半节点标识小于当前节点。 |L| 的典 型值为2b或者2*2b。邻居节点集合M中存放的是在真实网络中与当前节点“距离”最近的|M|个节点 的信息。 “距离”的定义在 Pastry 中非常类似 IP 路由协议中对距离的定义,也 就是考虑到转发跳数、传输路径带宽、 QoS 等综合因素后所得的转发开销(可以 参见OSPF等路由协议)。Pastry并未提供距离信息的获取方法,而是假设应用 层可以通过某种手
30、段(人工配制或自动协商)得到信息并配置邻居节点集合。 |M| 的典型值为2b或者2*2b。图 3 给出了一个 Pastry 节点状态表的例子,该图来源于4 。在节点状态表中,节点本身的 ID 为 10233102。叶子集合中有 8项,每一项都代 表一个当前节点已知的其他节点的信息。 路由表共有 4*8 项,可以看出由上至下 节点 ID 重合的位数(前缀)不断增加。邻居集合中的节点 ID 由于来源于应用层, 一般没有规律性可循。Pastry 的路由过程如下: 首先,路由查询消息中将携带被查询对象 ID(Object Id) ,又称消息键值。当收 到路由消息时,节点首先检查消息键值是否落在叶子节点
31、集合的范围内。 如果是, 则直接把消息转发给叶子节点集合中节点标识和消息键值最接近的节点; 否则就 从路由表中根据最长前缀优先的原则选择一个节点作为路由目标,转发路由消 息。如果不存在这样的节点,当前节点将会从其维护的所有邻居节点集合 ( 包括 路由表叶子集合及邻居集合中的节点)中选择一个距离消息键值最近的节点作为 转发目标。从上述过程中可以看出, 每一步路由和上一步相比都更靠近目标节点, 因此这个 过程是收敛的。如果路由表不为空,每步路由至少能够增加一个前缀匹配数位, 因此在路由表始终有效时,路由的步数至多为 logBN。讨论Pastry 的路由利用了成熟的最大掩码匹配算法,因此实现时可以利
32、用很多现成 的软件算法和硬件框架,可以获得很好的效率。与Chord和CAN®比,Pastry弓I入了叶子节点和邻居节点集合的概念。在应用 层能够及时准确地获得这两个集合的节点信息时,可以大大加快路由查找的速 度,同时降低因路由引起的网络传输开销; 不过在动态变化的P2P网络中如何理 想地做到这一点的确有很大的难度。Pastry的典型应用包括 PAST参见56)和 SCRIBE参见7)趋势分析 目前DHT算法的发展方向非常多,不断有新的改进算法被提出来。就笔者目前了解到的信息而言,至少有以下一些方向:接近性(Proximity)文中提到的DHT算法中,除了 Pasrty以外,均未考虑重
33、叠网络拓扑结构与真实的 IP 网络之间的重合关系。节点之间进行对等通信时,不会考虑优先选取距离 自己最近的节点。 这样就使得最终形成的重叠网结构混乱, 效率低下。 因此如何 让节点获得并利用接近性信息就非常重要。结构化目前基于DHT勺应用尚未大规模展开,很多工程上的细节问题尚待解决。例如: 目前有很多种类的P2P应用,如文件存储和共享、电子邮件、流媒体等。这些应 用在处理P2P路由算法、拓扑维护和信息检索上使用的方法均有很大差别,导致即使是同类的应用也无法实现互通。如何为各种P2P的应用抽象出一个通用的层 次,也是目前研究的热点问题之一。信息查询 基于分布式哈希表的查询是一种单关键字的精确匹配
34、, 尽管相对于非结构化系统 它使得系统资源可被确定性地查询到, 但它也极大地限制了查询的应用范围。 目 前有许多改进的结构化查询算法已经被提出来。参考文献David Karger, Eric Lehman, Tom Leighton, Matthew Levine, Daniel Lewin, Rina Panigrahy "Consistent Hashing and Random Trees:Distributed Cach ing Protocols for Relieving Hot Spots on the World Wide Web". In Proc eed
35、ings of the 29th Annual ACM Sym-posium on Theory of Computing (El Paso, TX, May 1997), pp. 654-663.Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Bala krishnan_ "Chord: A Scalable Peertopeer Lookup Service for Internet A pplications" SIGCOMM'01, August 2731, 2001, San
36、 Diego, California, US A.Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott She nker "A Scalable Content-Addressable Network" SIGCOMM'01, August 27-3 1, 2001, San Diego, California, USA.Antony Rowstron1 and Peter Druschel "Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems" App ears in Proc. of the 18th IFIP/ACM International Conference on Distri buted Systems Platforms (Middleware
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5-tert-butoxy-carbonyl-amino-benzene-1-3-dicarboxylic-acid-5-tert-Butyloxycarbonyl-amino-isophthalic-acid-生命科学试剂-MCE
- 2023数学试题及答案
- 周口高三数学试题及答案
- 2026年交通运输行业深度报告:行业密码在信息安全中的应用
- 2026年化工行业报告及市场需求分析
- 2026年建筑材料行业报告:绿色建材与新型城镇化趋势
- 2026年眼镜行业市场细分领域报告
- 2026年汽车行业知识产权布局与创新发展报告
- 2026年本地生活服务行业到家服务市场发展前景报告
- 2026年航空航天材料创新进展与市场前景报告
- 2025年入党积极分子发展对象考试试题(完整版)附答案详解
- 广西柳州、桂林、北海等市2027届高三上学期10月联考地理试卷(有答案)
- 2026新教材语文 19《航天员写给孩子的信》课件
- 6.1 友谊的真谛 课件(共24张)+内嵌视频
- 2025-2026学年九年级上学期期中考试化学试题(含答案)
- 心电图机操作考核评分标准
- 化疗药物配置及管理操作规程
- 阀门定位器培训
- (零模)南昌市2025年高三年级九月测试化学试卷(含答案)
- 2024年中国烟草公司招聘笔试真题
- 仲裁秘书考核管理办法
评论
0/150
提交评论