利用发布和订阅机制的消息传输系统的制作方法

文档序号:7583654阅读:135来源:国知局
专利名称:利用发布和订阅机制的消息传输系统的制作方法
技术领域
本发明涉及消息传输,尤其涉及利用发布和订阅机制的消息传输系统。
背景技术
在计算机系统或计算机网络中,许多不同的服务能够生成可以被其他服务消费的信息。例如,新用户向导能够创建可以被电子邮件服务、认证服务,和其他服务消费的新用户简档。各种服务的每一个可以消费新用户向导的输出。

发明内容
消息传输系统可以使用发布订阅机制来连接节点并通过节点传输消息。每个节点可以建立到其他节点的连接,且订阅请求和发布通知可以跨节点传递来建立消息的路径。 当消息被发布时,消息可以通过那些连接被传递,对于那些连接而言订阅是活动的。当消息在节点之间传递时,将路径标识符添加到该消息,且该路径标识符可以被订阅节点用于标识所接收到的信息。当订阅通知被移除时,可以跨多个节点解构路径。可以安排节点,使得每个节点相对于任何通过与其相连的节点的连接是不可知的,且可以允许任何节点订阅在网络中发布的任何信息。提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。


在附图中图1是示出了可以在其中运行基于节点的网络的设备的实施例的图示。图2是基于节点的网络的实施例的示例的图示。图3是用于将新节点连接到网络中的方法的实施例的流程图示意。图4是用于订阅的方法的实施例的时间线图示。图5是用于发布的方法的实施例的流程图示意。图6是用于发布持久项的方法的实施例的流程图示意。
具体实施例方式可以构建节点的网络来连接发布节点和订阅节点。节点可以向其他节点发送它们的发布通知和订阅请求,其他节点可以跨其他节点转发这些通知和请求,直到找到匹配。匹配可以建立用于将所发布的信息发送到订阅节点的分发路径。网络可以允许消费信息的各种服务连接到提供信息的服务,无需任何服务知晓另一方的地址或位置。这样的网络可以允许提供或消费信息以便被容易地添加到系统。在发布者和订阅者之间的连接建立之后,可以从节点到节点传递通信,每个节点向该通信添加传入连接标识符、传出连接标识符,以及节点标识符。当订阅者接收到通信, 连接的标识可以是节点序列和相应的连接标识符。每个节点可以监视经由该节点建立的订阅路径的状态。如果订阅路径不再活动, 该节点可以通知订阅了该订阅路径的那些节点该路径不再活动。已发布项可以采取持久发布或单次发布的形式。持久通知可以随时间持续并可以由新添加的节点获得。持久通知可以持续到发布者是可以到达的并维持该通知。单次通知可以是短时间的并仅对那些在发布通知时连接着的订阅设备可用。订阅请求和已发布项可具有相关联的类别。类别可以允许请求和发布匹配。在一个示例中,订阅请求可以指示类别分类中的一个或多个类别,且订阅请求可以被匹配到产生所指示的类别中的任何信息的发布源。本说明书通篇中,在所有附图的描述中,相同的附图标记表示相同的元素。在将元素称为“连接”或“耦合”的时候,这些元素可以直接连接或耦合在一起,或者也可以存在一个或多个中间元素。相反,在将元素称为“直接连接”或“直接耦合”的时候,不存在中间元素。本发明可被具体化为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以以硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用其上包含(嵌入)有供指令执行系统使用或结合其使用的计算机可使用或计算机可读程序代码的计算机可使用或计算机可读存储介质上的计算机程序产品的形式。在本文的上下文中,计算机可使用或计算机可读介质可以是可包含、存储、传递、传播、或传输程序以供指令执行系统、装置或设备使用或结合其使用的任何介质。计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、电磁、红外、 或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或其他合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其他合适的方式处理,并随后存储在计算机存储器中。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号” 可以被定义为其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、 红外线及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。当本发明在计算机可执行指令的一般上下文中具体化时,该实施例可以包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任
5务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可以在各个实施例中按需进行组合或分布。图1是显示具有用于连接各种服务的内部网络的系统的实施例100的图示。实施例100是基于节点的网络的简化示例,该基于节点的网络可以允许系统内的各种服务使用发布/订阅方法相互通信。图1的示图示出系统的功能组件。在某些情况下,组件可以是硬件组件、软件组件、或硬件和软件的组合。某些组件可以是应用层软件,而其他组件可以是操作系统层组件。在某些情况下,一个组件到另一个组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可以通过跨长距离的网络连接来进行。各实施例可以使用不同的硬件、软件、以及互连体系结构来实现所描述的功能。实施例100示出了一个系统,其中各种服务可以使用发布/订阅系统相互连接。各种服务的每一个可以生成或消费信息,且很多服务既可以执行生成也可以执行消费。系统内的信息可以被各种分类标识,且那些消费特定类型信息的服务可以和那些生成该信息的服务连接。消费信息的服务可能不知道生成该信息的服务,反之亦然。由于信息生成服务对于各种消费者是不可知的,信息消费者可以被添加或移除而不影响信息生成者。同样,信息生成者可以被添加或移除而不影响信息消费者。一使用情形可以是计算机网络的服务器计算机的操作。服务器计算机可以具有运行在硬件平台上的许多不同类型的服务,诸如认证服务,文件管理服务,电子邮件和消息服务,计算机更新服务,以及许多其他服务。在使用情形中,管理性控制台应用程序可以执行“添加用户”操作。该管理性控制台可以收集新用户的各种详情,诸如该新用户的访问特权,帐号类型,用户的个人详情,分配的用户名,电子邮件地址,和其他详情。该信息可以被服务器上的许多不同服务消费。例如,认证服务可以添加新用户并配置该用户帐号和访问特权,且消息访问可以配置邮箱和根据帐号类型应用策略。网络可以允许各种服务共享信息而无需在服务之间定义连接。消费信息的服务可以跨网络发出订阅请求。该订阅请求可以标识该服务可以消费的信息的类型。其他服务可以发布信息,且已发布项可以被跨网络发送到订阅者。对于每个发布者,可能有一个、两个,或其他更多订阅者。在一些情况中,可能不存在订阅者。可以添加或移除订阅者而不影响发布者或改变发布者的配置。跨网络发送的信息可以使用不同分类或归类方案进行分类。在一些情况中,可以使用详细模式分类信息,而在其他情况中,可以使用信息的概括描述分类信息。分类可以标识被订阅者消费的信息,并建立订阅者和发布者之间的连接。通过以树或其他形式将一个节点连接到另一个节点来安排节点。节点可以不包括 “根节点”或其他集中式节点,但是每个节点可以被连接到一个或多个节点,使得没有循环连接。由于不使用“根节点”,断开的连接可以允许网络的断裂的部分独立运行直至重建连接。当节点被连接时,订阅者节点可以生成订阅请求并将那个请求发送到相邻节点。 相邻节点的每一个可以将它们的地址添加到该请求并将该请求向上游发送到其他节点。当
6请求从节点传递到节点,连接标识符和节点标识符的轨迹可以被添加到请求,直至请求到达可以提供所请求的发布节点。连接标识符的轨迹可被用于沿着相同的轨迹将已发布项发送到订阅者。每个节点也可以监视从中已接收订阅请求的连接。当连接因故断开或停止时,节点可以识别该损坏并创建消息,将该消息沿着节点的轨迹向上游传递到发布者节点。以此方式,订阅者可以被优雅且完整地弃用。已发布项可以采用几种不同形式。快照发布可能是将要对当前可用的任何订阅者发布的之一。在很多情况下,快照发布对于对时间敏感的信息传送是有用的。另一发布形式可以是持久发布。持久发布可以在已发布项被创建时发送,但是也可以被持续或存储,用于以后当订阅者连接到网络时。持久的已发布项可以被存储并在一段时间保持可用。在一些实施例中,持久的已发布项可以被存储在从其发布该项的节点上, 而在其他实施例中,其他节点可以存储并持续已发布项。在一些情况下,持久的已发布项可以具有时戳或其他指示,用于在预定时间移除或破坏该持久的已发布项。已发布项可以包括项的更新。例如,已发布项可以是完成一个动作的进度计量。起初,已发布项可以是进度条,完成百分之零。随着动作的进展,发布者节点可以用当前完成百分比更新已发布项。更新可以被周期性地发送,并可以包括原始发布项的标识符,使得订阅者可以用原始发布项来标识已更新信息。实施例100中的设备102可以是单个计算机系统,其上运行几个服务。在许多实施例中,设备102可以是服务器计算机、个人计算机或其他类似设备。在一些情况下,设备 102可以是便携式设备,例如膝上计算机、上网本、智能本、蜂窝电话,或其他设备。设备102 可以是网络设备、游戏控制台、网络路由设备、测量工具,或任何其他计算设备。设备102可以具有各种硬件组件104和软件组件106。设备102的示例可以是常规的通用计算设备,但是其他实施例可以具有执行为软件组件106描述的一些或全部功能的专用硬件或固件组件。其他实施例也可以用软件实现硬件组件的一个或多个。硬件组件104可以包括处理器108、随机存取存储器110、以及非易失性存储112。 一些系统可以具有几个处理器和不同类型的随机存取存储器或非易失性存储。在一些实施例中,非易失性存储器组件可以被用于随机存取存储器和非易失性存储。硬件组件104还可以包括网络接口 114和用户接口 116。网络接口可以是往另一设备的任何类型的连接,包括硬连线网络接口和近程、中程,和远程的无线网络接口。用户接口组件可以是任何类型的用于和用户通信的输入和输出设备。在一些实施例中,设备可以具有软件用户接口,该软件用户接口可以使用web浏览器或其他远程访问技术进行访问。软件组件106可以包括操作系统118。操作系统118可以提供硬件组件和各种软件组件之间的抽象层,以及软件组件可能使用的不同功能。网络可以被节点 120、122、124、126,和 128 连同服务 130、132、134、136 和 138 创
建。节点120至1 可以被认为是“传输节点”,所述传输节点不发布或订阅而仅仅传输或连接其他节点。服务130至138可以作为发布或者订阅的节点。在许多情况下,服务可以既作为发布者节点又作为订阅节点,在一些情况下,也作为传输节点。当形成网络时,每个节点可以和节点连接管理器140通信来接收该节点可以连接的另一个节点的地址。节点连接管理器140可以位于预定地址且可以跟踪网络中现存的节点。当未附加的节点要附加到网络时,该未附加节点可以向节点连接管理器140发送请求, 并可以接收该未附加节点可以连接的节点的地址。本说明书和权利要求书中使用术语“服务”来标识可以通过基于节点的网络发送或接收信息的任何类型的进程、线程、应用程序、服务,或软件实体。术语“服务”用作任何类型的软件实体的通用术语。在说明书中以下所示出的几个实施例显示了网络的详细操作可以如何运作的示例。在实施例200中示出了用于一示例实施例的小网络和命名约定的详细示例。在实施例 300中示出了用于将新节点连接到网络的方法。实施例400示出了订阅方法的示例,实施例 500和600示出了两个发布方法。图2是实施例200的框图,示出了具有不同节点和连接的示例网络。实施例200 是可以示出跨网络执行的不同操作的命名约定的网络的简化示例。实施例200示出了具有五个节点204、206、208、210和212的网络。节点204通过连接214连接到节点206。节点206通过连接216连接到节点208并通过连接218连接到节点210。节点210通过连接220连接到节点212。每一次消息传递通过一节点,该节点可以在该消息被传递时向其添加各种标识。 在一些实施例中,节点可以通过向消息的标识链附加节点标识来向消息添加节点标识。订阅节点可以将标识链用作已发布项的源的标签。例如,假设节点212是发布节点,而节点204是订阅节点。从节点212传送到节点 210的消息可以具有节点标识符‘ ”。节点210可以将该消息传送到节点206并可以向标识链附加标识符“D”。类似地,节点206可以接收消息,向标识链附加“B”,并将该消息传送到节点204。由节点204接收到的消息可以具有可能是‘ /D/B”的标识链。作为示例的目的,标识链的记号可以被指定为由正斜杠隔开的标识符序列。其他实施例可以使用不同的句法,不同的指示符,以及不同的机制来存储标识符链。此处示出的示例仅仅是用于示出标识链的简化的示例。在这样的实施例中,每个节点的标识符可以由节点连接管理器分配,使得每个节点不使用重复的名称。在另一实施例中,每个节点可以用特定标识来标识到节点的每个连接。例如,节点 206可以将连接214标识为“f2”,节点204可以将同一连接标识为“H”。连接标识符可以被用于创建标识符链。例如,从节点212传递到节点204的消息可以具有如“D:f8/B:f5/A:fl”的标识符链,其中冒号前的标识符是节点标识符,冒号后的标识符是传入连接标识符。在另一示例中,同一消息可以具有如“E:f9: :D:f8/D:f6: :B:f5/B:f2: :Α:Π”的标识符链。在这样的示例中,每个节点的传出连接和传入连接标识符可以被包括在标识符链中。在又一个示例中,同一消息可以具有仅包含接收连接标识符的标识符链。这样的示例可以将从节点212到节点204的消息指定为“f8:f5:fl”。这样的示例可以包括全部的传入连接指示符并可完全地定义返回路径。在这样的实施例中,每个连接可以使用或可以不使用相同指示符作为连接的另一节点。当每个节点接收消息,节点可以向消息添加一些形式的标识并传递该消息。通过添加标识,节点可以创建新消息。在一些实施例中,新消息可以是仅元数据改变的原始消肩、ο标识链可以被用于创建在订阅节点和发布节点之间的连接。当沿着网络传递订阅请求时,标识链可以被用作发布者节点的地址或路由标识符来发送已发布项。当接收到已发布项时,订阅节点可以使用标识链来标识已发布项的源。在一些实施例中,每个节点可以创建其自己的用于连接和节点标识的指示符。在这样的实施例中,两个或更多的节点可以使用相同节点标识符并且也可以使用相同连接标识符。在其他实施例中,例如实施例200,节点可以被标识,使得没有两个连接共享相同标识符。图3是用于将新节点连接到网络的方法的实施例300的流程图示意。实施例300 是当添加新传输节点、订阅者节点,或发布者节点时执行的方法的示例。其他实施例可以使用不同的序列、更多或更少的步骤、以及不同的命名或术语,来完成相似功能。在一些实施例中,各种操作或操作集合可以或是以同步方式或是以异步方式与其他操作并行执行。此处所选的步骤是为了以简化的形式示出一些操作原理来选择的。在块302使得节点在线。在诸如实施例100的整个网络位于单个设备的范围内的实施例中,节点可以是能够与另一个服务通信的服务。节点标识可以在块304生成。在块306,将请求发送到节点连接管理器用于到另一个节点的连接。在一些实施例中,节点连接管理器可以返回查询,对节点有一指定的标识符。在这样的实施例中,节点可以在块306执行查询并可以从节点连接管理器接收节点标识符。在其他实施例中,诸如实施例300,节点本身可以创建标识符。用于标识节点和节点之间的连接的标识符可以是任何类型的标识符。在一些情况中,标识符可以是简单的整数数字或字母数字指示符。在其他情况下,标识符可以是复杂的指示符系列。在一些实施例中,节点标识符和连接标识符可以是全球唯一标识符(GUID)、全局唯一标识符(UUID)、本地唯一标识符(LUID),或其他唯一标识符。在块306中请求节点连接之后,可以在块308接收邻近节点。邻近节点可以是网络中的任何节点。在许多实施例中,可以创建网络使得网络中没有循环路径。创建这样的网络的一个机制可以是向所添加的上一个节点添加下一个节点。这样的机制可以创建长的, 线性形状的网络。另一个机制可以是向网络中的任何现存的节点添加新节点。如果选择了随机节点,且新节点仅被连接到一个其他“上游”节点,该网络可以形成具有许多树枝和叶节点的树形网络。在一些情况下,节点连接管理器可以使用智能来将特定节点编组在一起。例如,特定服务或服务类型的节点可以被相互邻近地连接,从而使发布者和订阅者之间的冗长传送最小化。这样的智能的形式可以是以规则、政策、算法,或其它用于确定新节点可以连接的节点的机制。这样的实施例在较大网络中可以是有用的。在块308接收的每个节点可以在块310中处理。在很多实施例中,在块308可以给予节点单个节点来连接,但是一些情况下,可以由节点连接管理器指定两个或多个节点。
对于块310中的每个节点,可以在块312中形成到节点的连接,可以在块314中创建连接的标识符。可以在块316中存储连接标识符。在块310中将连接添加到指定的节点之后,在块318开始正常的节点操作。当节点开始正常操作时,在块320中当前节点连接的节点可以发送在网络上可用的任何现存的订阅请求。如果当前节点提供与任一订阅请求匹配的已发布项,则当已发布项变得可用时,当前节点可以存储订阅请求。图4是实施例400的时间线的示意。示出了在网络的节点之间订阅的次序。实施例400是可由订阅者节点402,及传输节点404,和另一节点406执行以沿着网络传送订阅信息的方法的示例。其他实施例可以使用不同的序列、更多或更少的步骤、以及不同的命名或术语,来完成相似功能。在一些实施例中,各种操作或操作集合可以或是以同步方式或是以异步方式与其他操作并行执行。此处所选的步骤是为了以简化的形式示出一些操作原理来选择的。实施例400是用于在网络中创建订阅并管理该订阅的方法的简化的示例。实施例 400向上游传送订阅信息直至订阅信息到达发布者节点。实施例400是订阅信息可被向上游传递到其他节点且订阅信息可被在每个节点高速缓存或存储的示例。如果到订阅的连接丢失,订阅可被删除,且该删除可由被向上游传递,使得订阅可从网络中的全部节点中被移除。示出了订阅者节点402、传输节点404,和其他节点406的动作。在许多实施例中, 每个节点可运行为订阅者、传输,或发布者节点。传输节点可将两个或多个节点连接在一起。在一些情况下,传输节点也可运行为订阅者节点以及发布者节点。在一些情况中,订阅者节点或发布者节点可以是网络中的叶节点或终端节点。一些订阅者节点可以只运行为订阅者节点,而运行发布者节点类似地可以只运行为发布者节点。在一些情况下,订阅者节点可以运行为订阅者和发布者。在块408,订阅者节点402可以生成订阅请求。订阅请求可以包括订阅者节点可以消费的信息类型的描述。该描述可以是信息类型的通用分类。在一些实施例中,可以使用分层分类来描述所请求的信息。在分层分类中,信息类型可以由具有不同信息类型之间的父/子关系的已排序分类来安排。在这样的实施例中, 订阅者可以请求父类型的信息,且产生父类型或任何子类型的任何发布者可以为订阅者创建订阅。在块410中订阅请求可以被发送到全部的已连接的节点。在订阅者节点402连接到多个节点的情况下,订阅者请求可以被发送到全部节点。订阅请求可由每个节点以和将针对传输节点404描述的类似方式处理,且订阅请求可由沿着网络中的每个节点传递。产生与订阅准则匹配的项的任何发布者节点将创建到订阅者节点402的订阅路径。网络中的每个节点可以如实施例400中的传输节点404 —样处理订阅请求。在块412,传输节点404可接收订阅请求,在块414添加连接标识,并在块416存储订阅信息。在块418,传输节点404可将已更新订阅请求发送到传输节点具有连接的全部的其他节点,在块416所存储的订阅请求可被用于跨网络跟踪任何订阅请求。如果新节点要被附加到传输节点404,传输节点404可向新节点发送全部的所存储的订阅请求的副本,使得新节点可以确定它是否具有与任一订阅请求匹配的任何已发布项。块414的操作可以创建新订阅请求,该新订阅请求包含传输节点404已在其上接收订阅请求的连接的连接标识。连接标识可以在以后的时间被用作向其发送已发布项到订阅者节点402的地址。在块420,其他节点406可接收订阅请求,在块422添加连接标识,在块4M存储订阅信息,并在块4 发送到其他节点。块420到似6的操作模仿传输节点404的块412到418的操作,并反映订阅请求可被传递过网络的每个节点的机制。在块428,传输节点404可以测试到订阅者节点402的连接。在块430,如果连接仍然可用,不进行任何动作,过程返回块428。在块430,如果订阅者节点402的连接不可用,在块432,从传输节点中移除订阅信息,在块434,删除订阅的消息被发送到全部其他节点。其他节点406可以在块436接收删除通知,在块438移除订阅信息,并在块440将删除通知发送到其他节点。现在,在实施例400示出,其他节点406也可采用类似块4 至434的方式监视传输节点404和其他节点406之间的连接。如果在传输节点404和其他节点406之间的连接被断开,其他节点406可检测该断开,并导致在连接到其他节点406的任何节点上的订阅被删除。监视连接及删除订阅请求的机制有助于在连接失败时清除订阅请求。断开可用创建具有两个部分的分散的网络。具有原始订阅请求的部分可继续具有该订阅请求并可与能够服务该订阅请求的任何发布者节点一起作用。不再连接到订阅者节点的网络部分也可用继续作用,但是因为断开的连接可能被移除因此不能完成订阅请求。图5是显示用于发布项的顺序的实施例500的时间线图示。实施例500是可由订阅者节点502、传输节点504和发布者节点506执行以沿着网络传递已发布项的方法的示例。其他实施例可以使用不同的序列、更多或更少的步骤、以及不同的命名或术语,来完成相似功能。在一些实施例中,各种操作或操作集合可以或是以同步方式或是以异步方式与其他操作并行执行。此处所选的步骤是为了以简化的形式示出一些操作原理来选择的。实施例500是可被发送到订阅者并在以后的时间被更新的已发布项的示例。这样的已发布项的简单示例可以是进度条项。已发布项可包括一活动的完成的百分比。当活动被执行,发布者可以周期地更新完成的百分比并通过网络发送更新。在一些实施例中,已更新的已发布项可以和已更新信息一起被完全地重新发送。 在其他实施例中,已更新信息可以和原始已发布项的标识符一起被发送。当仅发送已更新信息时,消息大小可以远远小于当整个已发布项被重新发送的情况。在块508,发布者节点506可以发布具有分类和项标识的项。该分类可以定义包括在已发布项中的信息的类型。分类可以被用于标识这样的订阅者,这些订阅者请求接收该种类型的项并可以被用于完成订阅请求。
项标识可以是已发布项的标识符,使得随后的涉及该项标识的更新可以被订阅者看作是对现存的已发布项的更新,而不是看作新的已发布项。在一些情况下,项标识可以是由发布者节点506为每个连续的已发布项创建的简单的序列号。在其他情况下,项标识可以是⑶ID或其他唯一标识。在框510,可标识有订阅的节点。订阅节点可以被诸如实施例400中示出的过程来标识,其中任何订阅者节点可以创建订阅请求并将那个请求跨网络的所有可用节点发送。每个发布者节点506可以维持订阅者节点列表,且该列表可以包含订阅请求的标识符链。标识符链可以被用作网络路由机制,且可以标识通过其发送已发布项到达订阅者节点的每个连接。在块514,传输节点504可以接收已发布项。在一些实施例中,传输节点504可以查找分类中是否有任何现存的订阅,并将已发布项的分类匹配到任何已保存的订阅请求,如在块516。在其他实施例中,传输节点504可以接收已发布项连同订阅请求的标识符链并可以使用该标识符链来标识订阅者节点502。在块518,传输节点504可以向已发布项添加传入连接标识符,并在块520将已发布项发送到订阅者节点502。订阅者节点502可以在块522接收该项,并在块5 消费该项。发布者节点506可以在5 更新已发布项,并在块5 使用来自块508的项标识符创建更新。在块530,发布者节点506可以发送该项。传输节点504可以在块532接收已更新项,在块534可选择地查找分类,在块536 添加传入连接标识符,并在块538发送已更新发布项。订阅者节点502可以在块540接收已发布项,并在块542消费该项。由于块MO 中的已发布项可以包含和块522中相同的项标识符,因此订阅者节点502可以处理在块540 接收的项,作为更新而非已发布项的新实例。图6是显示用于发布项的次序的实施例600的时间线示意,其中项可以是持久发布项。实施例600是可由订阅者节点602、传输节点604、和发布者节点606执行以沿着网络传递已发布项的方法的示例。其他实施例可以使用不同的序列、更多或更少的步骤、以及不同的命名或术语,来完成相似功能。在一些实施例中,各种操作或操作集合可以或是以同步方式或是以异步方式与其他操作并行执行。此处所选的步骤是为了以简化的形式示出一些操作原理来选择的。实施例600是持久发布项的示例。可以使得持久发布项对上线或在项被发布后发出对发布项的订阅请求的订阅者节点可用。可以存储持久发布项,用于在请求时取回。一些实施例可用具有单次发布机制。在单次发布机制中,已发布项可以跨网络被发送到订阅者节点,但是已发布项可以是易失性的且不被存储。在块608,项可以和分类一起被发布,且在块610项可以被变得持久。在以后的时间,订阅者节点602可以在块612生成订阅请求,并在块614发送订阅请求。块612和614的操作可以类似于实施例400的块408和410。传输节点604可以在块616接收订阅请求,在块618添加连接标识,在块620存储订阅信息,并在块622将订阅请求发送到其他节点。块616至622的操作可以类似于实施例400的块412至418的操作。在块624,发布者节点606可以接收订阅请求。在块626,如果订阅请求不匹配现存的项或任何由发布者节点606发布的潜在项,在块6 可以忽略该订阅请求。如果订阅请求在块6 匹配现存的发布项,在块630将连接标识添加到订阅请求, 并在块632存储该订阅。响应于订阅请求,持久已发布项可以在块634被发送,并在块636由传输节点604 接收。传输节点604可以在块638添加连接标识,并在块640经订阅路径发送已发布项。订阅者节点602在块642可以接收已发布项,并在块644消费该项。以上对本主题的描述是出于说明和描述的目的而提出的。它不旨在穷举本主题或将本主题限于所公开的精确形式,且鉴于以上教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,从而使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明的技术。所附权利要求书旨在包括除受现有技术所限的范围之外的其他替换实施例。
权利要求
1.一种用于在网络中操作节点的方法,所述方法在计算机处理器上执行,所述方法包括在所述第一节点和第二节点之间形成第一连接(312); 确定所述第一连接的第一连接标识(314); 在所述第一节点和第三节点之间形成第二连接(312); 确定所述第二连接的第二连接标识(314); 在所述第二连接上接收第一订阅请求G12);创建第二订阅请求G14),所述第二订阅请求包括所述第一订阅请求的至少一部分以及所述第二连接标识;通过所述第一连接发送所述第二订阅请求G18); 通过所述第一连接接收第一发布项(514);创建第二发布项(518),所述第二发布项包括所述第一发布项和所述第一连接标识;以及通过所述第二连接发送所述第二发布项(520)。
2.如权利要求1所述的方法,其特征在于,还包括 在所述第一节点和第三节点之间形成第三连接; 从所述第三节点接收第三订阅请求;创建第四订阅请求,所述第四订阅请求包括所述第三订阅请求的至少一部分以及所述第三连接标识;通过所述第一连接发送所述第三订阅请求。
3.如权利要求2所述的方法,其特征在于,还包括 通过所述第二连接发送所述第三订阅请求。
4.如权利要求2所述的方法,其特征在于,还包括 通过所述第三连接发送所述第二发布项。
5.如权利要求4所述的方法,其特征在于,所述第一发布项包括多个节点标识和连接标识。
6.如权利要求2所述的方法,其特征在于,所述第一订阅请求包括第一订阅分类。
7.如权利要求6所述的方法,其特征在于,所述发布包括第一发布分类。
8.如权利要求7所述的方法,其特征在于,还包括在所述发送所述第二发布项之前,评估所述第一发布分类和所述第一订阅分类以确定所述第一发布满足所述第一订阅请求。
9.如权利要求8所述的方法,其特征在于,还包括 从所述第三订阅请求确定第二订阅分类;评估所述第一发布分类和所述第二订阅分类以确定所述第一发布不满足所述第三订阅请求,且不通过所述第三连接发送所述第二发布项。
10.一种系统,包括 计算机处理器(108);可在所述计算机处理器上运行的多个服务(130);可在所述计算机处理器内运行的网络(120),所述网络包括多个节点,所述多个服务的每一个是所述多个节点之一,并且还是发布者节点和订阅者节点中的至少一个,所述发布者节点是所述节点中产生已发布项的一个节点,所述订阅者节点是所述节点中消费所述已发布项的一个节点,所述多个节点包括传输节点; 所述传输节点的每一个执行以下方法,包括 在所述节点和第二节点之间形成第一连接(312); 确定所述第一连接的第一连接标识(314); 在所述传输节点和第三节点之间形成第二连接(312); 确定所述第二连接的第二连接标识(314); 在所述第二连接上接收第一订阅请求G12);创建第二订阅请求G14),所述第二订阅请求包括所述第一订阅请求的至少一部分以及所述第二连接标识;通过所述第一连接发送所述第二订阅请求G18); 通过所述第一连接接收第一发布项(514);创建第二发布项(518),所述第二发布项包括所述第一发布项和所述第一连接标识;以及通过所述第二连接发送所述第二发布项(520); 所述发布者节点的每一个生成至少一个发布项;以及所述订阅者节点的每一个生成至少一个订阅请求。
11.如权利要求10所述的系统,所述传输节点的至少一个也是发布者节点。
12.如权利要求11所述的系统,所述传输节点的至少一个也是订阅者节点。
13.如权利要求12所述的系统,所述订阅者节点的至少一个也是发布者节点。
14.如权利要求10所述的系统,所述第一发布项是持久发布项。
15.如权利要求14所述的系统,其特征在于,所述方法还包括 检测所述第一连接没有连接上;生成指示所述第一发布项不再可用的消息;以及通过所述第二连接发送所述消息。
全文摘要
本发明涉及一种利用发布和订阅机制的消息传输系统。该消息传输系统可以使用发布订阅机制来连接节点并通过节点传输消息。每个节点可以建立到其他节点的连接,且订阅请求和发布通知可以跨节点传递来建立消息的路径。当消息被发布,消息可以通过其上订阅是活动的连接来传递。当消息在节点之间传递时,将路径标识符添加到该消息,且该路径标识符可以被订阅节点用于标识所接收到的信息。当订阅通知被移除时,可以跨多个节点解构路径。可以安排节点,使得每个节点相对于任何通过该与其相连的节点的连接是不可知的,且可以允许任何节点订阅在网络中发布的任何信息。
文档编号H04L12/58GK102158424SQ20111003749
公开日2011年8月17日 申请日期2011年2月1日 优先权日2010年2月2日
发明者C-L·余, D·汤普森, G·苏日亚纳拉亚南, J·M·莱昂, M·K·利普塔克, R·汉茨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1