CN1703697A - 用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序 - Google Patents
用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序 Download PDFInfo
- Publication number
- CN1703697A CN1703697A CNA03825218XA CN03825218A CN1703697A CN 1703697 A CN1703697 A CN 1703697A CN A03825218X A CNA03825218X A CN A03825218XA CN 03825218 A CN03825218 A CN 03825218A CN 1703697 A CN1703697 A CN 1703697A
- Authority
- CN
- China
- Prior art keywords
- node
- index
- network
- address
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4552—Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1048—Departure or maintenance mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Hardware Redundancy (AREA)
- Small-Scale Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
为在全球网络上索引,搜索和检索对象提供了方法,装置,和记录在机器可读存储器中的程序。本发明在路由层中插入分布式索引,实现快速搜索。本方法以完全分布式的方式动态地插入,查找,检索,以及删除参与的节点,对象和关联的元数据。节点可以动态地加入和离开网络。该基本结构可以应用在用于出版,搜索,下载,以及流体的网络中。
Description
技术领域
本发明涉及一种用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序。
背景技术
互联网接入的迅速采用,与计算设备的处理能力的持续增强相结合,已经在网络服务方面创造出了大量的新机会。然而,目前的网络状态仍与80年前的互联网状态是相似的,当时的网络是在非常严格的基于客户机-服务器模式下被提出的。
在过去的80年里,在PC机的连通性与处理能力方面的趋势已经创造了一个令人印象深刻的接入互联网的PC机集合,这些PC机具有大量的CPU、磁盘,以及带宽资源。然而,大部分的这些PC机却从没有使用到它们所具有的全部潜能。大批的机器仍然只是作为客户机工作,而从未充当过服务器,尽管其具有这样的能力。
客户机-服务器模式有许多问题。服务器的维护是昂贵的,需要经费用于硬件设施、带宽以及运行成本。互联网上的流量又是不可预知的,在所谓的“Slashdot效应”下,一个站点的内容可能迅速的变得流行,访问请求象洪水一样冲击着该站点的服务器,其程度直至没有任何进一步的客户请求能够被服务器响应。同样,集中化站点可能遭受阻绝服务(Denial of Service,DoS)攻击,以及恶意流量,其可以采用类似的冲击方式来攻陷一个与网络相连的站点。而且,一些网络服务,特别是带宽密集型服务,例如提供大规模的视音频,在一个集中式模式下简直是不可能实现的,因为其带宽要求超过了任何单一站点的能力。
最近,已经出现了一些分散式个人至个人技术,特别是Freenet与Gnutella,用于利用诸多用户PC机处理能力的集合来运行网络服务,并降低服务内容的成本。然而,Freenet是相对比较慢的,并且下载任何Guntella内容实际上是相当困难的,因为这个协议并非是超越于上千台主机之上的,因此在网络中的可访问的内容数量就受到了限制。
一些提供了查询一个对象的O(log n)时间的研究项目(其中的n是参与组成网络的节点数并且每个时间阶包括对等机器连接另一个对等机器)还处在不同的发展阶段,包括Berkeley的OceanStore以及MIT的Chord。然而,logn是10跳,即使对于小至1000台主机的网络,其提出的查询时间也超过了半分钟。而且,这些系统被设计用于可扩展性,而非明确的用于可靠性,它们的可靠性并没有在运行于不可靠机器中的现实情况下进行过测试。
发明内容
Skyris网络公司,本专利申请未来的受让人,已经开发了新的、更有效的用于分布式索引的算法,通过可扩展性与容错技术,其满足了分布式网络服务的要求。在本文中,我们提出了一种新型的路由和检索方案,我们称之为“透明索引”,其中,检索索引被嵌入在一个高度可扩展、容错、随机化、分布式路由层中。这个路由和索引层作为一个分布式目录服务、一个平台来工作,在这个平台中构建有网络服务,这些网络服务共享这些属性,并且是可靠、有效,以及负载平衡的。
我们的基于排队时间的仿真说明SKYRIS可以有效地运行在具有十亿个服务器的网络中。而且,SKYRIS网络能够处理任何热点(流行内容的小部分),或突然流行的内容的分配,其具有较小的潜在危害,并能够透明地实现。
下面设计的目标主要是用于SKYRIS,并且这决定了我们研究的方向。
可扩展的存储和搜索能力:可扩展性是SKYRIS最重要的特性之一。从一开始,SKYRIS方案已经被设计为扩展到全球系统,其可能具有十亿个对等机器。
有效的恢复能力:我们的目标是使SKYRIS像网络一样迅速,如果不比网络更快的话。当一个人在一个新域的网络中进行查询时,他/她首先检查DNS系统,其可以在提供IP地址前进行几次分级连接。其目的是同样保持SKYRIS系统处于几跳之内,其中一跳包括从一个对等机器传递到另一个对等机器的消息。对于更大的文件,存在其它方法,如同时从多个起点检索,该方法可以增加系统的处理能力。
可靠性和容错性:当机器崩溃而没有告警时,SKYRIS上的客户仍应该能够快速获得镜像文件。当机器恢复时,它们应该能够无缝地重新加入网络中而不会产生问题。应该指出对于分布式的对等网络容错性是一个主要的问题。这种网络运行在用户的PC机上,这些PC机不如服务器可靠,而且用户可能希望更频繁地打开和关闭程序而不是把程序留在后台。
负载平衡:整个网络具有巨大的容量,但是单个机器没有这种能力。Skyris必须将负载(主要是带宽)在网络中平均分配,以避免机器过载的情况。Skyris是独特的,表现在其是已经设法实现同时具有可扩展性和容错性的第一个系统;而且,该平台有效并且负载平衡,这是一些附加的效果。
附图说明
在下面结合附图的对优选实施例的描述中,本发明的这些和其它方面将变得更加明显:
图1到32示出了本发明的不同方面,是通过以原理图和伪代码的形式描述的。
具体实施方式
我们向多达十亿的PC机提供新的路由和索引结构,和具有容错性和可扩展性的特殊结构,其仅使用局部信息。
其它的系统的扩展性不像我们的系统那样好。基于Plaxton算法的OceanStore以尝试可扩展性闻名;同样闻名的还有MIT的Chord方案,该Chord方案测量O(log n)查找时间,其中n是系统中的节点数,但该Chord方案并不特别地为容错性设计,并且不具有足够的容错性以扩展到大的网络。
该路由和索引方案是使SKYRIS方案部分可行的核心。结合热点管理的新的、相关的方法,我们的路由和索引方案允许很多有用的、有效的、可扩展的、以及容错的业务的形成,这些业务包括关键词搜索和分布式信息的检索和发送,具有Skyris网络的特征。
系统的核心包括几个不同的层:
路由层(表格和协议)
索引层(表格和协议)
热点管理层
平台的接口简单,从而诸如内容搜索和存储的附加的层能够简单地建立在这个中央框架上。
路由层
图1提供了对Skyris网络100的很好的示意性的说明。
在该网络中,多个节点102通过网络连接,如图1所示的互联网104。在一些实施例中Skyris网络可以具有中央服务器节点106。在其它实施例中,每一个都可以在没有这种中央服务器的情况下运行。
如图1所示,Skyris网络可以与许多不同类型的计算设备一同使用。同时能够做为Skyris网络中节点的计算设备的最常见类型往往是桌上型计算机,如图1所示的计算机1,膝上型计算机,以及其它更大的计算机。然而,由于更小的电子设备的容量的增加,将来Skyris网络将能够与更小类型的计算机一同使用,例如便携式书写板计算机102C,个人数字助理计算机102D,建立在蜂窝电话102E内的计算机,以及在甚至更小设备内的计算机,例如可佩带计算机,如图1所示的手表计算机102F。
Skyris网络的节点可以被连接到具有相对慢的连接的网络,例如线缆调制解调器或蜂窝通信目前常用的形式。然而如果节点被连接到具有更高速度的连接的网络,例如,线缆调制解调器、DSL、无线LAN,或高速无线连接,其可以从网络接收更好的业务并对网络更有价值。
在图1中,节点102A表示为示意性模块图。该模块图表示该节点具有中央处理器110、随机存取存储器112、连接CPU和存储器的总线114,以及用于驱动视频显示器118的视频接口116。该计算机同时包括I/O接口120,用于作为与用户输入设备的接口,例如键盘122和鼠标124。它还包括网络接口126,用于使节点102A与Skyris网络的其它节点102通信。
节点102A还包括大量存储设备,例如硬盘、软盘、CDROM,以及大的固态存储器。这些大量的存储设备存储操作系统130的编程指令、浏览器程序132,以及以插件程序的形式存在的Skyris程序134。
在一些实施例中,Skyris程序可以做为独立的应用程序运行,但在许多实施例中,其可以做为插件程序运行,并将使用户利用Skyris网络从浏览器接口内部访问内容,浏览器接口由浏览器程序132生成。
SKYRIS网络被设计为扩展到几百万,也许十亿个PC机或其它类型的计算机。
但是每个主机将具有固定的存储容量,小的多的存储容量,以及变化的网络带宽,速度可能像调制解调器一样慢。我们希望使任何服务器能够找到并与任何其它服务器通信。因此网络的基础之一是必须具有低直径(diameter)和可变网络开销的路由算法。
而且,我们认为这些机器频繁地停止作用(崩溃、重启、断开与网络的连接、关闭Skyris程序、被连接到停止作用的网络,等等),因此我们必须复制信息。我们的方法是建立大小易于管理的局部“邻域”,或节点群,使每个邻域通过传输(可能通过多点传输)主动地(proactively)复制用于邻域中机器的局部索引和联系信息。因此,节点将频繁地消失,但是邻域足够大,以致在网络有机会作出反应前,所有邻域都消失的情况是非常不可能的。(在本申请和随后权利要求的其它部分,我们同时提到称为“逻辑节点”的邻域)而且,我们希望新的服务器加入我们的网络。因此我们的路由系统不仅需要具有容错性(能够删除节点),而且需要能够向网络中即时增加新的机器。
我们开发新的路由算法以解决基于现有的离散路由网络问题,该算法不是运行于单个机器,而是我们的“邻域”。当领域大小变得太大时,我们将邻域分裂为两个。如果邻域的大小变得太小,我们将邻域合并为一个。
我们已经为Skyris框架概括出两个典型的网络模型。它们是超立方体模型和大小为2k的de Bruijn网络。超立方体的优点是生产效率和更简单的邻域管理,生产效率以大量的连接为代价。Bruijn网络的优点是小数量的连接,但是生产效率降低,容错性能减弱。
应该注意将包括动态分裂的邻域的概念用于其它网络模型是同样可能的;对于网络模型的两个主要的要求是在描述网络的参数族中具有充分的局部性(邻接的邻域彼此靠近)和充分的灵活性。第二个条件要求在给定网络大小n的情况下,路由模型能够扩展到大小为nk的类似的路由模型,k较小,在上述例子中k=2。超立方体模型是既具有局部性又便于分裂的最好的网络模型,但是de bruijn模型是可能被采用的另一个典型的网络模型的一个例子。在这种情况下,困难更大——例如,分裂邻域需要重新分配机器的一半连接——但是连接的数量更少。
同时值得注意的是,如果需要,邻域的概念可以被改变使邻接的邻域在某种程度上重叠,也许以概率的方式;或者使每个机器被分配给两个或更多邻域,也许基于机器的带宽,等等;对于该概念有不同的简单变换。将这些变换连结到一起的线索是它们保留了机器局域性的一些概念,也许通过距离函数,其在附近主机的一些集合中复制信息。接收信息的一组主机可以根据连接速度和机器的有效性改变,也可以根据信息改变。实际上,为了处理流行内容的“热点”,我们将把信息复制到更大和基于内容流行性的邻域中。
我们旨在使用概括的超立方体算法和用于储存连接的特殊方案,该方案结合超立方体方案(容错性),de Bruijn方案(连接少),以及随机的模型(允许扩展网络)的最好的方面。
我们现在描述概括的超立方体路由算法。
随机的超立方体模型
在我们的随机的超立方体模型中,n个服务器中的每一个利用SHA1hash函数得到获得区间[0,1]内唯一的160位散列关键码。(SHA1由于其抗碰撞的加密特性而被选;如果需要使用不同的hash函数是简单的,即使具有更少位。系统需要具有抗碰撞性,因此为了降低发生的可能性,位数应该至少是系统中对象数量对数的两倍,并且系统应该具有反加密性(cryptographically resistant),以致不会生成与现有文件相配的文件,即,对于给定的y,不易生成这种x,使h(x)=h(y)。对于十亿个对象,大约是至少60位;对于万亿个对象,是80位。因此,160是足够的。)该散列关键码(节点ID)描述了服务器在该区间内的“位置”。每个服务器被分配一个连接列表(连接是该服务器已知存在的服务器),该服务器直接与其通信。
图2说明超立方体模型200的9个维数。知道计算机网络拓扑的人应该知道,超立方体是网络拓扑,其中每个节点201沿超立方体多个维数的每一个连接到另一个节点。
在图2中,示出了9个维数,每个节点201连接到9个其它节点,到这9个节点中每个的连接都是通过不同的维数。
在图2中,图中表示的9个维数的每个都显示在202中。由于在二维的一页纸上很难表示多于3维的维数,与维数0,1和2关联的连接被表示为节点间的距离大于与维数3,4和5关联的连接的节点间的距离,并且这些维数接着被表示为节点间的距离大于在维数6,7和8中连接间的距离。
在图2中,为了使维数更容易分开,我们把三个最小的维数6,7和8限定的立方体画得相对较小,图中由中间的三个维数3,4和5形成的立方体较大,以及最大的三个维数0,1和2限定更大的立方体。
图3给出了比图2中超立方体清楚的视图。其中,沿立方体的每个维数连接超立方体的每个节点201的大多数线已经被删除,使单个节点201更能被看见并且可以看到作为立方体306的超立方体,其由中间大小的立方体304组成,接着立方体304由更小的立方体302组成。
图4除了给出该超立方体三个不同的视图外,使用与图3相同的表示超立方体的方法,这些视图表示立方体维数的不同子集。图4中虚线400围绕的部分相应于图3示出的部分,其表示超立方体的第一个9个维数。图4中虚线402中示出的部分是表示为虚线圈400中单个节点201A的放大图。该放大图表示超立方体的下一个9个维数,从9到17。应该知道图3和图4示出的每个小矩形302的每个角实际相应于超立方体表示方法中更小的维数界定的立方体层次。应该知道该更高维数立方体中的每个实际节点由该立方体的所有维数连接到任何不同于该节点的其它节点,其不同仅在于由给定维数表示的比特值不同。
Skyris网络的本实施例中的160位散列值表示一个二进制数,该二进制数足以表示大于万亿万亿万亿的可能值。因此即使给定的Skyris网络具有很多数量的节点,只有很少百分比的可能值将实际上具有与它们关联的节点,其中的可能值能被这样大的二进制数限定。由于这个原因,如果该160位散列值被表示为超立方体,该立方体将基本是空的。这由图4表示,其中当只看散列地址空间的9个最高次位时,由一大组节点形成的超立方体,例如十亿个节点,看起来将完全充满,这是因为图中所示的分等级的立方体表示方法中,图中虚线400围绕部分所表示的最小立方体302之一中的每个角往往具有与其关联的一些值,由于每个这样的角表示整个地址空间的1/512,并且每个角几乎必定使一些节点属于总的地址空间的该部分。
但是如果更严密地检查图4中虚线402围绕的部分的地址空间,其中每个最小的矩形408的每个角表示散列地址空间的1/262144,因此即使在具有大约一百万节点的网络内,这种角表示的地址空间的部分将不会总是有一个或更多关联节点,如同这一事实所说明的,即虚线404围绕的所示超立方体空间的部分没有被全部填充。
图4中被虚线404围绕的部分表示圆圈406围绕的超立方体空间的部分的放大图,其位于虚线402围绕的超立方体的视图内。虚线404围绕的超立方体的部分表示所有可能的散列值表示的160个维度空间之内的第18到第26个维数。在图4所示的例子中,超立方体空间的该部分密度稀少,导致其看起来非常稀疏和不规则。
假设x和y是两个节点ID,并且假设使用SHA1。假设x=x0x1...x159,其中xi表示x的第i位。类似地,假设y=y0y1...y159。考虑距离函数d(x,y)=2-f(x,y),其中f(x,y)被限定为使f(x,x)=0,并且使f(x,y)=k+1,其中i,i<k,xi=yi,xk≠yk。直观地,f(x,y)是第一个高位的位置,x与y不同。
在基本的超立方体模块中,假设服务器X具有节点IDx,对于每个i,使0≤i<log n,X被随机连接到Y,Y具有节点IDy,使d(x,y)=2-i。
因此,X具有log n个连接,节点ID被限制为(“-”表示没有限制):
其中k=log n并且
b表示b的补。
换句话说,在随机的超立方体模型中,每个节点具有在查找空间另一半中的连接,其一半的另一半中的连接,其四分之一的另一半中的连接,等等。
这种情况在图5中说明,其与图3所示的超立方体类似。如果给定的节点X具有图5所示的位置500,那么
连接位于图5中虚线502围绕的部分一些随机位置;连接
将位于虚线504围绕的一些随机位置;连接
将位于虚线506围绕的一些随机位置;接着的下一个连接将位于虚线508围绕的一些随机位置;此后的连接将位于虚线510内,此后的连接将位于虚线512内。
图6示出另一种方法,其中可以表示Skyris网络大多数实施例的散列地址空间应用。在该表示方法中,二进制小数点放置在160位散列值之前,使其各位表示0和一个数字之间的值,该数字的变化小于1的万亿万亿万亿分之一。
图6中,该范围的部分602被展开表示。该部分地址空间范围相应于地址空间的大约1/32768。其相应于0.1000000000000010到0.1000000000000000之间的地址范围的部分。其中,单个节点由小圆圈604表示。可以看出范围中该子集上的节点分配包括相当数量的统计不均性。
在图6中,相应于领域的地址范围的部分由虚线606表示。如下面将更详细描述的,相应于给定邻域的散列地址空间部分变化,因此尽管节点密度在散列值地址空间的不同子部分中存在统计学的变化,每个邻域可以维持相对不变的密度。这在图6中被这种事实表示,即两个邻域606A比图中所示的另一个领域覆盖地址空间的部分更小。这是因为它们覆盖的地址空间部分被表示为具有更高的节点密度。
因此节点具有一组直接的连接,当靠近该节点时密度指数增加。因此,基本的超立方体模型(将被扩展)完全可以与Chord方案的路由模型相比,并得到相同的结果:O(log n)查找时间,每个节点具有log n个连接。然而,由于使用邻域,这一点上已经具有容错性,而Chord和其它扩展系统没有。
而且,每个局部邻域(一组大约n/2m个节点,其分配相同的第一个m位,对于一些小的m值)跟踪其中的所有节点。因此一旦搜索者连接局部邻域中的一个节点,那个节点知道最终的目的地并能够直接将其向前传递。当然,由于邻域中的每个节点保持相同索引信息的备份,大多数查找不需比到达相同邻域中的任何节点进行得更远,该任何节点作为希望的节点地址或散列值。
该模块具有这种特性,即服务器能够通过将其消息传递到与该节点最接近的连接而找到对于任何给定散列值的最接近节点。如果x试图找到y,使d(x,y)=2-i,那么x具有连接z,使d(z,y)≤2-(i+1)。f(z,y)=i+j的概率为2-j,因此得到E[f(z,y)]=i+1.5。因此,最大查找时间为log(n-m+1),平均查找时间为log(n-m+1)/2。
同时应该注意在超立方体网络中存在不同的其它路由协议,这些协议可以以简单的方法适应我们随机的邻域网络。这些协议允许以更高费用为代价,得到更好的负载平衡。
然而,基本的模块有几个问题。搜索占用的时间O(log n)很快地超过用户希望等待的时间。而且,路由表仍然有些易被毁坏,我们必须防止当节点或连接消失时的网络分割。邻域路由是十分可靠的,但是此时的超立方体较不可靠。
因此,我们提出下面的解决方案,其实现了平均搜索时间(logn)/(d+1),以及最大搜索时间(log n)/d。其中d是常数,大概接近7,路由表扩展到包括2d-1log n个连接。每个客户建立d级连接的索引,其中第d级的连接到节点的路径长度为d(如由连接链通过直接连接限定的)。然而,对于所有连接都做到这一点是非常浪费的。因此我们只是变换某些连接:如果d(x,y)=2-i,那么y只给x其最接近一级的连接z,使d(x,z)=2-i,2-i-d≤d(y,z)≤2-i-1,d(z1,z2)≥2-i-d。
换句话说,y着眼于其控制的连接z的间隔,将该间隔分为长度为2-i-d+1的间隔,并从每个间隔将一个连接传递到x。x是相隔两级的连接。如此循环从而
X=x0x1...x159具有连接
对于b0b1...bd-2的所有2d-1个值,总共大约有2d-1log n个连接。
图7以图6中相同的线性方法表示散列地址空间。它表示节点700并具有直接连接702A到702D。实际上它将包括其它更接近的连接,但由于它们靠近节点700,在图7中画出会非常困难。每个直接连接,如图7所示的直接连接702A到702D为节点700提供相应的间接连接704的列表。由每个直接连接返回的间接连接处于散列地址空间的子部分中,在该散列地址空间中直接连接被随机地选择。由于间接连接具有关于紧接在最重要位之后D-1位的所有值,根据该最重要位直接连接首先与被提供连接的节点700不同,由给定的直接连接提供的间接连接将被以完全平均的方式分配在与其相应的直接连接关联的地址空间的子范围中。
图8更详细地说明该组间接连接的性质,其由给定的直接连接返回。
在该图中数字800指向的一行比特被定义为节点x的位图,由节点y将一组连接提供给x。802指向的一行表示节点y的地址值的比特。如从图中看到的,y的地址的头两个比特与x的地址相同,但是y的第三个比特x2横是x的第三个比特x2的逆。如图8所示,节点x想要从节点y的一组间接连接,其具有与y的第一个比特相同的散列地址中的比特,由于该第一个比特y与x不同。在该例中,x想要来自于y的一组64个这样的连接,其具有从比特d1到d6的所有可能值。
图8中,表804表示y的连接列表的子集,该列表既包括直接连接也包括间接连接。该表中,值b0到b6表示它们占用的散列地址空间的高位的一组所有可能的值。通过研究图8中行R3到R8可以看出,如果y具有完全发展的连接列表,其将包括需要满足x需要的所有连接。行R4具有x寻找的所有连接,除了与x3’而不是与x3’横的连接。R5具有没有包括在R4中的所有需要的连接,除了与x4’而不是与x4’横的连接。R6具有没有包括在R4和R5中的所有需要的连接,除了与x5’而不是与x5’横的连接。R7具有没有包括在R4到R6中的所有需要的连接,除了与x6’而不是与x6’横的连接。R8具有没有包括在R4到R7中的所有需要的连接,除了与x7’而不是与x7’横的连接。在大多数情况下,直接连接将包括足够的行,例如从R4到R8,从而其能够为需要连接的节点提供该节点所需用的所有连接。
在该图表中,我们发现节点X具有处于第i级的(log n)
个节点。当没有节点消失时,路径长度被限制为(log n)/d,平均路径长度为(logn)/(d+1),每个主机为维持连接发送的网络流通量为O(log n)。
因此,我们存储连接的方式具有很多好的特点,正是这些特点将该方法与以前的路由机制区分。特别地,我们的方法保持并加强了局部性;维护了最新的路由表(节点知道它是短时间之前有效的第d级连接,由于连接在无效后在连续的级中被代替);并且其性能好,只需要更有效的常数因子。而且,尽管带宽(看作发送比特的位数)增加,由于节点仍然在不同时间间隔与其直接连接通信,只交换更多的信息,消息的数量相同。这表示简单的ping/ack方案是浪费的,由于该方案不仅发送更好的信息,而且发送相同数量的信息,或许甚至相同数量的信息包,相同数量的网络流通量。
一旦该网络建成,其维护应该相对容易。如果节点消失,使用该节点作为直接或间接连接的节点将有足够的其它连接以到达网络的其它地方。当加入节点时,该节点能找到适当位置的节点以建立其连接列表。实际上,我们的基于排队时间的仿真证明了这一点。
剩下的问题是当每次节点到达时我们如何开始建立该具有在线算法的网络?
启动时,我们指定单个节点作为数据库,即主机列表,其可能运行在我们的硬件上(尽管其可以是任何已知的节点,如下面将更详细解释的)。数据库将维持基数搜索树(radix search tree)或注册在网络上的所有当前服务器中的其它优化的数据结构,并将回答最近节点的查询。每当一个新的节点加入网络时,节点向数据库发送其节点ID和希望位置连接的列表。接着数据库将该节点插入搜索树中,并送回最匹配的节点ID。
然而,如果这些连接保持不变,建立的网络就与上述的随机网络不同。因此,我们需要节点频繁地添加新的连接。一个方法依赖于主机列表:当第j个节点被插入时,数据库同时发送更新的连接列表到节点
这样,大约每次网络加倍其大小时,每个节点得到更新的连接列表。数据库重复该过程,直到其节点存储器存满连接。在这一点上,数据库开始随机地减少节点连接信息并将其用到达的最新节点代替,同时执行网络搜索以继续发现仍然有效的节点。由于网络大小并不迅速地加倍,并且我们能够将更新连接的任务加到节点自身,现在的网络将更稳定;每个节点可以经常搜索以更新其连接。这样即使在开始只有少量节点时,我们保持了与理想图表接近的连接网络。
索引
维持和存取索引是当前分布式网络的难点。索引必须是这种形式,即其允许高有效性和低等待时间。而且索引必须允许高有效性和负载平衡。
扩散索引到所有节点是很可能的。USENET以其最简单的方式做到这一点,而Summary Cache和OceanStore使用Bloom Filters。Bloom Filters削减用于建立索引的存储需求,但是只是通过不变的因数:它们仍然要求O(n)空间,其中N是索引中项目个数。
扩散法的另一个形式是多点传输,其可以被优化,使每个服务器只以一些少的不变次数接收每条信息,即使一次具有理想可靠性的接收。
同时存在扩散法的其它解决方案。Gnutella或许是没有建立索引的最知名的网络,但是将搜索扩散到所有节点。在某种意义上,Gnutella是双重USENET,其扩散索引并保持搜索的局部性。
SKYRIS模型非常简单:我们将索引嵌入现有的路由结构中。我们已经具有这种路由结构,其允许高有效性,低等待时间,以及负载平衡,并只使用局部信息,因此使用用于索引的相同系统是很自然的。因此我们建立全球已知的从文件到邻域的一到一的映射。我们可以通过得到一个邻域实现该映射,该邻域由文件160位SHA1唯一ID(UID)的前log n位确定。
解决关于路由的存取问题后,剩下维护的问题。现在我们可以使用路由协议确定哪个邻域索引文件,我们就可以使该邻域建立索引。由于邻域小,该索引部分也小,就剩下更简单的已知的问题。
节点的插入
当一个新节点到达时,它必须被插入在网络中给定的邻域内。一个可能的策略是检查所有可能的邻域,确定哪个最空,并将节点插入该邻域。然而,很明显该策略花费太大。我们注意邻域不需要严格的平衡;足够的接近可能就足够了。在尺度另一端的是随机散列法,其不需要信息但会导致负载局部变化。
我们的方法是查找最好的d值,d大概为2。我们为新节点生成2个散列值,基于为该节点生成的公共密钥的SHA1散列和该节点的IP地址。接着我们查询该散列值引用的两个邻域,确定哪个容量最低,并将新节点加入该邻域。如果两个邻域的容量都相等,则可以在两个邻域之间随机选择。
为了保持该设置的好的性能(邻域比简单随机散列法平衡的多),我们可以每次选择一个在邻域N1中消失的节点,随机选择另一个邻域N2,如果N2比N1容量大,把邻域N2中的节点重新分配给N1。
连接管理
我们的系统采用与Gnutella和Freenet相同的方法处理连接的基础。每个服务器可以有可变数量的连接,其由路由结构限定。一个主机经常(固定时间间隔,假定C=10秒)查验另一个主机,另一个主机响应。连接可以是单向或双向的。因此,我们可以考虑图表,其中每个服务器是一个节点,边界表示连接。
由于每个服务器存储至少d级连接,每个服务器知道图表中距离为d的所有服务器,并且知道距离为i<d的所有服务器在ict秒内有效。
当服务器的第一级连接消失,服务器必须转换到新的第一级连接,并同时在其连接树中将所有2d-1个连接转换到新的第一级连接上。对于过大的d值,这是很浪费时间的。因此我们估计d大约为7。
而且,对于相差很大的不同带宽(例如,调制解调速度和宽带),使调制解调器具有更小的d值,而宽带用户具有更大的d值是很有用的。这需要增加宽带用户拥有的连接的数量,例如d=n的宽带用户可以正常的处理d=n-1的调制解调器用户,但是如果连接是d=n-2的调制解调器用户,宽带用户只能得到需要信息的一半,并因此需要另一个调制解调器用户。由于连接级的每一个连续的降低,宽带用户的通信量增加两倍。通过偏置距离函数使宽带用户选择其它宽带用户作为连接而使上述问题得到进一步纠正;给定该模型,调制解调器(或无线)用户可以大大降低其d值,并将其自身限制在网络边界内。
此外,节点应该保持第一级连接的冗余备份,其稍微在d级之上。而且,当节点的连接消失时,节点的第二级或第三级连接不必消失(除非我们进行网络划分或一些类似的相关过程)。因此,节点可以通过慢慢停止其旧的连接同时进入新的连接而替换掉更大的d。
我们确实希望节点不要清除其所有旧的连接,而是将其保存到磁盘上。这样做的主要原因是避免进行网络划分:SKYRIS网络路由和索引具有容错性并且即使大部分节点突然消失也能承受;因此,如果进行网络划分,SKYRIS系统也将被划分。因此,当被损坏的网络链接恢复时,两个分离的网络必须重新合并。由于邻域是小的可管理的网络,使用矢量时间(标准的分布式系统方法)可以实现该过程,使用Bloom filters合并索引可以加速该过程的实现。
热点管理
如果Skyris系统没有说明流行内容的问题,小数量的主机将被迫处理所有的通信量。
我们对热点问题的最大攻击是从下载中分离索引。因此,一个邻域负责索引一个文件,下载文件的人负责与他人共享文件。因此,我们使邻域存储含有那些文件的主机的列表,而不是存储二进制文件。这就减轻了这种数字的负担,其与请求数量成比例而不与处理的字节成比例。
然而,如果一些内容的流行性没有被检查,其将仍然使索引超负荷。,当流行的新闻站点Slashdot连接到较小的网络服务器上的文章时,就会产生Slashdot效应,Slashdot效应是这种行为最闻名的有证明文件的实例之一。
因此,我们借用来自许多扩散网络的概念,并设计出使信息更靠近请求的节点的方法。由于所有的节点靠近所有的节点,通常这不是问题。然而,在这种情况下,使信息“更近”具有增加邻域大小的副作用。因此我们可以反转图表中的连接,并同时扩大索引信息的节点以包括几个附近的邻域。也就是,我们使用对我们路由方案中有利的中间节点。短的列表可以被主动地从具有c个成员的邻域传输到它们的m 2d个链路(in-link),使邻域得到扩展以适应需要。
多个关键字搜索层
一旦我们进行单个关键字搜索,两个关键字搜索的明显方法是连接两个邻域,请求两个列表,并合并它们。如果我们能够对列表排序(或者根据UID或者根据流行性),列表大小的合并需要O(n)时间。另一个自然的方法是存储包括词对的列表。然而,这需要O(n2)存储空间,这是我们所没有的。我们当然应该存储普通词对的结果,但是我们可能发现大多数多关键字搜索是新的。
然而,在缺少带宽的情况下,我们必须有一个更好的解决方案。例如,如果关键字“travel”和“napster”每一个都有一百万次的点击率,并且其交集很小,那么对于每个20个字节长的UID,对于前1000个点击率的单个搜索可能需要网络通信量的20兆字节用于未分类的列表,或者大约1兆字节用于已分类的列表。对于传输单个搜索,这个数量大得离奇。
为了解决这个问题,我们借用来自一些最有效扩散网络的方法,使用Bloom filter。每个主机保留不同大小的Bloom filter用于索引(由于在硬盘上再次计算开销很大),并且为了进行合并,只发送其Bloom filter而不是列表。第二个主机在Bloom filter上使用逻辑与,并接着浏览其列表,找到Bloom filter中最匹配的项。最后,由于Bloom filter的平滑并将导致不合逻辑的点击,第二个服务器返回前1000(1+ε)个匹配到第一个主机,该第一个主机接着按照其列表对它们进行双检查。对于前1000个点击,这需要20千字节的数据;如果我们减少允许的搜索结果的数量,该数字将降低。我们希望Bloom filter的大小大约是n到2n个字节,用于存储发送列表的大约90%。因此用于两个关键字的搜索总的网络带宽被降低到大概200千字节。这仍然比我们希望的高,但是比起几兆字节好得多。
仿真
我们已经建立了用于可扩展性的简单的仿真器和用于测量容错性的复杂的多的仿真器。容错性仿真器实际上实现了除了局部索引的整个路由协议。它基于排队时间,仿真网络或事件链的标准方法,仿真器包括全局事件的优先排队,按照时间分类。新的事件被放入队列中,在不久的将来的某点发生,在每个事件被处理后,时间立即快进到下一个事件时间。
对于具有2n个邻域的网络和d级存储的检索,理论表明进行搜索的最大跳数是
平均跳数接近(log n)/(d+1)。注意Chord实现了除了d=1的简单结果,并且由于其没有邻域使时间增加了大约3跳,而Freenet和OceanStore是更差的常数因子。因此,能够设置d=7使我们得到大约为5的平均加速因数,在该设置中,这是非常重要的,是相当缓慢和合理快速的系统之间的区别。
扩展性仿真展示了与原理非常一致的结果,并显示了Skyris对于其它O(log n)系统的优势。对于大小为64的一百万个邻域(64,000,000个机器)Skyris能够在2.9跳内将消息路由到索引,而Chord(无论如何没有非常可靠的节点,其不能存在于如此大的网络上)需要13.5跳,其它方案差得更多。即使对于包括64,000个主机的更小的网络,Skyris的路由方案需要1.9跳,而Chord的方案需要8.5跳,OceanStore和Freenet将需要近16跳。
容错性仿真表明该网络容错性能很好。该网络的三个特征使其容错性能很好:首先,如果其一级连接失效,每个机器具有可以依靠的二级连接;第二,关于这些连接的信息以最可能有效的方式频繁地传播;以及最后,由于所有机器具有到路由结构中所有机器的短路径,偏差损失小。
应用
Skyris的技术首次能够建立这样的平台,即用于运行在用户设备上的大规模的,可靠的网络服务。该平台提供了可靠索引的有用的原始操作,其可以用于许多用途,由于索引的分布式特点这些用途中很多是新的。这些用途包括:
分布式内容分配:Skyris的平台第一次允许利用用户设备的容量进行大规模的可靠内容分配,例如PC机,笔记本电脑,或如PDA或蜂窝电话的无线设备。Skyris的收益模型包括根据每个单位带宽或每个单元模型向内容提供商收费。根据一定的下载向消费者收费,如以付费节目的方式收费也是可能的。
文件共享:文件共享包括与一小群人或与全世界共享视频,音频,以及其它文档。它是内容分配的简单形式,其中内容是静态的。Skyris支持带有关键字搜索的文件共享。
分布式计算:Skyris的分布式索引可以作为可靠的散列表,其可以被用于在分布式计算环境中调度任务。
分布式知识管理:分布式知识管理包括用于在共同工作者中互相作用和分享文档的应用程序。由于具有有限扩展性的索引,已有的解决方案具有有限的可扩展性;Skyris的分布式索引可以为知识管理提供可扩展的分布式平台。
分布式数据库:Skyris的可靠的邻域允许建立大规模的分布式数据库。数据库的主要活动是在事务处理中;通过使用两级提交协议,Skyris的结构可以被调整为用于数据库,邻域根据散列函数负责对象。
内容分级:互联网上的大多数内容不是单个文档,而是分级系统,其通常由文件系统中的文件夹模拟。Skyris系统能够被调整为以分布式的方式处理分级系统。通常的方法是用根目录的散列值标记分级系统中的所有内容,以从单个位置处理内容。扩展性更好的方法是在对象中包含对象父代的散列值。
安全性:由于我们使用安全的散列法,为了希望用户下载的内容与索引中的散列值匹配,依赖于该散列法是简单的。我们可以进一步打乱体积小的数据块,例如64千字节,接着打乱散列的数据以实现安全的散列法,当从不同主机传输不同数据块时,该散列法能抗击错误。接着该问题简化为是否能够信任索引的数据。为了解决该问题,我们可以使用公共密钥的基本构造,并可以使用Skyris作为可信的第三方。该系统可以用公共密钥加密内容,并插入加密的内容的散列值。
混合网络:建立了这种分散的基本结构,在网络中插入一些数量的服务器就会简单了,或者作为单个集中的实体,或者具有一些简单的失败转移机制,或者甚至运行它们自己的Skyris分散式网络。这些服务器可以被用于提供另外的容量,提供地理位置服务,或运行其它服务,例如内容的索引。尽管任何网络资源具有一定程度的非可靠性,这些服务器可以被认为比标准的客户机更可靠,
计算资源:由于Skyris网络包括运行在用户PC机上的程序,将计算加强的方案集成在网络中是可能的,例如蛋白质折叠或其它整体并行计算,该计算以前运行在超级计算机上。Skyris的索引允许可靠的分布式散列表基本数据单元,其可以由计算加强的程序得到。这种基本数据单元可以允许用于计算工作的更好的工作安排或负载平衡。
通信量管理:分布式地区或网络位置服务能够建立在网络顶层或由不同中央服务器存取。当选择从哪个客户机下载时,可以使用该服务以保存带宽。
激励用户:用户运行该应用程序时Skyris接收到的值太低,而不能考虑此时直接支付用户,尽管对于更多增值业务,可以执行这种方案,例如对于当购买昂贵的物品时的找回现金。其它奖励用户参与分布式系统的更有效的方法包括抽彩给奖法和捐赠用户从列表中选择的慈善机构的方法。也可以使用捐赠慈善机构或发行彩票的组合。
结论
基于新的算法,Skyris基本构造的核心级是全局扩展性和高度的容错性。其它的分布式网络不具有这两个特点,这些网络必须在具有可扩展性而不具有容错性或具有容错性而不具有可扩展性之间选择,前者例如域间路由选择协议BGP,后者例如MIT的RON方案,该方案可以在小规模网络上实现比BGP更好的路由。
Skyris的可扩展性和容错性允许基本构造根据灵活的基本数据单元,分布式目录服务,建立新的应用程序,这在以前是不可能的-可靠的网络运行在不可靠的桌上电脑上。
伪码实施例
图9说明与图1所示的Skyris软件134结合存储的数据结构900。
该数据包括连接列表902,其包括直接连接列表904,间接连接列表912,以及共享连接列表918。直接连接列表存储UID,或用于当前节点及其网络的每个直接连接的散列地址值,即IP地址908,以及关于其连接状态历史的信息910。连接状态历史910提供关于最近过去的时间内,有多少连接到该节点的尝试失败,从而如果有到给定直接连接的一定数量的连接尝试失败,那么当前节点将知道其需要用新的直接连接代替该给定的直接连接。
间接连接列表包括对于每个间接连接的UID914和其网络地址916。
共享连接列表是其它节点的列表,当前节点对于这些其它节点是直接连接,对于每一个这种其它节点,该列表包括所有当前节点连接的列表,这种连接由当前节点在图8所述的过程中连接到其它节点。如下面将解释的,共享连接列表被用于使节点向另一个节点提供更新信息,该信息是关于节点提供到该另一个节点的任何连接。
图9所示的共享邻域数据922列出了由属于共同邻域的所有节点共享的数据。数据由多个节点共享的事实提供了冗余度,即使节点可能以相对高的速率离开和进入邻域,该冗余度确保这种信息不会丢失。
共享邻域数据包括邻域地址掩码924,该掩码包括由当前节点的邻域的所有成员共享的一组最高有效位。如果当前节点收到关于给定散列地址的请求,并且如果该散列地址的最高有效位与当前节点的地址掩码匹配,那么通常地该当前节点将直接响应请求,这是由于如同其邻域中的所有其它节点,应该具有关于散列地址的所有信息的备份。
共享邻域数据还包括广播(rumor)列表926。如928所示,这是包括当前节点的邻域中所有节点的UID,即散列地址的列表,其包括与每个这种散列地址关联的来自该节点的所有最近广播的列表。如932-934所示,对于每个这种广播,其包括显示其起始时间的时间戳和广播的内容。这种广播被用于传输通常由邻域中的节点索引的所有信息和与邻域的活动有关的其它信息。
对于多个关键字中的每一个,共享邻域数据包括关键字项目列表936,其可以被用于索引例如文件的数据对象。对于每个这种关键字项目,存储关联文件的列表938。对于每个文件该列表包括文件散列值940,文件名942,文件大小944,文件类型946(例如是否为文本文件,音频文件,视频文件),其它基于描述文本的元数据948,存储文件备份的节点数950,以及与文件关联的其它关键字的列表952。关键字项目同时存储与关键字关联的文件的有序表,如954所示,按存储文件的节点数排序。这被用于帮助关键字项目确定哪个文件最流行,如由文件存储在网络中的次数表示,并且在关键字索引时给予这些文件优先权。
共享邻域数据还包括文件项目列表956。对于一个或多个文件项目中的每一个,该列表包括散列值958,散列值组块列表960,与文件关联的关键字列表962,以及存储文件的节点列表964。对于存储文件的每个节点,列表964存储节点的IP地址966,该节点的端口数968,用于该节点的互联网连接速度970,节点的网络位置972,其用于确定一对节点的接近程度,以确定哪个备份最适于下载到给定的请求节点。对于每个存储文件的节点该项目也包括关于节点是否处于防火墙后的指示,如果处于防火墙后,列表964包括接续连接信息974,项目终止日期976,在该日期用于给定文件的项目将从存储文件的节点列表中删除,除非从该节点收到更新的消息,显示该备份在其位置仍然可用。
如图9中978所示,如果给定节点存储一份给定的文件,其为上述关于共享网络数据中所述的存储文件的节点列表964中引用的类型,则该节点将具有用于文件备份项目列表980中的备份的项目。每个这种文件备份项目包括文件散列值982,每个组块的散列值的列表,或文件的子部分,在优选实施例中,每个子部分大约是128千字节长,文件自身的实际内容986,以及与文件关联的关键字列表988。文件备份项目还包括与文件关联的基于其它文本的元数据,以及索引更新时间,其相应于在上面共享网络数据的文件项目中描述的项目终止日期976。当文件最初存储在给定节点时,该索引更新时间更佳地被设置为更短的时间周期,当文件在节点连续可用的时间长度增加时,更新时间变为更长。图9所示的连续更新数字994表示更新周期数字,从当前节点文件备份对于网络连续可用,并且更新周期数字用于确定索引更新时间应该被设置为多长。如上所述,每个节点应该根据索引更新时间更新与每个文件关联的项目终止日期976,以阻止用于任何关联的文件备份的项目,从存储上述文件的节点列表964中删除。
图10说明节点如何进入Skyris网络,或者当节点第一次进入网络时,或者当节点离开网络后重新进入网络时。
第一个函数1002建立与网络中已知节点的连接。一般地,已知节点是包含在节点列表中的一个或多个节点,该列表已经发给试图进入网络的节点。例如节点通常在下载Skyris软件后进入网络,这种软件一般包括为函数1002而可能被调用的多个已知节点的列表。在一些实施例中,已知节点是一个或多个中央服务器之一,这些中央服务器与系统关联,并且充分地可靠,以致在任何给定时间至少一个或两个这种已知服务器可用。在其它实施例中,新的节点被赋予网络名称,使用动态名称解析,使该网络名称映射到实际的当前节点,动态名称解析是为动态地将URL映射到IP地址而提供的服务。支付费用后,在互联网上可以从不同服务提供商处得到该服务。
一旦当前节点建立了与Skyris网络中已知节点的连接,函数1004生成两个或更多新的网络散列地址。接着函数1006使函数1008执行散列地址搜索,以找到邻域中的节点,该节点处理与每个这种新的散列地址相应的散列地址空间部分,下面将关于图11描述。
函数1008执行的散列地址搜索查询被发现处于一个可能为新的散列地址的邻域中的每个节点,搜索与节点的邻域关联的邻域掩码。一旦这种与每个可能散列地址关联的掩码被返回,函数1010选择搜索返回的在其邻域掩码中具有最少高位的邻域。一般地这将相应于地址空间区域中具有最小密度的邻域。一旦该选择完成,函数1012将当前节点分配给与选择的邻域相应的散列地址。函数1014接着从函数1008的搜索所选择的邻域的节点连接,下载上述关于图9所述的一份完整的共享邻域数据922。一旦该操作完成,函数1016建立用于节点的新的散列地址的连接列表,如以下将关于图12和13所述的。
图11描述了节点如何执行上面关于函数1008所述的散列地址搜索。
图11所示的散列地址搜索1100开始于测试与执行搜索的节点关联的邻域地址掩码是否与将要搜索的散列地址的高位匹配。如果匹配,函数1102使函数1104从对当前节点的UID,邻域掩码和网络地址的搜索返回。该操作被完成,因为如果当前节点的地址掩码与被搜索的散列地址的高位匹配,就应该具有所有共享邻域信息,该信息对于处理散列地址搜索是必须的。
如果1102中的测试没有被满足,为了函数1108执行的迭代操作,函数1106使当前节点连接列表作为当前连接列表。
函数1108执行until循环操作,直到其迭代之一得到来自另一个节点的返回值,该返回值包括与搜索地址的高位匹配的邻域掩码,具有该匹配的邻域掩码的节点的UID,以及该节点的IP地址。
函数1108的循环操作使函数1110到1120得以执行。
如果节点在超时期间内没有得到对搜索请求的响应,函数1114和1116在until循环1108的顶部重新开始,这将使函数1112向搜索使用的当前连接列表中的另一个项目发送搜索请求。
如果响应函数1112发送的搜索请求而收到应答,并且该应答不包括匹配的邻域掩码,而是包括新的连接列表,则函数1118和1120将新的连接列表和当前连接列表合并。如果函数1112发送的搜索请求的节点比当前节点靠近被搜索的散列地址,由函数1120合并进入搜索的当前连接列表的连接列表将可能包括这样一组连接,这些连接比以前处于搜索的当前连接列表中的连接更靠近被搜索的散列地址。
一般地在函数1108的unitl循环的基本地少于log(n)次迭代后,其中n等于Skyris网络中的节点数,将会响应函数1112发送的搜索请求之一收到应答,其包括与搜索地址匹配的地址掩码,和返回该匹配掩码的节点的UID和IP地址。
图12描述了连接列表建立函数1200,其被用于为新的节点建立连接列表。
该函数包括循环操作1202,对于索引i从0到k的每个可能的值执行该循环操作。在一些实施例中,k是邻域中节点数的对数。在另一些实施例中,例如该伪码所示的实施例中,k等于邻域掩码的长度,其中的邻域掩码用于为之连接连接列表的节点。
对于循环1202的每次迭代操作,函数1204通过执行操作1206到1210,建立新的UID,即散列地址值。函数1206从为之建立连接列表的当前节点备份前i-1个有效位。函数1208反转当前节点UID的第i个最高有效位。接着函数1210为将被建立的新的散列值中不如第i位有效的所有位选择随机值。
一旦该新的UID值被建立,函数1212调用图13所示的建立新的直接连接的函数1300。
如图13所示,新的直接连接建立函数包括函数1302到1320。函数1302执行关于图11所述的散列地址搜索,搜索新的直接连接建立函数调用的UID。如上述关于图11所述,该函数将搜索以找到邻域中处理被搜索的UID的节点。一旦散列地址搜索返回关于这种节点的信息,函数1304使函数1302的搜索返回的节点作为当前节点的第i个直接连接,其中i等于最高有效位的个数,根据该最高有效位,返回的连接不同于当前节点的新的UID。
函数1306到1312为新的直接连接存储UID,IP地址,以及初始空的连接状态历史项目。这相应于图9中被显示为每个直接连接存储的信息906到910。
一旦第i个连接在当前节点的数据结构中具有为其建立的项目,函数1314向第i个连接发送连接请求,请求间接连接列表,这些连接具有与第i个连接相同的最高有效位,等于并包括第i位,并且具有d-1个最高有效位的所有可能的组合。这相应于上面关于图8讨论的连接请求。当直接连接返回请求的间接连接时,函数1316到1320使每个这种间接连接的UID和IP地址存储在当前节点数据结构的间接连接列表912中,如上面关于图9所述的。
图14是连接请求响应函数1400,当节点接收连接请求时执行该函数,其中的连接请求由节点执行上述关于图13所述的函数1314时发送。
当执行该连接请求响应操作时,函数1402找到所有节点连接的列表,其中的连接具有请求中确定的从第i位相同的最高有效位,并且具有d-1个接着的最高有效位的所有可能组合。这类似于上面关于图8所述的连接列表。一旦该列表被建立,函数1404发送该连接列表到请求的节点。接着对于被函数1404发送到请求节点的每个连接节点执行函数1406。对于每个这种被发送到请求节点的连接节点,函数1406使函数1408在请求节点下的节点共享连接列表中设置项目,记录被发送到节点的连接。如下面关于图15和16所述,共享连接列表项目被用于使节点知道当它发现其连接列表中的连接不再有效时,需要更新其它哪些节点。
图15描述直接连接状态更新函数1500。该函数包括函数1502,其中每n秒对当前节点的每个直接连接执行循环操作1504。在当前的实施例中,n等于5秒。
对于当前节点的每个直接连接,函数1504使函数1506到1526被执行。函数1506试图与循环函数1504的当前迭代操作中的当前直接连接通信。如果没有通信响应函数1506的尝试而建立,则函数1508使函数1510到1526被执行。函数1510记录与该连接的通信失败。接着函数1512测试该尝试是否是第n个连续的与该连接的通信失败的尝试。如果是,则确定该节点不再是一个有效的直接连接,并使函数1514到1526被执行。应该注意在其它本发明的实施例中,可以使用不同的标准准确地确定什么时候直接连接应该被认为不再有效。
函数1514到1518建立新的UID,该UID用于被新的直接连接代替函数1512确定为无效的UID。该新的UID包括与被代替的直接连接相同的最高有效位,等于并包括与当前节点的UID不同的第一个最高有效位。随机地选择新的UID的剩余各位。
一旦该新的UID被建立,函数1520为该新的UID调用上面关于图13所述的新的直接连接建立函数1300。
一旦函数1300在邻域中找到来自给定节点的新的直接连接,该邻域掩码与新的UID的最高有效位匹配,则函数1300将使该给定节点作为新的直接连接以代替函数1512发现为失败的直接连接,并且将得到相应的一组间接连接,这些间接连接与散列地址空间的新的直接连接部分关联。函数1300将使该新的直接连接和其相应的间接连接进入当前节点连接列表。
一旦该操作完成,函数1522为每个其它的节点执行循环操作,其中其它的节点在上面关于图9所述的当前节点共享连接列表918中具有用于被代替的连接的项目。对于每个这种节点,即当前节点以前已经向其发送被代替的直接连接或相关的间接连接中之一,函数1524向该其它节点发送连接变化消息,显示被代替的连接已经被代替,由UID和IP地址确定代替连接。函数1526接着更新共享连接列表,以反映新的代替连接已经被发送到刚被通知该代替的其它节点。
图16说明连接变化消息响应函数1600,当节点接收到上面关于图15中函数1524所述的连接变化消息时,执行函数1600。
当节点接收到这种连接变化消息时,操作1602用显示在节点连接列表902消息中的新的替代连接代替消息中显示的被代替连接,列表902如上面关于图9所述。
接着函数1604为每个其它节点执行循环操作,该其它节点与当前节点共享连接列表中的被代替的连接关联。对于每个这种节点,函数1606发送连接变化消息到该其它节点,显示被代替的连接,以及代替它的连接的UID和IP地址。接着函数1608更新当前节点的共享连接列表,以显示其已经发送新的替代连接到该其它节点。
从图12到16可以看出,Skyris网络中的操作允许节点发展相对大的一组连接,其可以被用于更快速的搜索和找到能够处理给定散列地址值的节点,而不需要大数量的计算或通信信息。这是因为一般地节点仅通过从其它节点备份而得到大多数的连接;并且当其它节点给予该节点的一个或多个节点被发现失效时,其它节点向该节点发送更新连接列表的信息。这就使得在系统中,可以非常快速地搜索巨大的地址空间,但是用于保持使其可能实现这一点的大数量的连接却需要相对少的通信和计算开销。网络适当地和有效地仅传递关于连接变化的信息到需要知道该变化的节点,这一事实使系统可以有效的运行,即使在网络中很高百分比的节点以相对高的频率进入和离开网络的情况下。
图17和18是关于广播(rumor)通信的,其是用于在Skyris网络中给定邻域的节点间,或逻辑节点间传输信息的非常有效的机制。
图17说明广播建立函数1700。如果给定节点的共享邻域数据存在变化,则函数1702使函数1704到1708被执行。如下面关于图25和26所述,一般地当新的信息在给定节点中被索引时,产生这种变化。
函数1704建立新的广播,详细说明节点共享邻域数据的变化。函数1706用给定节点UID和相应于该新的广播建立时间的时间戳标注广播。接着函数1708将该广播放入给定节点自身UID下的给定节点广播列表中。
图8描述广播传播函数1800,其被用于在给定邻域的节点间传输广播。
函数1802每n秒执行一次循环操作,在一个实施例中是5秒。该循环操作包括为当前节点广播列表中的每个节点形成内循环1804。对于每个这种节点,执行函数1806到1830。
函数1806为与循环1804迭代中的当前节点关联的每个广播执行一次循环操作,其中测试该广播是否晚于给定的时限,如果晚于给定时限,则使函数1808删除该广播。从节点的广播列表中删除超时的广播,以阻止列表随时间变得很大而不经济,该操作完成。
下一个函数1810测试循环1804当前迭代的当前节点是否是执行函数1800的当前节点,以及是否在当前节点广播列表中存在任何与早于第二个时限的UID关联的广播。如果不存在与当前节点UID列表中的当前节点关联的这种相对新的广播,则函数1812向当前节点广播列表添加具有当前时间戳的“仍在这里(still here)”广播,从而广播传播将通知其它节点,当前节点仍然作为该邻域的部分。
下一个函数1814测试循环1804的当前节点是否另一个节点,并且该其它节点在当前节点广播列表中是否没有与早于第三个时限的UID关联的广播。如果该条件匹配,则意味着当前节点在足够长的时间内没有得到关于该其它节点的任何信息,表示该其它节点不再加入当前邻域,因此函数1816从当前节点广播列表中删除该其它节点。
一旦循环1804的操作完成,函数1818试图与从当前节点广播列表中随机选择地另一个节点通信。如果实现与随机选择节点的通信,则函数1820使函数1822到1827被执行。
函数1822测试通信每边的节点UID是否与另一个节点的邻域掩码匹配。如果一边的邻域掩码包括另一边,即具有更小数量的有效位,那么具有更小数量有效位的节点仅交换与这种节点UID一致的广播,其中的节点UID与另一个节点的更长的邻域掩码匹配。具有更长邻域掩码的节点将发送其广播列表中所有关于该节点UID的广播到具有更短邻域掩码的节点,这是由于所有这种节点的UID将属于相应于另一个节点的更短邻域掩码的散列地址空间。如果通信中节点邻域掩码的任何位彼此冲突,则两个节点都不向另一个节点传输任何广播。
图19说明邻域分裂函数1900。该函数包括测试1902,1902测试列举在当前节点广播列表中的邻域数量是否超过邻域上限。在本发明当前的实施例中,节点设法保持其邻域大约处于32到64个节点的范围内。在这种情况下,邻域上限将是64。如果函数1902的测试符合要求,则执行函数1904到1908。
函数1903将当前节点邻域掩码的长度增加1位。函数1904向当前节点UID下的节点广播列表添加广播,显示当前节点已经将其邻域掩码的长度扩大了1位。
如上所述,广播传播将使该广播被发送到当前节点邻域中的其它节点。如果当前节点是检测出其邻域个数已经超过邻域上限的最初几个节点之一则其以前邻域中的大多数其它节点将具有比当前节点更短的地址掩码,这是函数1903的结果。如上面关于图18中广播传播函数所述,具有更短邻域掩码的这种其它节点将从当前节点接收广播,这是由于相应于新的邻域掩码的地址空间部分属于更短地址掩码代表的地址空间部分。这将使这种其它节点接收当前节点已经决定分裂其邻域的消息。但是UID与当前节点的新的更长地址掩码不匹配的任何这种节点将不再向当前节点发送广播,这是由于它们已经被通知当前节点不再对其当前邻域的一半感兴趣。
当节点增加其邻域掩码的长度时,如函数1903所示,函数1906测试当前节点是否包括完整的连接列表,其包括直接连接和相应的一组间接连接,其中不同于当前节点地址的第一个最高有效位相应于刚刚被添加到当前节点地址掩码中的新位的位置。
如果函数1906的测试发现当前节点没有这种连接项目,则函数1908调用上面关于图13所述的新的直接连接建立函数1300,以建立这种直接连接和一组相应的间接连接。
尽管在图19中已经示出,如上面关于函数1902所述,如果节点检测出其邻域超过邻域上限,而且发现分裂邻域将会使两半中之一的地址低于邻域下限,则其将通过产生消息使当前邻域的成员重新进入其另一半中的邻域进行响应,以使个数的不平衡得到纠正,这种个数不平衡导致邻域太大同时其两半之一太小。
图20描述邻域分裂广播响应函数2000。如函数2002所示,如果当前节点收到与另一个节点的UID关联的广播,显示另一个节点已经改变其邻域掩码,从而不再与当前节点的UID匹配,则执行函数2004到2008。这些函数在当前节点广播列表的另一个节点的项目中设置显示,表示从与广播关联的时间戳显示另一个节点变化时起,另一个节点已经离开当前节点的网络。它表示从当前节点到该另一个节点不应建立广播通信,直到接收到来自该另一个节点的新的广播,说明其具有与当前节点的UID匹配的邻域掩码。
图21描述邻域合并函数2100。如果节点广播列表中的邻域数量低于邻域下限,则函数2102执行循环2104。对于散列空间另一半中的一个或多个随机选择的散列地址,执行循环2104,其中的散列空间由当前节点邻域掩码中的一个较小位限定。
函数2106为每个这种随机选择的散列地址执行散列地址搜索。函数2108测试由散列地址搜索得到的节点是否具有比当前节点更长的邻域掩码。如果是,则执行函数2110。
函数2110随机地确定是否向另一个节点发送搜索返回的消息,请求该节点重新进入具有与当前节点邻域掩码相应的UID的网络。这种消息以1/n的概率发送,其中n是节点邻域的大小。使用这种随机确定是否发送该消息的方法,以提供这种可能,即所有节点在相当短的时间周期内接收该消息,这是因为这将使邻域以较低个数接收该消息。
如果函数2208的测试不被满足,则应该被合并的邻域仅通过将其各自的邻域掩码缩短1位就可以被合并,因此函数2213使函数2214到2222被执行。
函数2216通过广播通信向当前节点邻域中的节点发送合并请求。这将使接收该广播的所有节点执行图22的合并请求响应函数。接着函数2218使当前节点将其邻域掩码的长度减小一位。函数2220从当前节点连接列表中删除最低位首先与当前节点散列地址不同的直接连接,及其所有相关的间接连接。接着函数2222使当前节点执行与来自新的邻域另一半的节点的下一个广播通信,以致当前节点将收到所有共享邻域数据,直到合并被新形成邻域的另一边索引,而不是被当前节点的一半索引。
图23说明新文件网络项目函数2300。当节点试图将一个文件输入Skyris网络,而据该节点所知,该文件以前没有被输入Skyris网络时,该节点执行函数2300。
新文件网络项目函数包括函数2302,其将被登记的文件分为一个或多个组块,而每个组块不大于给定的大小。在本发明的一个实施例中,文件组块被限制为128KB。下一个函数2304对每个组块执行散列操作。下一个函数2306将文件散列值设置为与给定文件关联的组块的散列。
在这个操作完成后,函数2308找到与文件关联的一个或多个关键字的列表。不同的函数可以用于等到用于不同类型文件的关键字。例如,许多非文本文件将主要将其关键字基于文件名。包括元数据的文件将常常使这种元数据限定其关键字。纯文本文件可能由与文件中正文字相应的关键字限定,该正文字在文本文件中的出现频率比在一般文件中的出现频率高的多。
对于每个这种由函数2308找到的关键字,函数2310和2312找到其相应的散列值。下一个函数2314调用备份文件网络项目函数2400以完成文件在网络中的输入,函数2400如图24所示。
如图24所示,备份文件网络项目函数包括函数2402,函数2402为与文件关联的散列值形成散列地址搜索,其中对于该文件执行图24中的函数。
当散列地址返回节点地址时,其中该节点处理相应于文件散列值的散列地址空间部分,函数2404向该节点发送对文件的文件索引插入请求,和当前节点IP地址。函数2412向散列地址搜索返回的节点发送对关键字散列值的关键字索引插入请求,该请求包括当前节点IP地址和包括在用于当前文件的文件项目中的其它信息。接着函数2406存储保存当前文件的节点数,其中的当前文件由响应文件索引插入请求返回。
下一个函数2408为当前文件的每个关键字执行循环操作。该循环包括函数2410和函数2412,函数2410执行对关键字散列值的散列地址搜索,函数2412向散列地址搜索返回的节点发送对关键字散列值的关键字索引插入请求。该请求包括当前节点的IP地址和用于与循环2408中当前的关键字关联的关键字项目的信息,包括存储当前文件的节点数,其中的当前文件由文件索引插入请求返回。
接着函数2414使数字2416到2424表示的信息存储在与文件散列值关联的当前节点,其中对于文件执行备份文件网络项目函数。该信息包括当前文件关联组块的散列值的列表,文件自身数据,与文件关联的关键字和其散列值的列表,被设置为0的索引更小数字,以及初始由短的更新长度设置的索引更新时间,其表示当前节点必须在该更新时间为存储在当前节点的文件更新由网络建立的索引文件项目。
图25说明文件索引插入请求响应函数2500。该函数由接收文件索引插入请求的节点执行,该请求由上面关于图24所述的函数2404发送。
当节点接收这种文件索引插入请求时,函数2502测试在当前节点是否存在任何用于请求的文件的文件项目。如果不存在,执行函数2504和2506。函数2504为文件建立文件项目,包括关于发出请求的节点的信息。这相应于上面关于图9所述的文件项目数据956。函数2506将节点特有UID下的节点广播列表中的广播与包括新的文件项目的当前时间戳一同放置。这相应于图17所述的广播建立。
如果函数2502的测试发现已经存在用于被响应的请求文件的文件项目,则函数2508使函数2510和2512被执行。函数2510向用于当前文件的文件备份项目列表添加新的文件备份项目,表示用于节点的网络单元信息,其中的节点发送被响应的请求。接着函数2512将节点特有UID下的节点广播列表中的广播与包括新的文件备份项目信息的当前时间戳一同放置。这也相应于图17所述的广播建立。
当完成文件索引插入响应请求的操作时,函数2514向请求的节点返回信息,显示用于响应请求的文件的文件备份项目数。
图26描述关键字索引插入请求响应。这有些类似于图25所述的响应函数,除了其描述了对请求插入关键字索引信息而不是文件索引信息的节点响应。
当节点收到关键字索引插入请求时,如图24所述的函数2412产生的请求,函数2602测试是否已经存在任何用于与当前节点的请求关联的关键字的关键字项目。如果不存在,则函数2604为当前关键字建立关键字项目,如关于图9所述的关键字项目列表936描述的。
如果另一方面,已经存在用于当前关键字的项目,则函数2606测试存储伴随关键字请求的文件的节点数是否超过最小请求数。在当前的实施例中,关键字项目仅存储关于这种文件的信息,即与该关键字关联的5000个存储频率最高的文件。在另一个实施例中,可以使用不同的要求条件以确定结合给定的关键字索引哪些文件。
如果函数2606的测试通过,则执行函数2608到2616。函数2608检查在用于该关键字的当前节点的关键字项目中是否存在任何用于与当前关键字关联的文件的关联文件项目。如果存在,函数2610在关联文件的当前关键字项目列表中为与当前请求关联的文件建立新的关联文件项目。
如果函数2608的测试发现在当前关键字项目中存在用于请求的文件的关联文件项目,则函数2612使函数2614和2616被执行。函数2614把存储文件的节点数替换为包括在当前关键在索引插入请求中的数量,函数2616通过存储计数对文件有序表中的文件位置进行重新排序,如图9所示的954。该列表被测试2606用于确定与给定文件关联的文件数是否属于用于与当前关键字关联的任何文件的前5000个数量最多的文件。
在关键字索引插入请求响应函数完成之前,函数2618将具有当前时间戳的广播列入节点特有UID下的当前节点广播列表,该广播包括由于响应关键字索引插入请求而引起的关键字项目的任何变化。这也相应于上面关于图17所述的广播建立。
图27到29说明网络为增加信息普遍有效的概率使用的函数,其中的信息被网络的分布式索引索引。
图27所述文件终止响应函数2700。该函数包括测试2702,测试用于存储文件的节点列表中的节点-存储-文件项目的终止日期是否已经终止。如果终止,执行函数2704到2714。函数2704删除与图9所示的列表964关联的节点-存储-文件项目。接着函数2706测试存储文件的节点列表在删除操作后是否为空的。如果为空,则执行函数2708到2714。函数2708为与文件项目关联的每个关键字形成循环操作。该循环操作包括函数2710和函数2712,2710对关键字的散列执行散列地址搜索,2712向关键字搜索返回的节点发送消息,通知该节点从其关键字关联项目的关联文件列表中删除文件。下一个函数2714删除关联文件项目以响应函数2706测试得到的情况。
图28说明文件索引更新函数2800,其由存储给定文件的单个节点执行。如果图9中值992所示的文件索引更新时间,该时间与给定文件一起存储,终止的时间超过x,则函数2802将使函数2804执行备份文件网络项目,如上面关于图24所述,其对文件执行以使closet重新进入网络分布式索引方案。
一般地,函数2802的测试中使用的时间x相应于小的时间差,其通常存在于存储文件的节点存储的索引更新时间和索引文件位置的节点存储的相关终止日期。因此如果不满足函数2802的测试,则文件索引更新时间仍不终止。如果这样,函数2806测试文件索引更新时间是否将要终止。如果是,执行函数2808和2810。函数2808向索引文件的节点发送索引更新消息,用连续的更新数字向该节点显示新延长的终止日期应该提前多少被设置。函数2810增加文件相应的连续更新数字994,如图9所示,从而当下一个终止日期延长被设置时,确信节点已经连续地维护了当前文件。
图29说明文件索引更新消息响应函数2900,其由接收任何索引更新消息的节点执行,其中的更新消息如图28中函数2808所述。
如果从节点收到这种索引更新消息,其中的节点处于文件项目中存储文件的节点列表中,文件项目用于与更新消息关联的文件,则函数2902和2904为节点的文件设置新的终止日期,作为与更新消息关联的连续更新数字的函数。如上所述,到将来的时间长度,即在设置的新的终止日期,是连续更新数字的函数。当连续更新数字非常小时,将会设置新的终止日期,只是到将来的几分钟。随着连续更新数字的增加,新的终止日期将被延长到将来的更长时间,在一些实施例中,为12或24小时。
应该理解上述描述和附图仅用于解释和说明,本发明并不限于此,除了对随后改进的解释如此限制。知道本发明的本领域技术人员应该能够在不脱离本发明范围的情况下,对本发明进行修改和变化。
当前应用的本发明不限于与任何一种操作系统,计算机硬件,或计算机网络一同使用,因此,本发明的其它实施例可以使用不同的软件和硬件系统。
而且,应该理解下面改进中描述的程序动作,如实际上所有的程序动作,可以由许多不同的编程和数据结构使用完全不同的结构和排序执行。这是因为编程是一项极其灵活的技术,其中一旦本领域技术人员理解了无论多复杂的给定的思想,该思想就能以实际上无限种方式表示。因此,改进并不意味着限制于附图中描述的具体的函数和/或函数序列。上述伪码被高度简化以使其更有效的表达,从而本领域技术人员可以了解以实现本发明,而不会给他或她增加不需要的细节信息,因此本发明更加不限于上面的描述。为了这种简化,上述的伪码结构常常较大地不同于熟练的程序员实现本发明时使用的实际编码的结构。而且,说明书中软件执行的许多程序行为在其它实施例中可以在硬件中执行。
在上述的本发明的许多实施例中,被表示为同时出现的本发明的不同方面在本发明这些方面的其它实施例中可以分别出现。
Claims (23)
1、分布式索引网络中的节点,其中每个节点在索引地址空间和分离的网络地址空间中具有地址,所述节点包括:
用于存储程序指令和数据结构的机器可读存储器;
用于处理存储在所述存储器中的程序指令的一个或多个处理器;
存储在所述存储器中的程序指令用于:
将索引地址空间的子集与所述节点关联;
维护连接列表,所述列表为多个连接中的每一个存储索引空间和网络地址,每个所述连接是所述索引网络中的另一个节点;
将所述连接列表中的一小部分作为直接连接,所述连接列表中剩下的部分作为间接连接;
试图以最小的频率与每个直接连接通信,以确定该直接连接是否仍然属于所述网络;以及
通过找到代替给定连接的新的直接连接,来响应这种决定,即所述的给定连接不再属于所述网络,并且用所述替代连接的索引和网络地址代替所述节点连接列表中被代替的直接连接;
其中所述节点通过使用其连接列表中与给定地址最接近的地址作为向其发送这种搜索请求的下一个节点,不管所述地址为直接地址或间接地址,以响应对给定索引地址的搜索请求,所述给定索引地址不属于与所述节点关联的索引地址空间的所述子集。
2、如权利要求1所述的节点,其中
所述节点从相关的节点直接连接中之一得知节点每个间接连接的索引地址和网络地址;以及
所述节点从相同的直接连接得知给定间接连接状态的变化,所述节点从所述相同的直接连接得知所述间接连接的索引和网络地址。
3、如权利要求2所述的节点,其中:
所述程序指令包括用于响应来自另一个节点的请求一组连接的指令,通过向请求的节点发送节点连接的子集,并存储所述节点已经向另一个请求节点发送所述连接的子集的记录进行响应;以及
其中对请求进行响应的所述节点确定给定的直接连接不再属于所述网络,同时包括向任何其它节点发送给定的连接已经被代替的消息,包括替代连接的索引地址和网络地址,其中的所述节点已经响应连接请求向所述的其它节点发送给定的直接连接。
4、如权利要求3所述的节点,其中所述程序指令包括用于响应来自另一个节点的消息的指令,所述消息显示由所述另一个节点提供给所述节点的给定间接连接已经被具有给定索引和网络地址的新的间接连接代替,通过以下步骤实现所述替代:
用替代节点的索引和网络地址代替节点连接列表中给定的间接连接;以及
向任何其它节点发送以前的通信连接已经被代替的消息,包括替代连接的索引地址和网络地址,其中的所述节点已经响应连接请求向所述的其它节点发送被代替的间接连接。
5、如权利要求1所述的节点,其中所述节点没有以大于最小频率1/10的频率直接地与间接连接通信,所述最小频率是所述节点为了确定所述间接连接是否仍然属于所述网络,而与直接连接通信的频率,并且所述节点通过与直接连接的通信得知这种间接连接状态的变化。
6、一种分布式索引网络,其中每个节点在索引地址空间和独立的网络地址空间中具有地址,所述网络包括:
多个节点,每个所述节点包括:
用于存储程序指令和数据结构的机器可读存储器;
用于处理存储在所述存储器中的程序指令的一个或多个处理器;
存储在所述存储器中的程序指令用于:
将索引地址空间的子集与所述节点关联;
在所述节点存储索引信息,所述节点在其关联的索引地址空间子集中具有关联的索引地址值;以及
通过存取信息,如果有的话,存储在与所述索引值相关的节点,响应对与给定索引值关联的信息的请求;
其中相关于多个节点中每个的索引地址空间的所述子集的全部或部分重叠,以使所述多个节点中的每个节点存储用于一组类似的索引地址值的索引信息。
7、如权利要求6所述的节点,其中所述节点包括程序指令,用于:
通过执行搜索找到节点,所述节点与包括所述给定索引值的索引空间的子集关联,以响应被给定索引值索引的新信息的项目;
在所述节点存储所述新信息,所述节点由与给定索引值关联的搜索得到;
在与索引空间的给定部分的信息关联的节点间传递信息,所述信息由索引值索引,所述索引值属于一个这种结点的所述给定索引空间部分;以及
通过在给定节点上存储与所述索引值关联的信息,响应这种通信。
8、如权利要求6所述的节点,其中所述节点包括程序指令,用于:
使节点确定索引索引地址空间的给定部分的节点数;以及
通过向一个或多个其它节点发送消息,响应这种决定,即索引索引地址空间的给定部分的节点数低于给定下限,其中所述的其它节点当前没有索引索引地址空间的所述给定部分,并请求所述其它节点开始索引所述给定的索引地址空间;
通过改变给定节点索引的索引地址空间部分,使其包括索引地址空间的所述请求的部分,响应这种请求。
9、分布式索引网络中的节点,其中每个节点在索引地址空间和分离的网络地址空间中具有地址,所述节点包括:
用于存储程序指令和数据结构的机器可读存储器;
用于处理存储在所述存储器中的程序指令的一个或多个处理器;
存储在所述存储器中的程序指令用于:
将索引地址空间的子集与所述节点关联;
在所述节点存储索引信息,所述节点在其关联的所述索引地址空间子集中具有关联的索引地址值;以及
通过存取信息,如果有的话,存储在与所述索引值相关的节点,响应对与给定索引值关联的信息的请求;
限定一组网络节点,包括形成逻辑节点的节点,其包括与索引地址空间的相同子集关联,并且存储基本相同的索引信息的所有节点;
与所述逻辑节点中的其它节点通信,以得到任何新的信息,所述信息被这种其它节点存储,但没有存储在所述节点中,并且具有所述逻辑节点的关联索引地址空间子集中的关联索引地址值;以及
在所述节点上存储所述新的信息,如果所述节点在网络中存在足够长的时间,则其将得到基本所有的这种信息,在给定时间期间,所述信息被逻辑节点中的其它节点存储。
10、如权利要求9所述的节点,其中:
所述存储器存储指令,所述指令用于形成所述逻辑节点中节点数的估计值;以及
所述存储器存储指令,所述指令用于以下操作的至少一个:
通过执行一个或多个函数,将逻辑节点分裂为两个或更多新的分离的逻辑节点,以响应这种估计值,即表示逻辑节点中的节点数大于某个值,其中每个分离的逻辑节点与所述索引地址空间子集的分离的部分关联,所述索引地址空间与所述逻辑节点关联;或者
通过执行一个或多个函数,将所述节点的当前逻辑节点与第二个不同的逻辑节点合并,形成一个新的逻辑节点,以响应这种估计值,即表示逻辑节点中的节点数小于某个值,其中新的逻辑节点具有所述索引地址空间的相关子集,所述索引地址空间包括既与节点当前逻辑节点关联,又与第二个当前逻辑节点关联的索引地址空间的子集。
11、如权利要求10所述的节点,其中所述节点的存储器存储用于既执行分裂函数又执行合并函数的指令。
12、如权利要求11所述的节点,其中
所述程序指令通过一组可能值表示索引地址空间,所述的可能值可以由一组地址位表示;以及
形成给定逻辑节点的所述节点都共享一组共同的比特值,其用于所述地址位序列的最高有效位的给定序列;以及
所述逻辑节点分裂和/或合并操作包括改变所述索引地址空间最高有效位序列的长度,所述索引地址空间被所述节点的逻辑节点中的节点共享。
13、如权利要求9所述的节点,其中所述存储器存储指令,用于:
形成所述节点的逻辑节点中节点数的估计值;以及
通过请求所述网络中其它节点加入所述节点的逻辑节点,以响应这种估计值,即表示逻辑节点中的节点数小于某个值,改变其索引地址值为属于与所述节点的逻辑节点关联的索引地址空间子集的值。
14、如权利要求9所述的节点,其中所述与所述逻辑节点中其它节点的通信包括以某个最小频率与其逻辑节点中不同的节点通信,其中在每个这种通信中,至少有一个给定的一方:
接收通信中的另一方存储的信息更新列表,其中每个这种更新表示在哪个节点上发起更新,和更新开始的相对时间;以及
从另一方得到所述给定方不再拥有的任何更新信息,并存储。
15、如权利要求9所述的节点,其中所述指令包括用于以下操作的指令:
当所述节点进入所述分布式索引网络时,得到至少两个索引地址值,其用作所述节点的可能的索引地址值;
对于每个所述的可能的索引地址值:
在网络中进行对属于逻辑节点的另一个节点的搜索,所述的另一个节点与包括所述可能的地址值的索引地址空间的子集关联;以及
对每个这种其它节点,对于其关联的逻辑节点的个数进行查询;
选择可能的索引地址值其中之一作为节点的新的索引地址值,所述可能地址值具有个数最小的关联逻辑节点;以及
开始与所述逻辑节点中其它节点的通信,所述逻辑节点与所述节点的新的索引地址值关联。
16、如权利要求9所述的节点,其中:
所述程序指令用一组可能的值表示索引地址空间,所述可能的值用一组索引地址位表示;以及
形成给定逻辑节点的所述节点都共享一组共同的比特值,其用于所述索引地址位的共同子集。
17、如权利要求16所述的节点,其中所述共享的比特是所述索引地址位中最高有效位序列。
18、分布式索引网络中的节点,其中每个节点在索引地址空间和分离的网络地址空间中具有地址,所述节点包括:
用于存储程序指令和数据结构的机器可读存储器;
用于处理存储在所述存储器中的程序指令的一个或多个处理器;
存储在所述存储器中的程序指令用于:
将索引地址空间的子集与所述节点关联;
在所述节点为一个或多个关键字中的每个存储关键字项目,所述关键字具有相应于节点的关联索引地址空间子集的索引值,其中与给定关键字关联的每个这种子集存储与给定关键字关联的一个或多个对象的信息;以及
通过存取节点上所述关键字项目中的信息,响应对与关键字索引值关联的信息的请求,对于所述的关键字索引值所述节点存储了相应的关键字项目。
19、如权利要求18所述的节点,其中与关键字关联的所述索引值是所述关键字的散列值。
20、如权利要求20所述的节点,其中与给定关键字关联的关键字项目包括与所述给定关键字关联的一个或多个文件的列表。
21、如权利要求20所述的节点,其中
关键字项目包括与所述一个或多个文件的列表中的每个文件关联的索引值;以及
所述存储器也存储用于在所述节点存储文件项目的指令,所述文件项目用于一个或多个文件中的每个,所述文件具有与所述节点关联的索引地址空间的子集中的索引值。
22、如权利要求21所述的节点,其中每个所述文件项目包括关于一组文件中每个文件的信息,所述一组文件是全部或部分所述项目关联的存储在所述网络一个或多个不同节点上的文件中的一个或多个,所述信息包括在其上存储每个这种文件的节点的网络地址。
23、分布式索引网络中的节点,其中每个节点在索引地址空间和分离的网络地址空间中具有地址,所述节点包括:
用于存储程序指令和数据结构的机器可读存储器;
用于处理存储在所述存储器中的程序指令的一个或多个处理器;
存储在所述存储器中的程序指令用于:
将索引地址空间的子集与所述节点关联;
在所述节点为具有这种索引值的一个或多个文件中的每个存储文件项目,即所述索引值与节点的关联索引地址空间的子集关联,其中每个这种文件项目存储关于其关联文件的信息,和关于一组文件中每一个的信息,这组文件由全部或部分所述与项目关联的文件中一个或多个组成,所述文件可以存储在所述网络的一个或多个不同的节点,包括在其上存储每个这种文件的节点的网络地址;以及
接收对于这种信息的请求,即与具有给定索引值的文件关联的信息,所述信息包括产生这种请求的节点的网络位置的显示;
如果请求的文件的索引值属于与所述节点关联的索引地址空间的子集,通过向发送所述请求的所述节点发送信息,响应这种文件-根据-索引的请求,所述信息是关于一个或多个文件组成的一组文件,所述一个或多个文件属于列举在所述请求文件项目中的全部或部分文件;所述信息包括存储这些文件的节点的所述网络地址;
其中向所述请求节点发送关于哪个文件信息的选择,包括使所述选择作为给定所述请求节点的网络位置时,存储给定文件的网络位置外观适宜度(apparent appropriateness)的函数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/246,793 US7054867B2 (en) | 2001-09-18 | 2002-09-18 | Systems, methods and programming for routing and indexing globally addressable objects and associated business models |
US10/246,793 | 2002-09-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1703697A true CN1703697A (zh) | 2005-11-30 |
Family
ID=32028963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA03825218XA Pending CN1703697A (zh) | 2002-09-18 | 2003-09-18 | 用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序 |
Country Status (7)
Country | Link |
---|---|
US (3) | US7054867B2 (zh) |
EP (2) | EP2053527A2 (zh) |
JP (2) | JP2006500831A (zh) |
CN (1) | CN1703697A (zh) |
AU (2) | AU2003275226A1 (zh) |
RU (1) | RU2321885C2 (zh) |
WO (1) | WO2004027581A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101197741B (zh) * | 2006-12-07 | 2010-05-19 | 华为技术有限公司 | 个人域网络内节点间的关联方法及获取关联方式的方法及装置 |
CN101344882B (zh) * | 2007-07-10 | 2010-06-02 | 中国移动通信集团公司 | 数据查询方法、插入方法及删除方法 |
CN102339303A (zh) * | 2010-07-20 | 2012-02-01 | 西门子公司 | 分布式系统 |
CN109474970A (zh) * | 2018-12-07 | 2019-03-15 | 天津津航计算技术研究所 | 一种适用于无线通信网络的路由方法 |
Families Citing this family (119)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7054867B2 (en) * | 2001-09-18 | 2006-05-30 | Skyris Networks, Inc. | Systems, methods and programming for routing and indexing globally addressable objects and associated business models |
JP4039158B2 (ja) * | 2002-07-22 | 2008-01-30 | ソニー株式会社 | 情報処理装置および方法、情報処理システム、記録媒体、並びにプログラム |
US8204992B2 (en) * | 2002-09-26 | 2012-06-19 | Oracle America, Inc. | Presence detection using distributed indexes in peer-to-peer networks |
US7657597B2 (en) * | 2002-09-26 | 2010-02-02 | Sun Microsystems, Inc. | Instant messaging using distributed indexes |
US7206934B2 (en) * | 2002-09-26 | 2007-04-17 | Sun Microsystems, Inc. | Distributed indexing of identity information in a peer-to-peer network |
US8259121B2 (en) | 2002-10-22 | 2012-09-04 | Broadcom Corporation | System and method for processing data using a network |
JP2004234157A (ja) * | 2003-01-29 | 2004-08-19 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US7424021B2 (en) * | 2003-01-31 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for processing network topology data |
US7478096B2 (en) * | 2003-02-26 | 2009-01-13 | Burnside Acquisition, Llc | History preservation in a computer storage system |
US9678967B2 (en) | 2003-05-22 | 2017-06-13 | Callahan Cellular L.L.C. | Information source agent systems and methods for distributed data storage and management using content signatures |
US20070276823A1 (en) * | 2003-05-22 | 2007-11-29 | Bruce Borden | Data management systems and methods for distributed data storage and management using content signatures |
US7668735B2 (en) * | 2003-05-30 | 2010-02-23 | Mdrxdirect Inc. | Compensated electronic consults |
US8095500B2 (en) | 2003-06-13 | 2012-01-10 | Brilliant Digital Entertainment, Inc. | Methods and systems for searching content in distributed computing networks |
US7620624B2 (en) * | 2003-10-17 | 2009-11-17 | Yahoo! Inc. | Systems and methods for indexing content for fast and scalable retrieval |
US20050108368A1 (en) * | 2003-10-30 | 2005-05-19 | Aditya Mohan | Method and apparatus for representing data available in a peer-to-peer network using bloom-filters |
US7844731B1 (en) * | 2003-11-14 | 2010-11-30 | Symantec Corporation | Systems and methods for address spacing in a firewall cluster |
US7313565B2 (en) * | 2004-02-19 | 2007-12-25 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and associated methods |
US7730207B2 (en) * | 2004-03-31 | 2010-06-01 | Microsoft Corporation | Routing in peer-to-peer networks |
US7418454B2 (en) * | 2004-04-16 | 2008-08-26 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and application level multicasting |
JP4561283B2 (ja) * | 2004-09-30 | 2010-10-13 | ブラザー工業株式会社 | ノード装置、共用情報更新方法、共用情報保存方法、共用情報更新処理プログラム、及び共用情報保存処理プログラム |
WO2006053580A1 (en) * | 2004-11-16 | 2006-05-26 | Ntt Docomo, Inc. | Method, apparatus and program products for management of information about shared files in a mobile network |
US7639681B2 (en) * | 2004-11-23 | 2009-12-29 | Microsoft Corporation | System and method for a distributed server for peer-to-peer networks |
US7774308B2 (en) * | 2004-12-15 | 2010-08-10 | Applied Minds, Inc. | Anti-item for deletion of content in a distributed datastore |
US8996486B2 (en) * | 2004-12-15 | 2015-03-31 | Applied Invention, Llc | Data store with lock-free stateless paging capability |
US11321408B2 (en) | 2004-12-15 | 2022-05-03 | Applied Invention, Llc | Data store with lock-free stateless paging capacity |
US8275804B2 (en) * | 2004-12-15 | 2012-09-25 | Applied Minds, Llc | Distributed data store with a designated master to ensure consistency |
US20060209819A1 (en) * | 2005-03-21 | 2006-09-21 | Jennings Raymond B Iii | Method and apparatus for efficiently expanding a P2P network |
US7895270B2 (en) * | 2005-04-21 | 2011-02-22 | Microsoft Corporation | Transport abstraction for multiparty replication |
US7539661B2 (en) * | 2005-06-02 | 2009-05-26 | Delphi Technologies, Inc. | Table look-up method with adaptive hashing |
DE502005001390D1 (de) | 2005-07-14 | 2007-10-11 | Konrad Zuse Zentrum Fuer Infor | Vorrichtung und Verfahren zum Abrufen/Speichern von elektronischen Daten in einem System mit mehreren Datenverarbeitungseinheiten |
JP2007148545A (ja) * | 2005-11-24 | 2007-06-14 | Brother Ind Ltd | 情報配信システム、情報配信方法、ノード装置、及びノード処理プログラム |
US7904759B2 (en) * | 2006-01-11 | 2011-03-08 | Amazon Technologies, Inc. | System and method for service availability management |
DE102006011291A1 (de) * | 2006-03-10 | 2007-09-27 | Siemens Ag | Verfahren zum Betrieb eines dezentralen Datennetzes |
US8601112B1 (en) * | 2006-03-14 | 2013-12-03 | Amazon Technologies, Inc. | Method and system for collecting and analyzing time-series data |
US7979439B1 (en) * | 2006-03-14 | 2011-07-12 | Amazon Technologies, Inc. | Method and system for collecting and analyzing time-series data |
US9037698B1 (en) | 2006-03-14 | 2015-05-19 | Amazon Technologies, Inc. | Method and system for collecting and analyzing time-series data |
JP4864508B2 (ja) * | 2006-03-31 | 2012-02-01 | 富士通株式会社 | 情報検索プログラム、情報検索方法および情報検索装置 |
JP4862463B2 (ja) * | 2006-04-11 | 2012-01-25 | ブラザー工業株式会社 | 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等 |
JP2007280303A (ja) * | 2006-04-11 | 2007-10-25 | Brother Ind Ltd | 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等 |
JP4655986B2 (ja) * | 2006-04-12 | 2011-03-23 | ブラザー工業株式会社 | ノード装置、記憶制御プログラム及び情報記憶方法 |
EP1868114B1 (de) * | 2006-06-12 | 2015-11-18 | Konrad-Zuse-Zentrum für Informationstechnik Berlin | Vorrichtung und Verfahren zum Speichern und Abrufen von Objekten mit mehrdimensional adressierten, elektronischen Daten |
US9325786B2 (en) | 2006-07-27 | 2016-04-26 | The Hong Kong University Of Science And Technology | Peer-to-peer interactive media-on-demand |
EP2055080A4 (en) * | 2006-08-21 | 2011-11-30 | Ericsson Telefon Ab L M | DISTRIBUTED SERVER NETWORK FOR PROVIDING TRIPLE AND PLAY SERVICES FOR END USER |
JP2008059398A (ja) * | 2006-08-31 | 2008-03-13 | Brother Ind Ltd | 識別情報割当装置及びその情報処理方法並びにそのプログラム |
US7613707B1 (en) * | 2006-12-22 | 2009-11-03 | Amazon Technologies, Inc. | Traffic migration in a multilayered data service framework |
US7774329B1 (en) | 2006-12-22 | 2010-08-10 | Amazon Technologies, Inc. | Cross-region data access in partitioned framework |
US8150870B1 (en) | 2006-12-22 | 2012-04-03 | Amazon Technologies, Inc. | Scalable partitioning in a multilayered data service framework |
CN101005606B (zh) * | 2006-12-31 | 2012-07-04 | 华为技术有限公司 | 一种减少媒体播放延时的方法和装置 |
JP4877107B2 (ja) * | 2007-07-06 | 2012-02-15 | ブラザー工業株式会社 | 情報配信システムにおける端末装置及び情報処理プログラム、並びに端末装置の情報処理方法 |
EP2270724A3 (en) * | 2007-10-22 | 2013-01-16 | Open Text S.A. | Method and system for managing enterprise content |
US7440952B1 (en) * | 2007-12-18 | 2008-10-21 | International Business Machines Corporation | Systems, methods, and computer products for information sharing using personalized index caching |
JP5151511B2 (ja) * | 2008-01-30 | 2013-02-27 | ソニー株式会社 | 検索サービス提供システム及び検索サービス提供方法 |
US8114117B2 (en) * | 2008-09-30 | 2012-02-14 | Tyco Healthcare Group Lp | Compression device with wear area |
US20090276440A1 (en) * | 2008-04-29 | 2009-11-05 | Grasstell Networks Llc | Embodiments of practical distributed computing |
US7872990B2 (en) | 2008-04-30 | 2011-01-18 | Microsoft Corporation | Multi-level interconnection network |
US7995504B2 (en) * | 2008-05-12 | 2011-08-09 | Microsoft Corporation | Locality-based routing table generation |
US8335776B2 (en) | 2008-07-02 | 2012-12-18 | Commvault Systems, Inc. | Distributed indexing system for data storage |
KR100962653B1 (ko) * | 2008-07-24 | 2010-06-11 | 이화여자대학교 산학협력단 | 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치 |
US8798057B1 (en) | 2008-09-30 | 2014-08-05 | Juniper Networks, Inc. | Methods and apparatus to implement except condition during data packet classification |
US7835357B2 (en) * | 2008-09-30 | 2010-11-16 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on policy vectors |
US7738454B1 (en) * | 2008-09-30 | 2010-06-15 | Juniper Networks, Inc. | Methods and apparatus related to packet classification based on range values |
US8675648B1 (en) | 2008-09-30 | 2014-03-18 | Juniper Networks, Inc. | Methods and apparatus for compression in packet classification |
US8804950B1 (en) | 2008-09-30 | 2014-08-12 | Juniper Networks, Inc. | Methods and apparatus for producing a hash value based on a hash function |
US7796541B1 (en) | 2008-09-30 | 2010-09-14 | Juniper Networks, Inc. | Methods and apparatus for range matching during packet classification based on a linked-node structure |
US7961734B2 (en) | 2008-09-30 | 2011-06-14 | Juniper Networks, Inc. | Methods and apparatus related to packet classification associated with a multi-stage switch |
SE533007C2 (sv) | 2008-10-24 | 2010-06-08 | Ilt Productions Ab | Distribuerad datalagring |
US8516080B2 (en) | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
US7889741B1 (en) | 2008-12-31 | 2011-02-15 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
US8111697B1 (en) | 2008-12-31 | 2012-02-07 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
US8488588B1 (en) | 2008-12-31 | 2013-07-16 | Juniper Networks, Inc. | Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric |
US8032551B2 (en) * | 2009-05-11 | 2011-10-04 | Red Hat, Inc. | Searching documents for successive hashed keywords |
US20100312749A1 (en) * | 2009-06-04 | 2010-12-09 | Microsoft Corporation | Scalable lookup service for distributed database |
US8739125B2 (en) * | 2009-06-16 | 2014-05-27 | Red Hat, Inc. | Automated and unattended process for testing software applications |
US8996568B2 (en) * | 2009-07-14 | 2015-03-31 | Qualcomm Incorporated | Methods and apparatus for efficiently processing multiple keyword queries on a distributed network |
JP4947106B2 (ja) * | 2009-07-27 | 2012-06-06 | ブラザー工業株式会社 | 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置、情報処理プログラムおよびノード装置のプログラム |
CN101645856A (zh) * | 2009-08-19 | 2010-02-10 | 深圳华为通信技术有限公司 | 联系人信息处理方法及移动终端 |
BR112012010503B1 (pt) * | 2009-11-03 | 2021-11-16 | Telecom Italia S.P.A. | Método para permitir compartilhamento de arquivos de conteúdo entre nós de uma rede não hierárquica, e, rede não hierárquica |
US8805932B2 (en) * | 2009-11-03 | 2014-08-12 | Telecom Italia S.P.A. | Sharing of digital contents in P2P networks exploiting localization data |
CN102104526A (zh) * | 2009-12-16 | 2011-06-22 | 华为技术有限公司 | 一种内容发布与获取的方法、装置和系统 |
US8589475B2 (en) * | 2010-01-28 | 2013-11-19 | Hewlett-Packard Development Company, L.P. | Modeling a cloud computing system |
EP2712149B1 (en) | 2010-04-23 | 2019-10-30 | Compuverde AB | Distributed data storage |
CN101854391B (zh) * | 2010-05-25 | 2013-01-02 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析系统的实现方法 |
US9282060B2 (en) | 2010-12-15 | 2016-03-08 | Juniper Networks, Inc. | Methods and apparatus for dynamic resource management within a distributed control plane of a switch |
US8606771B2 (en) | 2010-12-21 | 2013-12-10 | Microsoft Corporation | Efficient indexing of error tolerant set containment |
US9626378B2 (en) | 2011-09-02 | 2017-04-18 | Compuverde Ab | Method for handling requests in a storage system and a storage node for a storage system |
US8997124B2 (en) | 2011-09-02 | 2015-03-31 | Compuverde Ab | Method for updating data in a distributed data storage system |
US8645978B2 (en) | 2011-09-02 | 2014-02-04 | Compuverde Ab | Method for data maintenance |
US9021053B2 (en) | 2011-09-02 | 2015-04-28 | Compuverde Ab | Method and device for writing data to a data storage system comprising a plurality of data storage nodes |
US8769138B2 (en) | 2011-09-02 | 2014-07-01 | Compuverde Ab | Method for data retrieval from a distributed data storage system |
CN103309860A (zh) * | 2012-03-06 | 2013-09-18 | 毛新华 | 多个目标的查找方法及相关装置 |
RU2513721C1 (ru) * | 2012-11-29 | 2014-04-20 | Федеральное государственное бюджетное учреждение науки Институт системного анализа Российской академии наук | Технологическая платформа интеграции ресурсов сети интернет для проведения федеральных выборов и референдумов |
US9226231B2 (en) * | 2013-01-30 | 2015-12-29 | Qualcomm Incorporated | Systems and methods for monitoring the size of a wireless network |
US10944713B1 (en) * | 2018-05-24 | 2021-03-09 | Wickr Inc. | Secure directory services |
CN103942262A (zh) * | 2014-03-26 | 2014-07-23 | 浪潮电子信息产业股份有限公司 | 一种视频存储系统中元数据的优化分配方法 |
US9606870B1 (en) | 2014-03-31 | 2017-03-28 | EMC IP Holding Company LLC | Data reduction techniques in a flash-based key/value cluster storage |
US9396243B1 (en) * | 2014-06-27 | 2016-07-19 | Emc Corporation | Hash-based replication using short hash handle and identity bit |
US10025843B1 (en) | 2014-09-24 | 2018-07-17 | EMC IP Holding Company LLC | Adjusting consistency groups during asynchronous replication |
DE102014019534A1 (de) * | 2014-12-24 | 2016-06-30 | Christopher Bentley | Vorrichtung zur verwendung in einem dynamischen netzwerk und dynamisches netzwerk |
US10810168B2 (en) * | 2015-11-24 | 2020-10-20 | Red Hat, Inc. | Allocating file system metadata to storage nodes of distributed file system |
US10740309B2 (en) * | 2015-12-18 | 2020-08-11 | Cisco Technology, Inc. | Fast circular database |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10310951B1 (en) | 2016-03-22 | 2019-06-04 | EMC IP Holding Company LLC | Storage system asynchronous data replication cycle trigger with empty cycle detection |
US10324635B1 (en) | 2016-03-22 | 2019-06-18 | EMC IP Holding Company LLC | Adaptive compression for data replication in a storage system |
US10095428B1 (en) | 2016-03-30 | 2018-10-09 | EMC IP Holding Company LLC | Live migration of a tree of replicas in a storage system |
US9959063B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Parallel migration of multiple consistency groups in a storage system |
US10565058B1 (en) | 2016-03-30 | 2020-02-18 | EMC IP Holding Company LLC | Adaptive hash-based data replication in a storage system |
US9959073B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Detection of host connectivity for data migration in a storage system |
US10862755B2 (en) * | 2017-06-30 | 2020-12-08 | Oracle International Corporation | High-performance data repartitioning for cloud-scale clusters |
US11238357B2 (en) * | 2017-07-21 | 2022-02-01 | Google Llc | Generating computationally-efficient representations of large datasets |
CN107704202B (zh) * | 2017-09-18 | 2021-09-07 | 北京京东尚科信息技术有限公司 | 一种数据快速读写的方法和装置 |
US10426424B2 (en) | 2017-11-21 | 2019-10-01 | General Electric Company | System and method for generating and performing imaging protocol simulations |
US11593496B2 (en) * | 2018-04-23 | 2023-02-28 | EMC IP Holding Company LLC | Decentralized data protection system for multi-cloud computing environment |
US10824740B2 (en) * | 2018-07-30 | 2020-11-03 | EMC IP Holding Company LLC | Decentralized policy publish and query system for multi-cloud computing environment |
CN109688459B (zh) * | 2018-12-13 | 2020-12-22 | 福建天晴数码有限公司 | 一种视频文件清理方法及终端 |
WO2020205175A1 (en) * | 2019-04-05 | 2020-10-08 | Tls Corp. | Distributed audio mixing |
US11531704B2 (en) | 2019-09-12 | 2022-12-20 | Oracle International Corporation | Autonomously partitioning database tables |
CN111109657B (zh) * | 2020-02-06 | 2020-12-08 | 广芯微电子(广州)股份有限公司 | 一种电子烟及其加解密认证方法 |
CN111581534B (zh) * | 2020-05-22 | 2022-12-13 | 哈尔滨工程大学 | 一种基于立场一致的谣言传播树结构优化方法 |
RU2753169C1 (ru) * | 2020-12-23 | 2021-08-12 | федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский политехнический университет Петра Великого" (ФГАОУ ВО "СПбПУ") | Способ саморегуляции сетевой инфраструктуры промышленных объектов при воздействии угроз безопасности |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276871A (en) * | 1991-03-18 | 1994-01-04 | Bull Hn Information Systems Inc. | Method of file shadowing among peer systems |
DE4497149T1 (de) * | 1993-09-24 | 1996-10-17 | Oracle Corp | Verfahren und Vorrichtung zum Replizieren von Daten |
US5987506A (en) * | 1996-11-22 | 1999-11-16 | Mangosoft Corporation | Remote access and geographically distributed computers in a globally addressable storage environment |
GB9720152D0 (en) * | 1996-12-18 | 1997-11-26 | Mayup Limited | Communications system and method |
JPH10240757A (ja) * | 1997-02-27 | 1998-09-11 | Hitachi Ltd | 協調分散検索システム |
US7756892B2 (en) * | 2000-05-02 | 2010-07-13 | Digimarc Corporation | Using embedded data with file sharing |
US7233978B2 (en) * | 1998-07-08 | 2007-06-19 | Econnectix, Llc | Method and apparatus for managing location information in a network separate from the data to which the location information pertains |
WO2000079734A1 (en) * | 1999-06-18 | 2000-12-28 | The Trustees Of Columbia University In The City Of New York | System and method for receiving over a network a broadcast from a broadcast source |
US6680942B2 (en) * | 1999-07-02 | 2004-01-20 | Cisco Technology, Inc. | Directory services caching for network peer to peer service locator |
US6636242B2 (en) * | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6880064B1 (en) * | 2000-06-21 | 2005-04-12 | Mosaid Technologies, Inc. | Method and apparatus for physical width expansion of a longest prefix match lookup table |
US6754776B2 (en) * | 2001-05-17 | 2004-06-22 | Fujitsu Limited | Method and system for logical partitioning of cache memory structures in a partitoned computer system |
US6671694B2 (en) * | 2001-06-04 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | System for and method of cache-efficient digital tree with rich pointers |
US7827257B2 (en) * | 2001-06-19 | 2010-11-02 | Intel Corporation | System and method for automatic and adaptive use of active network performance measurement techniques to find the fastest source |
US6782464B2 (en) * | 2001-07-17 | 2004-08-24 | International Business Machines Corporation | Mapping a logical address to a plurality on non-logical addresses |
US6725296B2 (en) * | 2001-07-26 | 2004-04-20 | International Business Machines Corporation | Apparatus and method for managing work and completion queues using head and tail pointers |
DE10143754A1 (de) * | 2001-09-06 | 2003-04-03 | Siemens Ag | Skalierbares Peer-to-Peer-Netzwerk mit einem Verzeichnisdienst |
US7054867B2 (en) | 2001-09-18 | 2006-05-30 | Skyris Networks, Inc. | Systems, methods and programming for routing and indexing globally addressable objects and associated business models |
US20030182428A1 (en) * | 2002-03-19 | 2003-09-25 | Jiang Li | Peer-to-peer (P2P) communication system |
US7571251B2 (en) * | 2002-05-06 | 2009-08-04 | Sandvine Incorporated Ulc | Path optimizer for peer to peer networks |
-
2002
- 2002-09-18 US US10/246,793 patent/US7054867B2/en not_active Expired - Fee Related
-
2003
- 2003-09-18 EP EP09001918A patent/EP2053527A2/en not_active Withdrawn
- 2003-09-18 JP JP2004538472A patent/JP2006500831A/ja not_active Withdrawn
- 2003-09-18 CN CNA03825218XA patent/CN1703697A/zh active Pending
- 2003-09-18 WO PCT/US2003/030122 patent/WO2004027581A2/en active Application Filing
- 2003-09-18 AU AU2003275226A patent/AU2003275226A1/en not_active Abandoned
- 2003-09-18 EP EP03759498A patent/EP1546931A4/en not_active Withdrawn
- 2003-09-18 RU RU2005111591/09A patent/RU2321885C2/ru not_active IP Right Cessation
-
2006
- 2006-05-26 US US11/441,862 patent/US20060218167A1/en not_active Abandoned
-
2008
- 2008-04-16 US US12/104,289 patent/US8600951B2/en not_active Expired - Fee Related
-
2010
- 2010-10-21 AU AU2010235939A patent/AU2010235939B2/en not_active Expired
-
2011
- 2011-02-07 JP JP2011024048A patent/JP5538258B2/ja not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101197741B (zh) * | 2006-12-07 | 2010-05-19 | 华为技术有限公司 | 个人域网络内节点间的关联方法及获取关联方式的方法及装置 |
CN101344882B (zh) * | 2007-07-10 | 2010-06-02 | 中国移动通信集团公司 | 数据查询方法、插入方法及删除方法 |
CN102339303A (zh) * | 2010-07-20 | 2012-02-01 | 西门子公司 | 分布式系统 |
CN102339303B (zh) * | 2010-07-20 | 2014-01-22 | 西门子公司 | 分布式系统 |
US8892567B2 (en) | 2010-07-20 | 2014-11-18 | Siemens Aktiengesellschaft | Distributed system |
CN109474970A (zh) * | 2018-12-07 | 2019-03-15 | 天津津航计算技术研究所 | 一种适用于无线通信网络的路由方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090100069A1 (en) | 2009-04-16 |
JP2006500831A (ja) | 2006-01-05 |
EP1546931A4 (en) | 2008-07-16 |
US8600951B2 (en) | 2013-12-03 |
US20030126122A1 (en) | 2003-07-03 |
EP2053527A2 (en) | 2009-04-29 |
US20060218167A1 (en) | 2006-09-28 |
JP5538258B2 (ja) | 2014-07-02 |
WO2004027581A3 (en) | 2004-04-22 |
AU2010235939B2 (en) | 2012-06-21 |
JP2011150702A (ja) | 2011-08-04 |
RU2321885C2 (ru) | 2008-04-10 |
RU2005111591A (ru) | 2006-01-27 |
AU2003275226A1 (en) | 2004-04-08 |
US7054867B2 (en) | 2006-05-30 |
EP1546931A2 (en) | 2005-06-29 |
WO2004027581A2 (en) | 2004-04-01 |
AU2010235939A1 (en) | 2010-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1703697A (zh) | 用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序 | |
US11354315B2 (en) | Method and apparatus for stress management in a searchable data service | |
CN1197027C (zh) | 计算机网络的分布式宿主构架,网页供应和内容传送方法 | |
CN1443323A (zh) | 控制集群计算环境的系统通信量的方法、系统和程序产品 | |
CN1705944A (zh) | 使用对等网络执行自适应搜索的系统和方法 | |
CN1444746A (zh) | 反向内容采集器 | |
CN101039330A (zh) | 在移动应用程序环境中使用的产品 | |
CN1444745A (zh) | 内容交换机装置 | |
CN1755694A (zh) | 将资源组织成集合以促进更有效和可靠的资源访问 | |
JP2008535073A (ja) | コンピュータネットワーク | |
CN102917012A (zh) | 存储与通信去重复 | |
CN1650255A (zh) | 移动应用环境 | |
CN113626863A (zh) | 数据处理方法及装置 | |
CN114503101A (zh) | 区块链数据搜索方法 | |
JP2004157826A (ja) | ピアツーピア型文書共有ネットワークシステム | |
US10803465B2 (en) | Enabling hierarchical structure representation of entities | |
CN1444747A (zh) | 内容管理器 | |
WO2002061586A2 (en) | Smart-caching system and method | |
Podnar et al. | Beyond term indexing: A P2P framework for web information retrieval | |
Elwaer et al. | Optimizing data distribution in volunteer computing systems using resources of participants | |
Xu et al. | A novel multilevel index model for distributed service repositories | |
KR20220078180A (ko) | 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법 | |
Yang et al. | DSI: distributed service integration for service grid | |
US12001552B1 (en) | Application trust framework | |
Antoine et al. | Multiple order-preserving hash functions for load balancing in P2P networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1083912 Country of ref document: HK |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20051130 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1083912 Country of ref document: HK |