发布-订阅数据处理环境中管理通道所有权的方法和系统的制作方法

文档序号:10578137阅读:238来源:国知局
发布-订阅数据处理环境中管理通道所有权的方法和系统的制作方法
【专利摘要】本发明涉及发布-订阅数据处理环境中管理通道所有权的方法和系统。为了在发布-订阅数据处理环境中管理通道所有权,在第一服务器处确定来自客户机的订阅请求涉及通道,所述通道具有通道标识符。在消息传送中间件内的交换组件处,将与所述客户机关联的会话队列绑定到所述通道。将强制传送消息配置为由所述交换组件使用发布者标识符来路由,所述发布者标识符与所述通道标识符相关。将所述强制传送消息从所述第一服务器传送到所述交换组件,以便指示所述第一服务器要变成所述通道的发布者的意图。所述强制传送消息使得所述通道的所述通道所有权被限于单个发布者。
【专利说明】
发布-订阅数据处理环境中管理通道所有权的方法和系统
技术领域
[0001] 本发明一般地设及用于管理数据请求和响应的方法、系统和计算机程序产品。更 具体地说,本发明设及用于发布-订阅系统中的通道所有权的方法、系统和计算机程序产 品。
【背景技术】
[0002] 两个数据处理系统之间的大部分数据通信都设及对数据的请求和包含被请求数 据的响应。例如,客户机数据处理系统通过使用超文本传输协议化t化或HTTP)向服务器数 据处理系统发送请求消息来请求数据。服务器使用HTTP向客户机发送包含数据的响应消 息。
[0003] 客户机可W持续请求数据更新。例如,在使用实时查询型请求的客户机-服务器环 境中,客户机基本上从服务器侧或后端数据处理环境订阅数据更新的持续馈送。实时查询 (也称为动态查询或连续查询)是客户机用于根据事件或事物状态而请求持续更新的一种 方法。
[0004] 实时查询的一个简单实例是从浏览器对证券报价机的实时股票价格的请求,其中 响应于此类查询,服务器向浏览器提供该报价机的不断变化的股票价格的持续更新。为了 响应于请求而提供持续更新,服务器通常监视数据库的变化或事件状态的变化。服务器可 W通过W下操作监视运些变化:轮询数据库或定期观察事件,W便获得来自数据库中的先 前数据的任何变化或来自事件的先前状态的任何变化。
[0005] HTTP协议仅支持请求-响应模型,其中客户机发起请求并且服务器响应客户机请 求。在标准HTTP模型中,在没有来自客户机的待处理对应请求的情况下,服务器不能将响应 推回客户机。在实时查询型发布-订阅系统中,服务器直接将内容推回客户机。运种类型的 操作可W通过诸如websocket之类的协议实现,该协议支持客户机与服务器之间的双向通 信。
[0006] 在客户机-服务器模型中,其中客户机订阅由服务器生成的此类动态内容馈送,多 个服务器可W用于负载平衡。用于支持横向扩展的一种形式的负载平衡是使用独立服务 器,其中服务器不知道其它服务器针对相同或不同客户机执行什么操作。在服务器侧数据 处理环境中,其中多个独立服务器(它们没有关于彼此的共享状态信息)共同操作W便服务 于来自多个客户机的多个请求,可W将来自客户机的对订阅或取消接收此类数据更新的入 站请求路由到任意服务器W便处理。

【发明内容】

[0007] 示例性实施例提供一种用于发布-订阅系统中的通道所有权的方法、系统和计算 机程序产品。一个实施例包括一种用于在发布-订阅数据处理环境中管理通道所有权的方 法。该实施例在第一服务器处,使用处理器和存储器确定来自客户机的订阅请求设及通道, 所述通道具有通道标识符。该实施例在消息传送中间件内的交换组件处,使得与所述客户 机关联的会话队列绑定到所述通道。该实施例将强制传送消息配置为由所述交换组件使用 发布者标识符来路由,所述发布者标识符与所述通道标识符相关。该实施例将所述强制传 送消息从所述第一服务器传送到所述交换组件W指示所述第一服务器要变成所述通道的 发布者的意图,其中所述强制传送消息使得所述通道的所述通道所有权被限于单个发布 者。
[0008] 另一个实施例包括一种计算机可用程序产品,其包括计算机可读存储设备,所述 计算机可读存储设备包括用于在发布-订阅数据处理环境中管理通道所有权的计算机可用 代码。
[0009] 另一个实施例包括一种数据处理系统,其用于在发布-订阅数据处理环境中管理 通道所有权。
【附图说明】
[0010] 在所附权利要求中说明了被认为是本发明特征的新颖特性。但是,当结合附图阅 读时,通过参考W下对示例性实施例的详细描述,将最佳地理解发明本身及其优选使用方 式、进一步的目的和优点,运些附图是:
[0011] 图1示出其中可W实现示例性实施例的数据处理系统网络的框图;
[0012] 图2示出其中可W实现示例性实施例的数据处理系统的框图;
[OOK]图3示出根据一个示例性实施例的用于在发布-订阅客户机-服务器环境中持续发 布内容的实例配置的框图;
[0014] 图4示出根据一个示例性实施例的发布-订阅系统中的通道所有权的状况的框图;
[0015] 图5示出根据一个示例性实施例的用于在发布-订阅系统中解决通道所有权问题 的配置的框图;
[0016] 图6示出根据一个示例性实施例的用于发布-订阅系统中的通道所有权的实例过 程的流程图;
[0017] 图7示出根据一个示例性实施例的用于解决同时或几乎同时的多个发布者竞争状 况的实例过程的流程图;W及
[0018] 图8示出根据一个示例性实施例的用于消除重复发布者的实例过程的流程图。
【具体实施方式】
[0019] 示例性实施例认识到,在其中客户机订阅数据馈送的客户机-服务器环境中,多个 服务器可W结束执行浪费资源的重复工作。例如,在此类环境中,可能出现运种情况:响应 于来自不同客户机的类似请求,多个服务器可W处理相同数据或事件W便发布相同数据更 新或馈送。
[0020] 示例性实施例进一步认识到,服务器侧的重复工作还在客户机侧造成混淆。例如, 在某些情况下,还可能出现运种情况:同一客户机针对同一查询发送请求和再次请求,并且 不同服务器结束处理该请求和再次请求。因此,多个服务器可W开始发布重复数据馈送,运 可W混淆或中断客户机侧的操作。
[0021] 用于描述本发明的示例性实施例通常应对和解决上述问题W及与管理数据请求 和响应相关的其它问题。示例性实施例针对用于发布-订阅系统中的通道所有权的可扩展 和自我修复架构提供一种方法、系统和计算机程序产品。
[0022] 在此描述的实施例适合于使用HTTP或其它协议的其它类型请求和响应。在此描述 的实施例还适合于不仅与移动设备一起使用,而且还与其它数据处理系统和环境(其中可 W使用用于客户机-服务器通信的发布-订阅模型)一起使用。
[0023] 在某些实施例中,请求者系统被描述为客户机并且响应系统被描述为服务器,而 不暗示任何特定的客户机-服务器配置或架构。客户机仅是数据的消费者而服务器仅是数 据的供应者,并且在一个交换中作为客户机的系统很有可能在另一个交换中是服务器(或 后端),反之亦然。通常,服务器在后端数据处理环境中操作,并且通过数据网络从在客户机 系统处执行的应用被访问。后端数据处理环境(在此也称为服务器侧数据处理环境)包括用 于接收数据请求的应用和系统、作为响应从中提供数据的数据储存库、其服务在某些请求 中被请求的应用、安全应用、中间件应用和平台,W及许多其它系统和应用。
[0024] -个实施例可W在软件、硬件或固件中实现为应用,W便在后端数据处理环境中 操作。在此描述的某些实施例的某些操作可W在服务器中实现,例如通过修改服务器应用 W便执行运些操作。通常,在示例性实施例的范围内,一个实施例的操作和功能可W W独立 方式实现,或者与在后端数据处理环境中执行的其它应用结合实现。例如,实现一个实施例 的应用可W被配置为作为W下各项操作:服务器的修改、消息传送中间件的修改、可由服务 器使用的独立应用、可由消息传送中间件使用的独立应用,或者其某种组合。
[0025] 在操作中,通常,负载共享配置中的数个服务器向多个客户机提供相同类型的服 务。根据一个实施例,在此类发布-订阅客户机-服务器架构中操作的每个负载共享服务器 能够建立通道、向该通道发布内容(包括持续更新),W及绑定客户机W便监听在通道上发 布的内容。
[0026] 服务器基于来自客户机的查询或请求类型(W下称为"查询")建立通道。基本上, 在示例性实施例的范围内,通道仅是在查询与发布的内容之间建立对应性的一种方式。例 如,假设查询具有标识符。服务器使用查询标识符作为通道标识符。向通道发布内容包括使 用标识符标识内容,W使得监听该通道的客户机可W在查询与内容之间建立对应性。
[0027] 在一个实施例中,请求消息指定查询标识符,并且服务器使用指定查询的指定标 识符作为通道标识符。在另一个实施例中,请求消息指定查询,并且服务器使用合适的方法 确定指定查询的标识符,例如通过生成查询的散列值或者通过在目录中查找查询。服务器 然后使用确定的查询标识符作为通道标识符。
[0028] 服务器然后可W绑定请求客户机W便监听在通道上发布的更新。绑定到通道的客 户机接收在该通道上发布的内容,而不必轮询或者发送对内容的请求。如将在本公开中描 述的,消息传送中间件维护客户机的会话队列。将客户机绑定到通道包括配置中间件中的 路径,W使得可W将随通道标识符发布的内容放在客户机的会话队列中。
[0029] 客户机通过向后端数据处理环境发送握手消息,发起数据通信会话。后端数据处 理环境实现一个或多个代理应用,所述代理应用之一针对会话建立会话标识符并且响应客 户机的握手消息。对于客户机与后端之间的其余数据通信,预期客户机使用该会话标识符。
[0030] 使用该会话标识符,客户机向后端数据处理环境发送请求,例如对数据和持续更 新的请求。代理从消息头确定请求中的查询。例如,一个请求可W询问数据库服务,其中作 为响应,数据库必须提供有关某些不断变化的数据的更新。作为另一个实例,另一个请求可 W询问新闻或股票馈送服务,其中服务器应用可能必须访问数据源W便获得和供应该数据 和更新。作为另一个实例,请求可W询问通知服务,其中当检测到事件的变化时,后端应用 必须供应该事件的信息。许多其它类型的服务同样可W是请求消息中的查询的主题。
[0031] 面向消息的中间件是使两个或更多应用能够经由消息队列(MQ)彼此通信的任何 合适的应用。各种面向消息的中间件(在此也称为消息传送中间件或MQ中间件)目前可用并 且用于后端数据处理环境中。MQ-Series和Ra化itMQ是可W从市面上购买的消息传送中间 件的一些实例,它们促进应用之间的此类通信(MQ-Series是国际商业机器公司在美国和其 它国家的商标,Rat)bitMQ是PiVOtal Sof tware, Inc.在Mozi 1 Ia公共许可证下分发的开源软 件)。
[0032] 消息传送中间件允许一个或多个应用在消息队列中发布用于一个或多个其它应 用的一个或多个消息。其它应用订阅该队列。当向该队列发布消息时,队列的所有订阅者或 订阅者子集可W接收发布的消息。通过归属于队列的策略的组合W及通过消息内容本身, 确定接收消息的订阅者子集。
[0033] -个或多个代理应用的集合维护一组服务队列。所述一组服务队列中的服务队列 被配置为接收仅具有特定查询的请求的发布。例如,一个服务队列可W与监视数据库中的 特定数据关联,另一个服务队列可W与新闻馈送服务关联,并且另一个服务队列可W与监 视事件关联。
[0034] 根据在请求消息查询中被请求的服务,代理向与该服务关联的服务队列发布请 求。提供被请求服务的那些服务器或后端应用订阅该服务的服务队列。订阅者后端应用之 一从服务队列中接收请求。该订阅者后端应用处理请求并且产生具有被请求内容的响应。
[0035] 代理判定是否已经在消息传送中间件中创建请求者客户机的会话队列。服务器可 W使用会话队列发布必须传送到客户机的响应。每当服务器或后端应用具有要发送到客户 机的数据时,服务器或后端应用向客户机的会话队列发布该数据。客户机是会话队列的最 终订阅者,其中代理充当将转发消息的中介。当向会话队列发布数据时,订阅客户机经由代 理接收该数据。
[0036] 在某些情况下,服务器可W创建会话队列并且向队列发布响应W便传送到客户 机。为了避免针对同一客户机创建同一会话的多个会话队列,在代理创建会话队列之前,代 理检查是否已经针对客户机和会话存在会话队列。如果会话队列已经存在,则代理仅绑定 到现有会话队列。
[0037] 因此,多个代理可W绑定到同一会话队列。当服务器或后端应用向会话队列发布 响应时,绑定到队列的任何一个代理可W向订阅客户机发送发布的响应。
[0038] 当订阅客户机在队列超时期限内未访问会话队列时,一个实施例清除队列和其中 的剩余消息。如果向会话队列发布消息,并且订阅客户机未获得或接收发布的消息,则消息 超时计时器从会话队列中清除该发布的消息。
[0039] 在消息传送中间件中,每个服务器还维护服务器实例队列。服务器实例队列用于 服务器之间的通信。服务器之间的此类内部通信不维护有关彼此的任何状态信息。
[0040] 在上述架构中,交换是消息传送中间件功能。交换包括用于将消息路由到队列的 逻辑。服务器向交换发布消息W便向一个或多个队列发布消息。
[0041] 例如,服务器通过向交换发布具有通道信息的内容来向通道发布内容,并且交换 将通道的内容路由到W下运些会话队列:它们绑定到交换W便使用针对该通道的消息。作 为另一个实例,服务器通过向交换发布具有通道信息的发布者消息,指示它本身是通道的 发布者,并且交换将与通道相关的发布者消息路由到服务器实例队列,如本公开中描述的 那样。作为另一个实例,服务器通过向交换发布具有通道信息的终止消息化ill message), 尝试使它本身变成通道的唯一发布者或主要发布者,并且交换将与通道相关的终止消息路 由到服务器实例队列,如本公开中描述的那样。
[0042] 在具有该架构的情况下,一个实施例从客户机中接收订阅请求。该实施例确定请 求设及特定通道,例如通道Z。如果多个客户机W运种方式请求同一查询,则多个客户机可 W是通道Z的请求订阅。
[0043] 代理根据请求中的查询,对合适的服务队列中的请求进行排队。从处理该查询的 一组服务器,服务器实例(例如,服务器10)从服务队列中获得请求。服务器IO将请求客户机 的会话队列与通道Z的交换相绑定。换言之,当服务器IO向交换发布通道Z上的内容时,交换 将通道Z内容路由和存储在客户机的会话队列中。如果多个客户机订阅通道Z,则交换W类 似方式将在通道Z上发布的内容路由和存储到每个此类订阅客户机的会话队列。
[0044] -个实施例进一步操作W便确保服务器IO是在通道Z上发布的唯一或主要服务 器,从而避免先前描述的重复工作问题。当多个服务器看似要向同一通道进行发布时,另一 个实施例操作W便从多个发布服务器选择主要服务器,从而避免重复工作问题。
[0045] 当实现在此描述的一个实施例的一种方法W便在设备或数据处理系统上执行时, 该方法包括该设备或数据处理系统在管理数据请求和响应方面的功能的实质进展。例如, 为了管理客户机-服务器通信,现有技术允许服务器侧的重复和浪费性工作的可能性。相比 之下,一个实施例配置和操作发布-订阅客户机-服务器架构,其中负载共享服务器可W避 免服务器侧的重复工作并且避免向客户机同时发布重复内容,同时保持相对于彼此的无状 态。发布-订阅环境中运种方式的数据请求管理不可用于目前提供的设备或数据处理系统。 因此,通过执行一个实施例的方法的此类设备或数据处理系统的实质进展允许可扩展的无 状态后端环境,运明显降低向客户机发布数据和数据更新的浪费性重复服务器资源消耗。
[0046] 仅作为实例,针对特定架构、中间件、协议、消息、标识符、网络、参数、超时、条件、 设备、数据处理系统、环境、组件和应用描述示例性实施例。运些和其它类似构件的任何特 定表现形式并非旨在是本发明的限制。可W在示例性实施例的范围内选择运些和其它类似 构件的任何合适的表现形式。
[0047] 此外,可W针对任何类型的数据、数据源或通过数据网络对数据源的访问,实现示 例性实施例。在本发明的范围内,任何类型的数据存储设备可W在数据处理系统本地或者 通过数据网络,向本发明的一个实施例提供数据。在本发明的范围内,如果使用移动设备描 述一个实施例,则适合于与该移动设备一起使用的任何类型的数据存储设备可W在所述移 动设备本地或者通过数据网络,向此类实施例提供数据。
[0048] 仅作为实例并且不作为示例性实施例的限制,使用特定代码、设计、架构、协议、布 局、示意图和工具描述所述示例性实施例。此外,仅作为实例W使描述清晰起见,在某些情 况下使用特定软件、工具和数据处理环境描述所述示例性实施例。所述示例性实施例可W 与其它相当或具有同样目的的结构、系统、应用或架构结合使用。例如,在本发明的范围内, 其它相当移动设备、结构、系统、应用或其架构可W与本发明的此类实施例结合使用。示例 性实施例可W W硬件、软件或其组合实现。
[0049] 本公开中的实例仅用于使描述清晰,并且并非是示例性实施例的限制。可W从本 公开构想其它数据、操作、动作、任务、活动和操纵,并且在示例性实施例的范围内构想它 们。
[0050] 在此列出的任何优点仅是实例,并且并非旨在限制示例性实施例。可W通过特定 示例性实施例实现其它或不同优点。此外,特定示例性实施例可W具有上面列出的部分、全 部优点或者没有其中任何优点。
[0051] 参考附图并且具体参考图1和2,运些图是其中可W实现示例性实施例的数据处理 环境的实例图。图1和2仅是实例,并且并非旨在断言或暗示有关其中可W实现不同实施例 的环境的任何限制。基于W下描述,特定实现可W对示出的环境做出许多修改。
[0052] 图1示出其中可W实现示例性实施例的数据处理系统网络的框图。数据处理环境 100是其中可W实现示例性实施例的计算机网络。数据处理环境100包括网络102。网络102 是用于在数据处理环境100中连接在一起的各种设备与计算机之间提供通信链路的介质。 网络102可W包括连接,例如有线、无线通信链路或光缆。
[0053] 客户机或服务器仅是连接到网络102的某些数据处理系统的实例角色,并且并非 旨在排除运些数据处理系统的其它配置或角色。服务器104和服务器106连同存储单元108 禪合到网络102。软件应用可W在数据处理环境100中的任何计算机上执行。客户机110、112 和114也禪合到网络102。诸如服务器104或106或客户机110、112或114之类的数据处理系统 可W包含数据,并且可W具有在其上执行的软件应用或软件工具。
[0054] 仅作为实例并且不暗示对此类架构的任何限制,图1示出可用于一个实施例的实 例实现中的某些组件。例如,仅作为实例并且不暗示对客户机-服务器架构的限制,服务器 104和106 W及客户机110、112、114被示为服务器和客户机。作为另一个实例,在示例性实施 例的范围内,一个实施例可W跨如图所示的数个数据处理系统和一个数据网络分布,而另 一个实施例可W在单个数据处理系统上实现。数据处理系统104、106、110、112和114还表示 群集中的实例节点、分区,W及适合于实现一个实施例的其它配置。
[0055] 设备132是在此描述的设备的一个实例。例如,设备132可W采用W下形式:智能电 话、平板计算机、膝上型计算机、固定或便携形式的客户机110、可佩戴计算设备,或者任何 其它合适的设备。描述为在图1中的另一个数据处理系统中执行的任何软件应用可W被配 置为W类似方式在设备132中执行。在图1中的另一个数据处理系统中存储或产生的任何数 据或信息可W被配置为W类似方式在设备132中存储或产生。服务器104中的后端应用105 包括任何应用,包括但不限于服务器应用或服务应用,其对应于来自客户机应用的请求。设 备132是客户机的一个非限制性实例,并且设备132中的浏览器134是客户机应用的一个非 限制性实例。客户机114中的请求者应用115是客户机应用的另一个实例。请求者应用115或 浏览器134发送请求,后端应用105响应该请求。服务器106中的一个或多个代理应用107从 客户机应用115或134接收请求,根据被请求服务的类型对请求进行排队,创建会话队列,并 且将响应传递到客户机应用115或134,如本公开中的其他部分描述的那样。消息传送中间 件111W本公开中描述的方式,提供排队和发布-订阅功能。例如,消息传送中间件111促进 队列113的创建和操作。队列113中的一个队列可W是服务队列(未示出),队列113中的另一 个队列可W是会话队列(未示出),并且队列113中的另一个队列可W是服务器实例队列(未 示出)。消息传送中间件111还实现交换功能(未示出),运可W W本公开中描述的方式使用。 在示例性实施例的范围内,与一个实施例结合操作的服务器或服务器实例包括后端应用 105。一个实施例可W在后端应用105中实现或者与其结合实现,在消息传送中间件111中实 现或者与其结合实现,作为另一个应用(未示出)实现,或者作为其某种组合实现。
[0056] 服务器104和106、存储单元108W及客户机110、112和114可W使用有线连接、无线 连接协议或其它合适的数据连接来禪合到网络102。客户机110、112和114例如可W是个人 计算机或网络计算机。
[0057] 在示出的实例中,服务器104可W向客户机110、112和114提供数据,例如引导文 件、操作系统映像和应用。在该实例中,客户机11〇、112和114可W是服务器104的客户机。客 户机110、112、114或其某种组合可W包括它们自己的数据、引导文件、操作系统映像和应 用。数据处理环境100可W包括其它服务器、客户机和其它未示出的设备。
[0058] 在示出的实例中,数据处理环境100可W是因特网。网络102可W代表使用传输控 制协议/网际协议(TCP/IP)和其它协议来相互通信的网络和网关的集合。在因特网的核屯、 是主节点或主机之间的数据通信链路的主干,它包括数W千计的商业、政府、教育W及其它 路由数据和消息的计算机系统。当然,数据处理环境100也可W实现为许多不同类型的网 络,例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为一个实例,并非旨在作为对不同 示例性实施例的架构限制。
[0059] 在其它使用中,数据处理环境100可W用于实现客户机-服务器环境,其中可W实 现示例性实施例。客户机-服务器环境使软件应用和数据能够跨网络分布,W使得应用通过 使用客户机数据处理系统与服务器数据处理系统之间的交互来执行功能。数据处理环境 100还可W被视为采用面向服务的架构,其中跨网络分布的可互操作软件组件可W共同打 包作为一致的业务应用。
[0060] 参考图2,该图示出其中可W实现示例性实施例的数据处理系统的框图。数据处理 系统200是诸如图1中的服务器104或客户机110之类的计算机的一个实例,或者是另一种类 型的设备,其中可W具有实现示例性实施例的过程的计算机可用程序代码或指令。
[0061] 数据处理系统200还表示数据处理系统或其中的配置,例如图1中的设备132,其中 可W具有实现示例性实施例的过程的计算机可用程序代码或指令。仅作为实例而并非限于 此,数据处理系统200被描述为计算机。采取其它设备(例如图1中的设备132)形式的实现可 W修改数据处理系统200(例如通过添加触摸界面),并且甚至从数据处理系统200移除某些 示出的组件而不偏离在此描述的数据处理系统200的操作和功能的一般描述。
[0062] 在示出的实例中,数据处理系统200采用集线器架构,包括北桥及存储控制器集线 器(NB/MCH) 202和南桥及输入/输出(I/O)控制器集线器(SB/ICH) 204。处理单元206、主存储 器208和图形处理器210禪合到北桥及存储控制器集线器(NB/MCH)202。处理单元206可W包 含一个或多个处理器,并且可W使用一个或多个异构处理器系统实现。处理单元206可W是 多核处理器。在某些实现中,图形处理器210可W通过图形加速端口(AGP)禪合到NB/MCH 202。
[0063] 在示出的实例中,局域网化AN)适配器212禪合到南桥及I/O控制器集线器(SB/ ICH)204。音频适配器216、键盘及鼠标适配器220、调制解调器222、只读存储器(R0M)224、通 用串行总线化SB)及其它端口 232W及PCI/PCIe设备234通过总线238禪合到南桥及I/O控制 器集线器204。硬盘驱动器化孤)或固态驱动器(SSD)226和CD-ROM 230通过总线240禪合到 南桥及I/O控制器集线器204"PCI/PCIe设备234例如可W包括W太网适配器、附加卡,W及 用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM 224例如可W是闪 存二进制输入/输出系统(BIOS)。硬盘驱动器或固态驱动器226和CD-ROM 230例如可W使用 集成驱动电子设备(IDE)、串行高级技术附件(SATA)接口,或者诸如外部SATA(eSATA)和微 SATA(mSATA)之类的变体。超级IAKSIO)设备236可W通过总线238禪合到南桥及I/O控制器 集线器(SB/ICH)204。
[0064] 诸如主存储器208、R0M 224或闪存(未示出)之类的存储器是计算机可用存储设备 的一些实例。硬盘驱动器或固态驱动器226XD-R0M 230和其它同样可用设备是包括计算机 可用存储介质的计算机可用存储设备的一些实例。
[0065] 操作系统在处理单元206上运行。操作系统协调和提供对图2中的数据处理系统 200中的各个组件的控制。操作系统可W是可从市面上购买的操作系统,例如AIX?(AIX 是国际商业机器公司在美国和其它国家的商标)、MieTOSOft? WilMl0WS@ (Microsoft 和Windows是微软公司在美国和其它国家的商标)、Linux?'化inux是Linus Torvalds在 美国和其它国家的商标)、i〇S?(i〇S是授权给Apple Inc.的Cisco Systems, Inc.在美国和 其它国家的商标)或An化Oid?(Android是Google Inc.在美国和其它国家的商标)。诸如 化va?编程系统之类的面向对象的编程系统可W与操作系统结合运行,并且从在数据处理 系统200上执行的化va?程序或应用提供对操作系统的调用(JavaW及所有基于化va的商标 及标识都是Oracle公司和/或其关联公司的商标或注册商标)。
[0066] 用于操作系统、面向对象的编程系统W及应用或程序(例如图1中的代理107、后端 应用105或消息传送中间件111)的指令位于诸如硬盘驱动器226或固态数据存储设备之类 的存储设备上,并且可W加载到一个或多个存储器的至少一个(例如主存储器208)中W便 由处理单元206执行。示例性实施例的过程可W由处理单元206使用计算机实现的指令执 行,计算机实现的指令可W位于诸如主存储器208、只读存储器224之类的存储器中,或者位 于一个或多个外围设备中。
[0067] 图1-2中的硬件可W根据实现而有所不同。除了图1-2中所示的硬件或替代图1-2 中所示的硬件,还可W使用其它内部硬件或外围设备,例如闪存、等效非易失性存储器或光 盘驱动器等。此外,示例性实施例的过程可W应用于多处理器数据处理系统。
[0068] 在某些示例性实例中,数据处理系统200可W是移动计算设备,其通常被配置有闪 存W提供非易失性存储器W便存储操作系统文件和/或用户生成的数据。总线系统可W包 括一个或多个总线,例如系统总线、1/0总线和PCI总线。当然,总线系统可W使用任何类型 的通信结构或架构实现,该结构或架构用于在连接到结构或架构的不同组件或设备之间传 输数据。
[0069] 通信单元可W包括一个或多个用于发送和接收数据的设备,例如调制解调器或网 络适配器。存储器例如可W是主存储器208或高速缓存,例如在北桥及存储控制器集线器 202中发现的高速缓存。处理单元可W包括一个或多个处理器或CPU。
[0070] 图1-2中的所示实例和上述实例并非旨在暗示架构限制。例如,除了采用移动或可 佩戴设备形式之外,数据处理系统200还可W是平板计算机、膝上型计算机或电话设备。
[0071] 参考图3,该图示出根据一个示例性实施例的用于在发布-订阅客户机-服务器环 境中持续发布内容的实例配置的框图。将客户机侧302与服务器侧304分开的虚线表示数据 网络,例如图1中的网络102。客户机侧302表示数据请求者,例如客户机应用306(客户机应 用在此也互换称为"客户机")。客户机应用306是图1中的浏览器134或请求者应用115的一 个实例。
[0072] 服务器侧304表示服务器侧数据处理环境,其中运行响应客户机请求中的查询的 后端应用和服务器,W及用于支持其功能的其它服务器侧架构组件。示出一组代理(数个) 308作为一个示例。代理308的一个实例是图1中的代理107的一个示例。可选地,可W采用负 载平衡器(未示出)或另一种合适的分配方法在数个代理308之间分配来自客户机侧302的 入站请求。
[0073] 消息传送中间件312是图1中的消息传送中间件111的一个实例。服务器314包括一 组服务器、服务器应用或后端应用,它们提供在某些客户机请求中请求的特定服务。作为一 个非限制性实例,服务器314可W作为冗余或负载共享服务器操作,W便提供用于处理与通 道Z关联的特定类型查询的数据库服务。同样可W在服务器侧304配置其它多组服务器(未 示出),W便W类似方式提供与其它查询和请求关联的其它服务。
[0074] 服务队列316保存W下运些客户机请求:它们请求服务器314中的服务器实例所提 供的服务。例如,客户机应用306和其它客户机应用(未示出)可W发送对数据库中的某些数 据的订阅请求。代理308中的代理接收一个此类请求,标识被请求服务,确定服务队列316与 被请求服务关联,并且在服务队列316中发布请求。服务器314订阅服务队列316。服务器314 中的服务器检测到向服务队列316发布订阅请求,并且从服务队列316删除该请求W便处 理。
[0075] 注意,每个服务器314W无状态方式操作。换言之,服务器314中的服务器不维护任 何会话或状态信息W便与任何特定客户机应用或另一个服务器具有任何特定亲和性。服务 器314中的服务器简单地从服务队列316接收订阅请求并且处理该请求。接收的请求可W来 自在任何客户机数据处理系统中执行的任何客户机应用。
[0076] 在操作中,客户机应用306首先向服务器侧304发送订阅请求320。订阅请求320请 求对应于通道(例如,通道Z)的查询。代理308将请求32拥歐到服务队列316中。服务器314 中的服务器实例IO接收请求320。
[0077] 在消息318中,服务器IO使用通道Z在交换324上发布内容,并且还将客户机306的 会话队列326绑定到交换324作为通道Z的消费者。作为一个实例,服务器IO通过使用具有消 息318的路由键(routing key)在交换324上发布消息318,其中将路由键设置为通道标识 符,在此处的实例中通道标识符是Z。
[0078] 假设会话队列326与客户机306关联。交换324将会话队列326绑定到通道Z。交换 324可W W类似方式将会话队列326绑定到客户机306的任意数量的不同通道。同样,交换 324可W W类似方式将与任意数量的不同客户机关联的任意数量的会话队列绑定到通道Z 和/或任意数量的不同通道。
[0079] 假设出于服务器IO是通道Z上的唯一发布者的图3的目的,服务器IO向通道Z发布 或连续发布内容。交换324将通道Z的发布的内容路由到会话队列326,代理308中的代理将 该内容传送到客户机306作为发布的内容322。
[0080] 参考图4,该图示出根据一个示例性实施例的发布-订阅系统中的通道所有权的状 况的框图。具有来自图3的重用参考标号的所示构件是与针对图3所述的相同构件。
[0081] 如针对图3描述的,在一个时间点,服务器IO已变成通道Z上的发布者,并且客户机 306经由会话队列326订阅通道Z。现在,假设另一个客户机(客户机406)发送订阅请求420。 代理308中的代理在服务队列316中对请求420进行排队W便服务器314之一获得该请求。因 为任何服务器314可W潜在地从服务队列316获得请求并且处理该请求,所W假设服务器实 例Il从服务队列316接收请求420并且删除该请求。
[0082] 为了例示发布-订阅系统中的可能通道所有权问题,假设请求420还设及来自图3 中的客户机306的请求320中的同一查询。因此,请求420也对应于通道Z。因为服务器314无 状态,所W服务器Il没有用于知晓W下情况的信息:由于消息320,服务器IO已经是通道Z的 发布者。因此,在消息418中,服务器Il在通道Z的交换324上发布内容,并且还将客户机406 的会话队列426绑定到通道Z的交换324。作为一个实例,服务器Il通过使用具有消息418的 路由键在交换324上发布消息418,其中将路由键设置为通道标识符,在此处的实例中通道 标识符是Z。因此,交换324将会话队列426绑定到通道Z。
[0083] 现在,会话队列326和426被绑定到通道Z。因为服务器IO先前已由于客户机消息 320而变成通道Z的发布者,所W服务器IO继续向通道Z发布,并且通道Z的订阅者接收服务 器IO向通道Z的发布。因为服务器Il已由于客户机消息320而变成通道Z的发布者,所W服务 器Il也继续向通道Z发布,并且通道Z的订阅者接收服务器Il向通道Z的发布。
[0084] 如可W看到的,服务器IO或Il所不知道的是,两个服务器花费资源W便计算通道Z 的查询并且向通道Z发布相同的结果内容。通道Z的订阅者因此接收重复内容一一个由服务 器IO发布并且另一个由服务器Il发布。
[0085] 参考图5,该图示出根据一个示例性实施例的用于在发布-订阅系统中解决通道所 有权问题的配置的框图。具有来自图3和4的重用参考标号的所示构件是与针对图3所述的 相同构件。
[0086] 根据一个实施例,每个服务器314在服务器实例队列502中具有对应的服务器实例 队列。例如,服务器实例队列504对应于服务器10。
[0087] 交换524 W交换324的方式操作并且进一步针对图5描述。当服务器IO变成通道Z的 发布者时,服务器IO还将服务器实例队列504与交换524相绑定巧06),W便接收具有发布者 (Z)作为键的消息。发布者(Z)仅是应用于通道标识符Z的已知服务器侧功能的替代者,例如 W便产生标识符Z'dZ'通过某种功能"发布者"对应于通道Z。基本上,当服务器IO使用路由 键Z向交换524发送消息时,交换524将运些消息路由到使用绑定键Z绑定到交换524的任何 订阅客户机会话队列。当服务器IO使用路由键Z'向交换524发送消息时,交换524将运些消 息路由到使用绑定键Z'绑定到交换524的任何订阅服务器实例队列。当用于从任何服务器 314到交换524的路由上下文中时,发布者(Z)在此也称为"通道标识符Z的发布者"或Z'。
[0088] 现在,作为绑定506的结果,交换524在队列502中具有至少一个服务器实例队列, 该服务器实例队列订阅具有通道标识符Z的发布者(即Z')作为键的消息,并且其中可W传 送如在此所述具有Z'作为键的某些强制传送消息。强制传送消息是运样的消息:其必须传 送到通道的至少一个接收者或订阅者队列,否则必须由消息传送中间件返回到发送者。
[0089] -种类型的强制传送消息是具有Z'作为路由键的"意图变成发布者"消息(在此也 称为"发布者消息"),服务器314中的服务器实例可W将该消息发送到交换。如果任意服务 器实例队列订阅接收具有Z'作为路由键的消息,则将发布者消息传送到该其它服务器实例 队列,否则将发布者消息返回到发送者服务器实例。
[0090] 例如,当服务器IO确定服务器IO应该变成通道Z的发布者时,服务器IO发送路由键 为Z'的意图变成发布者消息,交换将消息传送到已订阅接收具有Z'作为路由键的消息的任 何其它服务器实例队列。如果未使用绑定键Z'将此类其它服务器实例队列绑定到交换,贝U 交换将意图变成发布者消息返回到服务器10。
[0091] 如果将意图变成发布者消息传送到某个订阅者队列,则传送用作向服务器IO的指 示,该指示表明具有作为通道Z的发布者的另一个服务器。服务器IO然后让位于现有发布者 服务器。
[0092] 如果未将意图变成发布者消息传送到任何订阅者队列,则交换524将发布者消息 返回到服务器10。失败的传送用作向服务器IO的指示,该指示表明没有作为通道Z的发布者 的另一个服务器。服务器IO然后作为通道Z的发布者,使用绑定键Z'将服务器IO的服务器实 例队列504绑定到交换524,并且还更新服务器IO中的内部指示符W便指示服务器IO是通道 Z的发布者。
[0093] 意图变成发布者消息设法解决通道的现有发布者服务器与尝试变成同一通道的 发布者服务器的另一个服务器之间的冲突。但是,在某些情况下,当没有现有发布者服务器 但两个或更多服务器同时或几乎同时尝试变成同一通道的发布者时,可能出现竞争状况。 仅使用意图变成发布者消息未有效解决此类同时或几乎同时的冲突。
[0094] 另一种类型的强制传送消息是具有通道标识符的发布者(例如,Z')作为路由键的 终止消息,服务器314中的服务器实例可W将该消息发送到交换。终止消息还包括发送者服 务器的某些信息,W使得相对于接收者服务器的优先级,可W建立发送者服务器的优先级。 如果任意服务器实例队列订阅接收具有该通道标识符的发布者(例如,Z')作为路由键的消 息,则将终止消息传送到该其它服务器实例队列,否则将终止消息返回到发送者服务器实 例。例如,如果服务器IO发送具有Z'作为路由键的终止消息,贝蚊换将消息传送到已订阅接 收具有Z'作为路由键的消息的任何服务器实例队列。如果未针对Z'键将此类其它服务器实 例队列绑定到交换,则交换将终止消息返回到服务器10。
[0095] 在示例性实施例的范围内,可W在终止消息中使用服务器的任何合适的信息,该 信息可用于建立两个服务器的相对优先级。例如并且不暗示对此的任何限制,一种此类信 息可W是服务器的标识符。不同服务器具有不同标识符,并且服务器标识符的某种排序可 W用于确定服务器1具有高于服务器2的优先级,例如因为1是低于2的数值,或者反之亦然。 同样,不同服务器可W具有不同优先级、寿命、在数据处理环境中的位置、可用容量、利用率 W及许多其它类型的信息,可W在两个服务器之间比较运些信息W便确定哪个服务器在给 定时间具有较高优先级。可W在示例性实施例的范围内使用特定于服务器并且可用于建立 服务器相对于另一个服务器的优先级的任何信息。
[0096] 在服务器变成通道的发布者之后,存在另一个服务器也同时变成同一通道的发布 者的可能性,如上所述。为了避免此类同时冲突,发布者服务器发送终止消息。
[0097] 假设服务器IO和服务器Il同时或几乎同时尝试变成通道Z的发布者。服务器IO和 Il已几乎同时向交换发送意图变成发布者消息。运些消息返回到对应的服务器,从而指示 没有通道的现有发布者。服务器IO和Il然后均更新其内部状态W便指示它们本身作为通道 的发布者。但是在承担发布者的角色并且开始在通道上发布的实际任务之前,服务器IO和 服务器Il发送终止消息W便避免竞争状况问题。服务器IO发送终止消息K0,其具有作为路 由键的Z'W及例如服务器IO的标识符0。服务器Il接收终止消息K0。同样,服务器Il发送终 止消息Kl,其具有作为路由键的Z'W及例如服务器Il的标识符1。服务器IO接收终止消息 Klo
[009引使用K0,服务器Il将服务器Il自己的标识符"r与KO的发送者的标识符"0"相比 较。假设在用于数据处理环境中的标识符排序方案中,数值越低优先级越高,则服务器Il断 定服务器IO具有高于服务器11的优先级。因此,服务器11针对Z '从交换524取消绑定其服务 器实例队列,并且更新其内部状态W便停止作为通道Z的发布者。同样,使用Kl,服务器IO将 服务器IO自己的标识符"0"与Ki的发送者的标识符"r相比较。服务器IO断定服务器IO具有 高于服务器Il的优先级。因此,服务器IO保持使用绑定键Z'将其服务器实例队列504绑定到 交换524,并且作为通道Z的发布者维护其内部状态。
[0099] 在配置的时间量之后,服务器IO和服务器Il均检查其内部状态。服务器IO的内部 状态显示它仍然是通道Z的发布者,而服务器Il的内部状态显示它不再是通道Z的发布者。 因此,服务器IO承担通道Z的发布者角色并且开始发布,而服务器Il则不发布。因此,甚至解 决同时的发布者冲突。
[0100] 参考图6,该图示出根据一个示例性实施例的用于发布-订阅系统中的通道所有权 的实例过程的流程图。过程600可W在服务器(例如图3、4或5中的服务器10)中实现,其中修 改服务器W便执行在此描述的操作,或者服务器与实现在此描述的操作的应用结合操作。
[0101] 服务器(例如,服务器实例10)接收来自客户机的订阅请求(方框602)。服务器确定 请求是要订阅通道(例如,通道Z)(方框604)。服务器使用Z作为绑定键,将客户机的会话队 列绑定到交换(方框606)。
[0102] 对于所有其它服务器实例队列,服务器使用发布者(Z)(即Z')作为路由键,在交换 上发布意图发布消息W便强制传送(方框608)。服务器判定意图发布消息是否被传送到任 何服务器实例队列,或者备选地,判定意图发布消息是否因为未传送而返回(方框610)。如 果意图发布消息被传送(即,未返回)(方框610的"是"路径),则服务器此后结束过程600。
[0103] 如果意图发布消息未被传送(即,被返回)(方框610的"否"路径),则服务器使用键 Z'将其服务器实例队列绑定到交换(方框612)。服务器保存信息(例如有关它本身的内部状 态信息),从而指示服务器IO是通道Z的发布者(方框614)。服务器此后结束过程600,或者继 续到图7中的过程700。
[0104] 参考图7,该图示出根据一个示例性实施例的用于解决同时或几乎同时的多个发 布者竞争状况的实例过程的流程图。过程700可W在服务器(例如图3、4或5中的服务器10) 中实现,其中修改服务器W便执行在此描述的操作,或者服务器与实现在此描述的操作的 应用结合操作。
[0105] 服务器(例如,服务器实例10)针对任何其它订阅者服务器实例队列,在交换上发 布终止消息,该消息包含发布者的优先级信息W及作为发布者(Z)(例如,Z')的路由键(方 框702)。服务器从作为通道Z的发布者的任何其它服务器接收任何终止消息并且处理运些 消息(方框704)。在经过一段时间(例如运样的时间段:在其内服务器应该已接收所有可W 出现的终止消息,并且服务器已在终止消息的所有发送者之间建立它自己的相对优先级) 之后,服务器判定服务器是否仍然是通道Z的发布者(方框706)。
[0106] 如果服务器仍然是通道Z的发布者(即,服务器IO在通道Z的所有同时发布者中具 有最高的相对优先级)(方框706的"是"路径),则服务器开始向通道Z发布(方框708)。服务 器此后结束过程700。
[0107] 如果服务器不再是通道Z的发布者(即,服务器IO在通道Z的所有同时发布者中不 具有最高的相对优先级)(方框706的"否"路径),则服务器更新有关服务器自身状态的信息 W便指示服务器不是通道Z的发布者(步骤710)。服务器此后结束过程700。
[0108] 参考图8,该图示出根据一个示例性实施例的用于消除重复发布者的实例过程的 流程图。过程800可W在服务器(例如图3、4或5中的服务器10)中实现,其中修改服务器W便 执行在此描述的操作,或者服务器与实现在此描述的操作的应用结合操作。
[0109] 作为实例通道Z的发布者的服务器(例如,服务器实例10)从也是同一通道的发布 者的另一个服务器(例如,服务器II)接收终止消息(方框802)。服务器W先前描述的方式, 确定服务器IO和服务器Il中的哪一个相对于彼此具有优势或优先级(方框804)。
[0110] 如果服务器确定IO具有优先级(方框806的"10"路径),则服务器设置内部状态W 便指示服务器IO是通道Z的发布者(方框808)。服务器针对任何其它订阅者服务器实例队 列,在交换上发布终止消息,该消息包含发布者的优先级信息W及作为路由键的发布者(Z) (例如,Z')(方框810)。服务器此后结束过程800。W图7中的过程700的方式处理终止消息。
[0111] 如果服务器确定Ii具有优先级(方框806的"ir路径),则服务器作为通道Z的发布 者,从交换取消绑定服务器的服务器实例队列(方框812)。服务器更新内部状态W便指示服 务器IO不是通道Z的发布者(方框814)。服务器此后结束过程800。
[0112] 仅为了使描述清晰而并非作为对示例性实施例的限制,使用某些实例消息描述了 示例性实施例。从本公开,所属技术领域的普通技术人员将认识到,在此描述的示例性实施 例不知道用于在客户机与服务器之间传送请求和响应的特定传输协议,并且运些示例性实 施例可W适合于使用HTTP或其它协议操作,并且在示例性实施例的范围内构想运些操作。
[0113] 因此,在示例性实施例中提供一种用于发布-订阅系统中的通道所有权的计算机 实现的方法、系统或装置W及计算机程序产品。如果针对某种类型的设备描述实施例或其 一部分,则计算机实现的方法、系统或装置、计算机程序产品或其一部分适合于或者被配置 为与该类型设备的合适和相当的表现形式一起使用。
[0114] 本发明可W是系统、方法和/或计算机程序产品。计算机程序产品可W包括计算机 可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0115] 计算机可读存储介质可W是可W保持和存储由指令执行设备使用的指令的有形 设备。计算机可读存储介质例如可W是一但不限于一电存储设备、磁存储设备、光存储设 备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更 具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储 器(ROM)、可擦式可编程只读存储器巧PROM或闪存)、静态随机存取存储器(SRAM)、便携式压 缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存 储有指令的打孔卡或凹槽内凸起结构、W及上述的任意合适的组合。运里所使用的计算机 可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过 波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的 电信号。
[0116] 运里所描述的计算机可读程序指令可W从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外 部存储设备。网络可W包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关 计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计 算机可读程序指令,并转发该计算机可读程序指令,W供存储在各个计算/处理设备中的计 算机可读存储介质中。
[0117] 用于执行本发明操作的计算机可读程序指令可W是汇编指令、指令集架构(ISA) 指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者W-种或多种编程 语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如 Smalltalk^++等,W及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可W完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在设及远程计算机的情形中,远程计算机可W通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可W连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令 的状态信息来个性化电子电路,例如可编程逻辑电路、现场可编程口阵列(FPGA)或可编程 逻辑阵列(PLA),该电子电路可W执行计算机可读程序指令,从而实现本发明的各个方面。
[0118] 运里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框W及流程图和/ 或框图中各方框的组合,都可W由计算机可读程序指令实现。
[0119] 运些计算机可读程序指令可W提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得运些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可W把运些计算机可读程序指令存储在计算机可读存储介质中,运些指 令使得计算机、可编程数据处理装置和/或其它设备W特定方式工作,从而,存储有指令的 计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方 框中规定的功能/动作的各个方面的指令。
[0120] 也可W把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,W产生计算机 实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图 和/或框图中的一个或多个方框中规定的功能/动作。
[0121] 附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在运点上,流程图或框图中的每个方框可W代 表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可 WW不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可W基本并行地执行, 它们有时也可W按相反的顺序执行,运依所设及的功能而定。也要注意的是,框图和/或流 程图中的每个方框、W及框图和/或流程图中的方框的组合,可W用执行规定的功能或动作 的专用的基于硬件的系统来实现,或者可W用专用硬件与计算机指令的组合来实现。
【主权项】
1. 一种用于在发布-订阅数据处理环境中管理通道所有权的方法,所述方法包括: 在第一服务器处,使用处理器和存储器确定来自客户机的订阅请求涉及通道,所述通 道具有通道标识符; 在消息传送中间件内的交换组件处,使得与所述客户机关联的会话队列绑定到所述通 道; 将强制传送消息配置为由所述交换组件使用发布者标识符来路由,所述发布者标识符 与所述通道标识符相关;以及 将所述强制传送消息从所述第一服务器传送到所述交换组件以指示所述第一服务器 要变成所述通道的发布者的意图,其中所述强制传送消息使得所述通道的所述通道所有权 被限于单个发布者。2. 如权利要求1所述的方法,还包括: 响应于所述强制传送消息不可传送到所述消息传送中间件内的任何服务器实例队列, 绑定与所述第一服务器关联的服务器实例队列以便接收由所述交换组件使用所述发布者 标识符路由的任何消息;以及 更新指示符以指示所述第一服务器是所述通道的所述发布者。3. 如权利要求1所述的方法,还包括: 通过使用所述通道标识符作为函数的参数,获得所述发布者标识符。4. 如权利要求1所述的方法,还包括: 将终止消息配置为由所述交换组件使用发布者标识符来路由; 将所述终止消息从所述第一服务器传送到所述交换组件;以及 响应于传送所述终止消息,使得所述交换组件将所述终止消息路由到对应于一组其它 服务器的一组服务器实例队列; 在传送所述终止消息以后的一时段之后,判定所述第一服务器是否仍为所述通道的所 述发布者;以及 响应于所述第一服务器仍为所述通道的所述发布者,开始响应于所述订阅请求而从所 述第一服务器发布内容。5. 如权利要求4所述的方法,还包括: 使用对应于所述第一服务器的优先级信息配置所述终止消息,其中所述优先级信息包 括服务器实例信息,所述服务器实例信息可用于建立所述第一服务器相对于所述通道的第 二服务器的优先级,其中所述第一服务器和所述第二服务器均尝试变成所述通道上的内容 发布者。6. 如权利要求5所述的方法,还包括: 从所述服务器实例信息和所述通道标识符获得对应于所述第一服务器的所述优先级 信息。7. 如权利要求1所述的方法,还包括: 将终止消息配置为由所述交换组件使用发布者标识符来路由; 将终止消息从所述第一服务器传送到所述交换组件;以及 响应于传送所述终止消息,使得所述交换组件将所述终止消息路由到对应于一组其它 服务器的一组服务器实例队列; 在传送所述终止消息以后的一时段之后,判定所述第一服务器是否仍为所述通道的所 述发布者;以及 响应于所述第一服务器不再为所述通道的所述发布者,更新指示符以指示所述第一服 务器不是所述通道的所述发布者。8. 如权利要求1所述的方法,还包括: 在所述第一服务器处接收来自第二服务器的终止消息,所述终止消息根据发布者标识 符被路由并且包括对应于所述第二服务器的优先级信息,并且其中所述第一服务器和所述 第二服务器均尝试变成所述通道上的内容发布者; 通过将来自所述终止消息的对应于所述第二服务器的所述优先级信息与对应于所述 第一服务器的优先级信息相比较,判定所述第一服务器是否仍为所述通道的所述发布者; 以及 响应于优先级高于所述第一服务器的所述第二服务器不再为所述通道的所述发布者, 从所述交换组件取消绑定与所述第一服务器关联的服务器实例队列。9. 如权利要求1所述的方法,还包括: 在所述第一服务器处接收来自第二服务器的终止消息,所述终止消息根据发布者标识 符被路由并且包括对应于所述第二服务器的优先级信息,并且其中所述第一服务器和所述 第二服务器均尝试变成所述通道上的内容发布者; 通过将来自所述终止消息的对应于所述第二服务器的所述优先级信息与对应于所述 第一服务器的优先级信息相比较,判定所述第一服务器是否仍为所述通道的所述发布者; 以及 响应于所述第一服务器具有高于所述第二服务器的优先级,更新指示符以指示所述第 一服务器是所述通道的所述发布者。10. 如权利要求9所述的方法,还包括: 将第二终止消息配置为由所述交换组件使用发布者标识符来路由; 使用对应于所述第一服务器的所述优先级信息配置所述第二终止消息; 将所述第二终止消息从所述第一服务器传送到所述交换组件;以及 响应于传送所述第二终止消息,使得所述交换组件将所述第二终止消息路由到对应于 一组其它服务器的一组服务器实例队列。11. 如权利要求1所述的方法,还包括: 在所述第一服务器处接收所述订阅请求;以及 确定所述订阅请求具有一类型,其中所述类型对应于所述通道。12. 如权利要求1所述的方法,还包括: 在所述第一服务器处接收所述订阅请求;以及 对所述请求中的查询执行散列运算以获得散列值,其中所述散列值对应于所述通道, 并且其中所述类型对应于所述通道。13. 如权利要求1所述的方法,其中在消息传送中间件中所述会话队列与所述客户机唯 一地关联,其中使用所述通道标识符作为绑定键将所述会话队列绑定到所述交换组件,其 中所述发布者标识符形成路由键,并且其中所述交换组件使用所述路由键来路由所述强制 传送消息。14. 一种用于在发布-订阅数据处理环境中管理通道所有权的系统, 所述系统包括被配置为执行权利要求1至13中的任一项所述的方法步骤的装置。15. -种用于在发布-订阅数据处理环境中管理通道所有权的数据处理系统,所述数据 处理系统包括: 存储设备,其中所述存储设备存储计算机可用程序代码;以及 处理器,其中所述处理器执行所述计算机可用程序代码,并且其中所述计算机可用程 序代码包括: 用于在第一服务器处,使用处理器和存储器确定来自客户机的订阅请求涉及通道的计 算机可用代码,所述通道具有通道标识符; 用于在消息传送中间件内的交换组件处,使得与所述客户机关联的会话队列绑定到所 述通道的计算机可用代码; 用于将强制传送消息配置为由所述交换组件使用发布者标识符来路由的计算机可用 代码,所述发布者标识符与所述通道标识符相关;以及 用于将所述强制传送消息从所述第一服务器传送到所述交换组件以指示所述第一服 务器要变成所述通道的发布者的意图的计算机可用代码,其中所述强制传送消息使得所述 通道的所述通道所有权被限于单个发布者。
【文档编号】H04L29/08GK105939335SQ201610124896
【公开日】2016年9月14日
【申请日】2016年3月4日
【发明人】K·B·阿加瓦尔, P·J·博雷尔, A·盖特, M·D·基斯特勒, R·拉贾莫尼
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1