CN105939335B - 发布-订阅数据处理环境中管理通道所有权的方法和*** - Google Patents

发布-订阅数据处理环境中管理通道所有权的方法和*** Download PDF

Info

Publication number
CN105939335B
CN105939335B CN201610124896.3A CN201610124896A CN105939335B CN 105939335 B CN105939335 B CN 105939335B CN 201610124896 A CN201610124896 A CN 201610124896A CN 105939335 B CN105939335 B CN 105939335B
Authority
CN
China
Prior art keywords
server
channel
publisher
termination messages
queue
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.)
Active
Application number
CN201610124896.3A
Other languages
English (en)
Other versions
CN105939335A (zh
Inventor
K·B·阿加瓦尔
P·J·博雷尔
A·盖特
M·D·基斯特勒
R·拉贾莫尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105939335A publication Critical patent/CN105939335A/zh
Application granted granted Critical
Publication of CN105939335B publication Critical patent/CN105939335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及发布‑订阅数据处理环境中管理通道所有权的方法和***。为了在发布‑订阅数据处理环境中管理通道所有权,在第一服务器处确定来自客户机的订阅请求涉及通道,所述通道具有通道标识符。在消息传送中间件内的交换组件处,将与所述客户机关联的会话队列绑定到所述通道。将强制传送消息配置为由所述交换组件使用发布者标识符来路由,所述发布者标识符与所述通道标识符相关。将所述强制传送消息从所述第一服务器传送到所述交换组件,以便指示所述第一服务器要变成所述通道的发布者的意图。所述强制传送消息使得所述通道的所述通道所有权被限于单个发布者。

Description

发布-订阅数据处理环境中管理通道所有权的方法和***
技术领域
本发明一般地涉及用于管理数据请求和响应的方法、***和计算机程序产品。更具体地说,本发明涉及用于发布-订阅***中的通道所有权的方法、***和计算机程序产品。
背景技术
两个数据处理***之间的大部分数据通信都涉及对数据的请求和包含被请求数据的响应。例如,客户机数据处理***通过使用超文本传输协议(http或HTTP)向服务器数据处理***发送请求消息来请求数据。服务器使用HTTP向客户机发送包含数据的响应消息。
客户机可以持续请求数据更新。例如,在使用实时查询型请求的客户机-服务器环境中,客户机基本上从服务器侧或后端数据处理环境订阅数据更新的持续馈送。实时查询(也称为动态查询或连续查询)是客户机用于根据事件或事物状态而请求持续更新的一种方法。
实时查询的一个简单实例是从浏览器对证券报价机的实时股票价格的请求,其中响应于此类查询,服务器向浏览器提供该报价机的不断变化的股票价格的持续更新。为了响应于请求而提供持续更新,服务器通常监视数据库的变化或事件状态的变化。服务器可以通过以下操作监视这些变化:轮询数据库或定期观察事件,以便获得来自数据库中的先前数据的任何变化或来自事件的先前状态的任何变化。
HTTP协议仅支持请求-响应模型,其中客户机发起请求并且服务器响应客户机请求。在标准HTTP模型中,在没有来自客户机的待处理对应请求的情况下,服务器不能将响应推回客户机。在实时查询型发布-订阅***中,服务器直接将内容推回客户机。这种类型的操作可以通过诸如websocket之类的协议实现,该协议支持客户机与服务器之间的双向通信。
在客户机-服务器模型中,其中客户机订阅由服务器生成的此类动态内容馈送,多个服务器可以用于负载平衡。用于支持横向扩展的一种形式的负载平衡是使用独立服务器,其中服务器不知道其它服务器针对相同或不同客户机执行什么操作。在服务器侧数据处理环境中,其中多个独立服务器(它们没有关于彼此的共享状态信息)共同操作以便服务于来自多个客户机的多个请求,可以将来自客户机的对订阅或取消接收此类数据更新的入站请求路由到任意服务器以便处理。
发明内容
示例性实施例提供一种用于发布-订阅***中的通道所有权的方法、***和计算机程序产品。一个实施例包括一种用于在发布-订阅数据处理环境中管理通道所有权的方法。该实施例在第一服务器处,使用处理器和存储器确定来自客户机的订阅请求涉及通道,所述通道具有通道标识符。该实施例在消息传送中间件内的交换组件处,使得与所述客户机关联的会话队列绑定到所述通道。该实施例将强制传送消息配置为由所述交换组件使用发布者标识符来路由,所述发布者标识符与所述通道标识符相关。该实施例将所述强制传送消息从所述第一服务器传送到所述交换组件以指示所述第一服务器要变成所述通道的发布者的意图,其中所述强制传送消息使得所述通道的所述通道所有权被限于单个发布者。
另一个实施例包括一种计算机可用程序产品,其包括计算机可读存储设备,所述计算机可读存储设备包括用于在发布-订阅数据处理环境中管理通道所有权的计算机可用代码。
另一个实施例包括一种数据处理***,其用于在发布-订阅数据处理环境中管理通道所有权。
附图说明
在所附权利要求中说明了被认为是本发明特征的新颖特性。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细描述,将最佳地理解发明本身及其优选使用方式、进一步的目的和优点,这些附图是:
图1示出其中可以实现示例性实施例的数据处理***网络的框图;
图2示出其中可以实现示例性实施例的数据处理***的框图;
图3示出根据一个示例性实施例的用于在发布-订阅客户机-服务器环境中持续发布内容的实例配置的框图;
图4示出根据一个示例性实施例的发布-订阅***中的通道所有权的状况的框图;
图5示出根据一个示例性实施例的用于在发布-订阅***中解决通道所有权问题的配置的框图;
图6示出根据一个示例性实施例的用于发布-订阅***中的通道所有权的实例过程的流程图;
图7示出根据一个示例性实施例的用于解决同时或几乎同时的多个发布者竞争状况的实例过程的流程图;以及
图8示出根据一个示例性实施例的用于消除重复发布者的实例过程的流程图。
具体实施方式
示例性实施例认识到,在其中客户机订阅数据馈送的客户机-服务器环境中,多个服务器可以结束执行浪费资源的重复工作。例如,在此类环境中,可能出现这种情况:响应于来自不同客户机的类似请求,多个服务器可以处理相同数据或事件以便发布相同数据更新或馈送。
示例性实施例进一步认识到,服务器侧的重复工作还在客户机侧造成混淆。例如,在某些情况下,还可能出现这种情况:同一客户机针对同一查询发送请求和再次请求,并且不同服务器结束处理该请求和再次请求。因此,多个服务器可以开始发布重复数据馈送,这可以混淆或中断客户机侧的操作。
用于描述本发明的示例性实施例通常应对和解决上述问题以及与管理数据请求和响应相关的其它问题。示例性实施例针对用于发布-订阅***中的通道所有权的可扩展和自我修复架构提供一种方法、***和计算机程序产品。
在此描述的实施例适合于使用HTTP或其它协议的其它类型请求和响应。在此描述的实施例还适合于不仅与移动设备一起使用,而且还与其它数据处理***和环境(其中可以使用用于客户机-服务器通信的发布-订阅模型)一起使用。
在某些实施例中,请求者***被描述为客户机并且响应***被描述为服务器,而不暗示任何特定的客户机-服务器配置或架构。客户机仅是数据的消费者而服务器仅是数据的供应者,并且在一个交换中作为客户机的***很有可能在另一个交换中是服务器(或后端),反之亦然。通常,服务器在后端数据处理环境中操作,并且通过数据网络从在客户机***处执行的应用被访问。后端数据处理环境(在此也称为服务器侧数据处理环境)包括用于接收数据请求的应用和***、作为响应从中提供数据的数据储存库、其服务在某些请求中被请求的应用、安全应用、中间件应用和平台,以及许多其它***和应用。
一个实施例可以在软件、硬件或固件中实现为应用,以便在后端数据处理环境中操作。在此描述的某些实施例的某些操作可以在服务器中实现,例如通过修改服务器应用以便执行这些操作。通常,在示例性实施例的范围内,一个实施例的操作和功能可以以独立方式实现,或者与在后端数据处理环境中执行的其它应用结合实现。例如,实现一个实施例的应用可以被配置为作为以下各项操作:服务器的修改、消息传送中间件的修改、可由服务器使用的独立应用、可由消息传送中间件使用的独立应用,或者其某种组合。
在操作中,通常,负载共享配置中的数个服务器向多个客户机提供相同类型的服务。根据一个实施例,在此类发布-订阅客户机-服务器架构中操作的每个负载共享服务器能够建立通道、向该通道发布内容(包括持续更新),以及绑定客户机以便监听在通道上发布的内容。
服务器基于来自客户机的查询或请求类型(以下称为“查询”)建立通道。基本上,在示例性实施例的范围内,通道仅是在查询与发布的内容之间建立对应性的一种方式。例如,假设查询具有标识符。服务器使用查询标识符作为通道标识符。向通道发布内容包括使用标识符标识内容,以使得监听该通道的客户机可以在查询与内容之间建立对应性。
在一个实施例中,请求消息指定查询标识符,并且服务器使用指定查询的指定标识符作为通道标识符。在另一个实施例中,请求消息指定查询,并且服务器使用合适的方法确定指定查询的标识符,例如通过生成查询的散列值或者通过在目录中查找查询。服务器然后使用确定的查询标识符作为通道标识符。
服务器然后可以绑定请求客户机以便监听在通道上发布的更新。绑定到通道的客户机接收在该通道上发布的内容,而不必轮询或者发送对内容的请求。如将在本公开中描述的,消息传送中间件维护客户机的会话队列。将客户机绑定到通道包括配置中间件中的路径,以使得可以将随通道标识符发布的内容放在客户机的会话队列中。
客户机通过向后端数据处理环境发送握手消息,发起数据通信会话。后端数据处理环境实现一个或多个代理应用,所述代理应用之一针对会话建立会话标识符并且响应客户机的握手消息。对于客户机与后端之间的其余数据通信,预期客户机使用该会话标识符。
使用该会话标识符,客户机向后端数据处理环境发送请求,例如对数据和持续更新的请求。代理从消息头确定请求中的查询。例如,一个请求可以询问数据库服务,其中作为响应,数据库必须提供有关某些不断变化的数据的更新。作为另一个实例,另一个请求可以询问新闻或股票馈送服务,其中服务器应用可能必须访问数据源以便获得和供应该数据和更新。作为另一个实例,请求可以询问通知服务,其中当检测到事件的变化时,后端应用必须供应该事件的信息。许多其它类型的服务同样可以是请求消息中的查询的主题。
面向消息的中间件是使两个或更多应用能够经由消息队列(MQ)彼此通信的任何合适的应用。各种面向消息的中间件(在此也称为消息传送中间件或MQ中间件)目前可用并且用于后端数据处理环境中。MQ-Series和RabbitMQ是可以从市面上购买的消息传送中间件的一些实例,它们促进应用之间的此类通信(MQ-Series是国际商业机器公司在美国和其它国家的商标,RabbitMQ是Pivotal Software,Inc.在Mozilla公共许可证下分发的开源软件)。
消息传送中间件允许一个或多个应用在消息队列中发布用于一个或多个其它应用的一个或多个消息。其它应用订阅该队列。当向该队列发布消息时,队列的所有订阅者或订阅者子集可以接收发布的消息。通过归属于队列的策略的组合以及通过消息内容本身,确定接收消息的订阅者子集。
一个或多个代理应用的集合维护一组服务队列。所述一组服务队列中的服务队列被配置为接收仅具有特定查询的请求的发布。例如,一个服务队列可以与监视数据库中的特定数据关联,另一个服务队列可以与新闻馈送服务关联,并且另一个服务队列可以与监视事件关联。
根据在请求消息查询中被请求的服务,代理向与该服务关联的服务队列发布请求。提供被请求服务的那些服务器或后端应用订阅该服务的服务队列。订阅者后端应用之一从服务队列中接收请求。该订阅者后端应用处理请求并且产生具有被请求内容的响应。
代理判定是否已经在消息传送中间件中创建请求者客户机的会话队列。服务器可以使用会话队列发布必须传送到客户机的响应。每当服务器或后端应用具有要发送到客户机的数据时,服务器或后端应用向客户机的会话队列发布该数据。客户机是会话队列的最终订阅者,其中代理充当将转发消息的中介。当向会话队列发布数据时,订阅客户机经由代理接收该数据。
在某些情况下,服务器可以创建会话队列并且向队列发布响应以便传送到客户机。为了避免针对同一客户机创建同一会话的多个会话队列,在代理创建会话队列之前,代理检查是否已经针对客户机和会话存在会话队列。如果会话队列已经存在,则代理仅绑定到现有会话队列。
因此,多个代理可以绑定到同一会话队列。当服务器或后端应用向会话队列发布响应时,绑定到队列的任何一个代理可以向订阅客户机发送发布的响应。
当订阅客户机在队列超时期限内未访问会话队列时,一个实施例清除队列和其中的剩余消息。如果向会话队列发布消息,并且订阅客户机未获得或接收发布的消息,则消息超时计时器从会话队列中清除该发布的消息。
在消息传送中间件中,每个服务器还维护服务器实例队列。服务器实例队列用于服务器之间的通信。服务器之间的此类内部通信不维护有关彼此的任何状态信息。
在上述架构中,交换是消息传送中间件功能。交换包括用于将消息路由到队列的逻辑。服务器向交换发布消息以便向一个或多个队列发布消息。
例如,服务器通过向交换发布具有通道信息的内容来向通道发布内容,并且交换将通道的内容路由到以下这些会话队列:它们绑定到交换以便使用针对该通道的消息。作为另一个实例,服务器通过向交换发布具有通道信息的发布者消息,指示它本身是通道的发布者,并且交换将与通道相关的发布者消息路由到服务器实例队列,如本公开中描述的那样。作为另一个实例,服务器通过向交换发布具有通道信息的终止消息(kill message),尝试使它本身变成通道的唯一发布者或主要发布者,并且交换将与通道相关的终止消息路由到服务器实例队列,如本公开中描述的那样。
在具有该架构的情况下,一个实施例从客户机中接收订阅请求。该实施例确定请求涉及特定通道,例如通道Z。如果多个客户机以这种方式请求同一查询,则多个客户机可以是通道Z的请求订阅。
代理根据请求中的查询,对合适的服务队列中的请求进行排队。从处理该查询的一组服务器,服务器实例(例如,服务器I0)从服务队列中获得请求。服务器I0将请求客户机的会话队列与通道Z的交换相绑定。换言之,当服务器I0向交换发布通道Z上的内容时,交换将通道Z内容路由和存储在客户机的会话队列中。如果多个客户机订阅通道Z,则交换以类似方式将在通道Z上发布的内容路由和存储到每个此类订阅客户机的会话队列。
一个实施例进一步操作以便确保服务器I0是在通道Z上发布的唯一或主要服务器,从而避免先前描述的重复工作问题。当多个服务器看似要向同一通道进行发布时,另一个实施例操作以便从多个发布服务器选择主要服务器,从而避免重复工作问题。
当实现在此描述的一个实施例的一种方法以便在设备或数据处理***上执行时,该方法包括该设备或数据处理***在管理数据请求和响应方面的功能的实质进展。例如,为了管理客户机-服务器通信,现有技术允许服务器侧的重复和浪费性工作的可能性。相比之下,一个实施例配置和操作发布-订阅客户机-服务器架构,其中负载共享服务器可以避免服务器侧的重复工作并且避免向客户机同时发布重复内容,同时保持相对于彼此的无状态。发布-订阅环境中这种方式的数据请求管理不可用于目前提供的设备或数据处理***。因此,通过执行一个实施例的方法的此类设备或数据处理***的实质进展允许可扩展的无状态后端环境,这明显降低向客户机发布数据和数据更新的浪费性重复服务器资源消耗。
仅作为实例,针对特定架构、中间件、协议、消息、标识符、网络、参数、超时、条件、设备、数据处理***、环境、组件和应用描述示例性实施例。这些和其它类似构件的任何特定表现形式并非旨在是本发明的限制。可以在示例性实施例的范围内选择这些和其它类似构件的任何合适的表现形式。
此外,可以针对任何类型的数据、数据源或通过数据网络对数据源的访问,实现示例性实施例。在本发明的范围内,任何类型的数据存储设备可以在数据处理***本地或者通过数据网络,向本发明的一个实施例提供数据。在本发明的范围内,如果使用移动设备描述一个实施例,则适合于与该移动设备一起使用的任何类型的数据存储设备可以在所述移动设备本地或者通过数据网络,向此类实施例提供数据。
仅作为实例并且不作为示例性实施例的限制,使用特定代码、设计、架构、协议、布局、示意图和工具描述所述示例性实施例。此外,仅作为实例以使描述清晰起见,在某些情况下使用特定软件、工具和数据处理环境描述所述示例性实施例。所述示例性实施例可以与其它相当或具有同样目的的结构、***、应用或架构结合使用。例如,在本发明的范围内,其它相当移动设备、结构、***、应用或其架构可以与本发明的此类实施例结合使用。示例性实施例可以以硬件、软件或其组合实现。
本公开中的实例仅用于使描述清晰,并且并非是示例性实施例的限制。可以从本公开构想其它数据、操作、动作、任务、活动和操纵,并且在示例性实施例的范围内构想它们。
在此列出的任何优点仅是实例,并且并非旨在限制示例性实施例。可以通过特定示例性实施例实现其它或不同优点。此外,特定示例性实施例可以具有上面列出的部分、全部优点或者没有其中任何优点。
参考附图并且具体参考图1和2,这些图是其中可以实现示例性实施例的数据处理环境的实例图。图1和2仅是实例,并且并非旨在断言或暗示有关其中可以实现不同实施例的环境的任何限制。基于以下描述,特定实现可以对示出的环境做出许多修改。
图1示出其中可以实现示例性实施例的数据处理***网络的框图。数据处理环境100是其中可以实现示例性实施例的计算机网络。数据处理环境100包括网络102。网络102是用于在数据处理环境100中连接在一起的各种设备与计算机之间提供通信链路的介质。网络102可以包括连接,例如有线、无线通信链路或光缆。
客户机或服务器仅是连接到网络102的某些数据处理***的实例角色,并且并非旨在排除这些数据处理***的其它配置或角色。服务器104和服务器106连同存储单元108耦合到网络102。软件应用可以在数据处理环境100中的任何计算机上执行。客户机110、112和114也耦合到网络102。诸如服务器104或106或客户机110、112或114之类的数据处理***可以包含数据,并且可以具有在其上执行的软件应用或软件工具。
仅作为实例并且不暗示对此类架构的任何限制,图1示出可用于一个实施例的实例实现中的某些组件。例如,仅作为实例并且不暗示对客户机-服务器架构的限制,服务器104和106以及客户机110、112、114被示为服务器和客户机。作为另一个实例,在示例性实施例的范围内,一个实施例可以跨如图所示的数个数据处理***和一个数据网络分布,而另一个实施例可以在单个数据处理***上实现。数据处理***104、106、110、112和114还表示群集中的实例节点、分区,以及适合于实现一个实施例的其它配置。
设备132是在此描述的设备的一个实例。例如,设备132可以采用以下形式:智能电话、平板计算机、膝上型计算机、固定或便携形式的客户机110、可佩戴计算设备,或者任何其它合适的设备。描述为在图1中的另一个数据处理***中执行的任何软件应用可以被配置为以类似方式在设备132中执行。在图1中的另一个数据处理***中存储或产生的任何数据或信息可以被配置为以类似方式在设备132中存储或产生。服务器104中的后端应用105包括任何应用,包括但不限于服务器应用或服务应用,其对应于来自客户机应用的请求。设备132是客户机的一个非限制性实例,并且设备132中的浏览器134是客户机应用的一个非限制性实例。客户机114中的请求者应用115是客户机应用的另一个实例。请求者应用115或浏览器134发送请求,后端应用105响应该请求。服务器106中的一个或多个代理应用107从客户机应用115或134接收请求,根据被请求服务的类型对请求进行排队,创建会话队列,并且将响应传递到客户机应用115或134,如本公开中的其他部分描述的那样。消息传送中间件111以本公开中描述的方式,提供排队和发布-订阅功能。例如,消息传送中间件111促进队列113的创建和操作。队列113中的一个队列可以是服务队列(未示出),队列113中的另一个队列可以是会话队列(未示出),并且队列113中的另一个队列可以是服务器实例队列(未示出)。消息传送中间件111还实现交换功能(未示出),这可以以本公开中描述的方式使用。在示例性实施例的范围内,与一个实施例结合操作的服务器或服务器实例包括后端应用105。一个实施例可以在后端应用105中实现或者与其结合实现,在消息传送中间件111中实现或者与其结合实现,作为另一个应用(未示出)实现,或者作为其某种组合实现。
服务器104和106、存储单元108以及客户机110、112和114可以使用有线连接、无线连接协议或其它合适的数据连接来耦合到网络102。客户机110、112和114例如可以是个人计算机或网络计算机。
在示出的实例中,服务器104可以向客户机110、112和114提供数据,例如引导文件、操作***映像和应用。在该实例中,客户机110、112和114可以是服务器104的客户机。客户机110、112、114或其某种组合可以包括它们自己的数据、引导文件、操作***映像和应用。数据处理环境100可以包括其它服务器、客户机和其它未示出的设备。
在示出的实例中,数据处理环境100可以是因特网。网络102可以代表使用传输控制协议/网际协议(TCP/IP)和其它协议来相互通信的网络和网关的集合。在因特网的核心是主节点或主机之间的数据通信链路的主干,它包括数以千计的商业、政府、教育以及其它路由数据和消息的计算机***。当然,数据处理环境100也可以实现为许多不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为一个实例,并非旨在作为对不同示例性实施例的架构限制。
在其它使用中,数据处理环境100可以用于实现客户机-服务器环境,其中可以实现示例性实施例。客户机-服务器环境使软件应用和数据能够跨网络分布,以使得应用通过使用客户机数据处理***与服务器数据处理***之间的交互来执行功能。数据处理环境100还可以被视为采用面向服务的架构,其中跨网络分布的可互操作软件组件可以共同打包作为一致的业务应用。
参考图2,该图示出其中可以实现示例性实施例的数据处理***的框图。数据处理***200是诸如图1中的服务器104或客户机110之类的计算机的一个实例,或者是另一种类型的设备,其中可以具有实现示例性实施例的过程的计算机可用程序代码或指令。
数据处理***200还表示数据处理***或其中的配置,例如图1中的设备132,其中可以具有实现示例性实施例的过程的计算机可用程序代码或指令。仅作为实例而并非限于此,数据处理***200被描述为计算机。采取其它设备(例如图1中的设备132)形式的实现可以修改数据处理***200(例如通过添加触摸界面),并且甚至从数据处理***200移除某些示出的组件而不偏离在此描述的数据处理***200的操作和功能的一般描述。
在示出的实例中,数据处理***200采用集线器架构,包括北桥及存储控制器集线器(NB/MCH)202和南桥及输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210耦合到北桥及存储控制器集线器(NB/MCH)202。处理单元206可以包含一个或多个处理器,并且可以使用一个或多个异构处理器***实现。处理单元206可以是多核处理器。在某些实现中,图形处理器210可以通过图形加速端口(AGP)耦合到NB/MCH202。
在示出的实例中,局域网(LAN)适配器212耦合到南桥及I/O控制器集线器(SB/ICH)204。音频适配器216、键盘及鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)及其它端口232以及PCI/PCIe设备234通过总线238耦合到南桥及I/O控制器集线器204。硬盘驱动器(HDD)或固态驱动器(SSD)226和CD-ROM 230通过总线240耦合到南桥及I/O控制器集线器204。PCI/PCIe设备234例如可以包括以太网适配器、附加卡,以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM 224例如可以是闪存二进制输入/输出***(BIOS)。硬盘驱动器或固态驱动器226和CD-ROM 230例如可以使用集成驱动电子设备(IDE)、串行高级技术附件(SATA)接口,或者诸如外部SATA(eSATA)和微SATA(mSATA)之类的变体。超级I/O(SIO)设备236可以通过总线238耦合到南桥及I/O控制器集线器(SB/ICH)204。
诸如主存储器208、ROM 224或闪存(未示出)之类的存储器是计算机可用存储设备的一些实例。硬盘驱动器或固态驱动器226、CD-ROM 230和其它同样可用设备是包括计算机可用存储介质的计算机可用存储设备的一些实例。
操作***在处理单元206上运行。操作***协调和提供对图2中的数据处理***200中的各个组件的控制。操作***可以是可从市面上购买的操作***,例如(AIX是国际商业机器公司在美国和其它国家的商标)、(Microsoft和Windows是微软公司在美国和其它国家的商标)、(Linux是Linus Torvalds在美国和其它国家的商标)、iOSTM(iOS是授权给Apple Inc.的Cisco Systems,Inc.在美国和其它国家的商标)或AndroidTM(Android是Google Inc.在美国和其它国家的商标)。诸如JavaTM编程***之类的面向对象的编程***可以与操作***结合运行,并且从在数据处理***200上执行的JavaTM程序或应用提供对操作***的调用(Java以及所有基于Java的商标及标识都是Oracle公司和/或其关联公司的商标或注册商标)。
用于操作***、面向对象的编程***以及应用或程序(例如图1中的代理107、后端应用105或消息传送中间件111)的指令位于诸如硬盘驱动器226或固态数据存储设备之类的存储设备上,并且可以加载到一个或多个存储器的至少一个(例如主存储器208)中以便由处理单元206执行。示例性实施例的过程可以由处理单元206使用计算机实现的指令执行,计算机实现的指令可以位于诸如主存储器208、只读存储器224之类的存储器中,或者位于一个或多个***设备中。
图1-2中的硬件可以根据实现而有所不同。除了图1-2中所示的硬件或替代图1-2中所示的硬件,还可以使用其它内部硬件或***设备,例如闪存、等效非易失性存储器或光盘驱动器等。此外,示例性实施例的过程可以应用于多处理器数据处理***。
在某些示例性实例中,数据处理***200可以是移动计算设备,其通常被配置有闪存以提供非易失性存储器以便存储操作***文件和/或用户生成的数据。总线***可以包括一个或多个总线,例如***总线、I/O总线和PCI总线。当然,总线***可以使用任何类型的通信结构或架构实现,该结构或架构用于在连接到结构或架构的不同组件或设备之间传输数据。
通信单元可以包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。存储器例如可以是主存储器208或高速缓存,例如在北桥及存储控制器集线器202中发现的高速缓存。处理单元可以包括一个或多个处理器或CPU。
图1-2中的所示实例和上述实例并非旨在暗示架构限制。例如,除了采用移动或可佩戴设备形式之外,数据处理***200还可以是平板计算机、膝上型计算机或电话设备。
参考图3,该图示出根据一个示例性实施例的用于在发布-订阅客户机-服务器环境中持续发布内容的实例配置的框图。将客户机侧302与服务器侧304分开的虚线表示数据网络,例如图1中的网络102。客户机侧302表示数据请求者,例如客户机应用306(客户机应用在此也互换称为“客户机”)。客户机应用306是图1中的浏览器134或请求者应用115的一个实例。
服务器侧304表示服务器侧数据处理环境,其中运行响应客户机请求中的查询的后端应用和服务器,以及用于支持其功能的其它服务器侧架构组件。示出一组代理(数个)308作为一个示例。代理308的一个实例是图1中的代理107的一个示例。可选地,可以采用负载平衡器(未示出)或另一种合适的分配方法在数个代理308之间分配来自客户机侧302的入站请求。
消息传送中间件312是图1中的消息传送中间件111的一个实例。服务器314包括一组服务器、服务器应用或后端应用,它们提供在某些客户机请求中请求的特定服务。作为一个非限制性实例,服务器314可以作为冗余或负载共享服务器操作,以便提供用于处理与通道Z关联的特定类型查询的数据库服务。同样可以在服务器侧304配置其它多组服务器(未示出),以便以类似方式提供与其它查询和请求关联的其它服务。
服务队列316保存以下这些客户机请求:它们请求服务器314中的服务器实例所提供的服务。例如,客户机应用306和其它客户机应用(未示出)可以发送对数据库中的某些数据的订阅请求。代理308中的代理接收一个此类请求,标识被请求服务,确定服务队列316与被请求服务关联,并且在服务队列316中发布请求。服务器314订阅服务队列316。服务器314中的服务器检测到向服务队列316发布订阅请求,并且从服务队列316删除该请求以便处理。
注意,每个服务器314以无状态方式操作。换言之,服务器314中的服务器不维护任何会话或状态信息以便与任何特定客户机应用或另一个服务器具有任何特定亲和性。服务器314中的服务器简单地从服务队列316接收订阅请求并且处理该请求。接收的请求可以来自在任何客户机数据处理***中执行的任何客户机应用。
在操作中,客户机应用306首先向服务器侧304发送订阅请求320。订阅请求320请求对应于通道(例如,通道Z)的查询。代理308将请求320排队到服务队列316中。服务器314中的服务器实例I0接收请求320。
在消息318中,服务器I0使用通道Z在交换324上发布内容,并且还将客户机306的会话队列326绑定到交换324作为通道Z的消费者。作为一个实例,服务器I0通过使用具有消息318的路由键(routing key)在交换324上发布消息318,其中将路由键设置为通道标识符,在此处的实例中通道标识符是Z。
假设会话队列326与客户机306关联。交换324将会话队列326绑定到通道Z。交换324可以以类似方式将会话队列326绑定到客户机306的任意数量的不同通道。同样,交换324可以以类似方式将与任意数量的不同客户机关联的任意数量的会话队列绑定到通道Z和/或任意数量的不同通道。
假设出于服务器I0是通道Z上的唯一发布者的图3的目的,服务器I0向通道Z发布或连续发布内容。交换324将通道Z的发布的内容路由到会话队列326,代理308中的代理将该内容传送到客户机306作为发布的内容322。
参考图4,该图示出根据一个示例性实施例的发布-订阅***中的通道所有权的状况的框图。具有来自图3的重用参考标号的所示构件是与针对图3所述的相同构件。
如针对图3描述的,在一个时间点,服务器I0已变成通道Z上的发布者,并且客户机306经由会话队列326订阅通道Z。现在,假设另一个客户机(客户机406)发送订阅请求420。代理308中的代理在服务队列316中对请求420进行排队以便服务器314之一获得该请求。因为任何服务器314可以潜在地从服务队列316获得请求并且处理该请求,所以假设服务器实例I1从服务队列316接收请求420并且删除该请求。
为了例示发布-订阅***中的可能通道所有权问题,假设请求420还涉及来自图3中的客户机306的请求320中的同一查询。因此,请求420也对应于通道Z。因为服务器314无状态,所以服务器I1没有用于知晓以下情况的信息:由于消息320,服务器I0已经是通道Z的发布者。因此,在消息418中,服务器I1在通道Z的交换324上发布内容,并且还将客户机406的会话队列426绑定到通道Z的交换324。作为一个实例,服务器I1通过使用具有消息418的路由键在交换324上发布消息418,其中将路由键设置为通道标识符,在此处的实例中通道标识符是Z。因此,交换324将会话队列426绑定到通道Z。
现在,会话队列326和426被绑定到通道Z。因为服务器I0先前已由于客户机消息320而变成通道Z的发布者,所以服务器I0继续向通道Z发布,并且通道Z的订阅者接收服务器I0向通道Z的发布。因为服务器I1已由于客户机消息320而变成通道Z的发布者,所以服务器I1也继续向通道Z发布,并且通道Z的订阅者接收服务器I1向通道Z的发布。
如可以看到的,服务器I0或I1所不知道的是,两个服务器花费资源以便计算通道Z的查询并且向通道Z发布相同的结果内容。通道Z的订阅者因此接收重复内容—一个由服务器I0发布并且另一个由服务器I1发布。
参考图5,该图示出根据一个示例性实施例的用于在发布-订阅***中解决通道所有权问题的配置的框图。具有来自图3和4的重用参考标号的所示构件是与针对图3所述的相同构件。
根据一个实施例,每个服务器314在服务器实例队列502中具有对应的服务器实例队列。例如,服务器实例队列504对应于服务器I0。
交换524以交换324的方式操作并且进一步针对图5描述。当服务器I0变成通道Z的发布者时,服务器I0还将服务器实例队列504与交换524相绑定(506),以便接收具有发布者(Z)作为键的消息。发布者(Z)仅是应用于通道标识符Z的已知服务器侧功能的替代者,例如以便产生标识符Z’。Z’通过某种功能“发布者”对应于通道Z。基本上,当服务器I0使用路由键Z向交换524发送消息时,交换524将这些消息路由到使用绑定键Z绑定到交换524的任何订阅客户机会话队列。当服务器I0使用路由键Z’向交换524发送消息时,交换524将这些消息路由到使用绑定键Z’绑定到交换524的任何订阅服务器实例队列。当用于从任何服务器314到交换524的路由上下文中时,发布者(Z)在此也称为“通道标识符Z的发布者”或Z’。
现在,作为绑定506的结果,交换524在队列502中具有至少一个服务器实例队列,该服务器实例队列订阅具有通道标识符Z的发布者(即Z’)作为键的消息,并且其中可以传送如在此所述具有Z’作为键的某些强制传送消息。强制传送消息是这样的消息:其必须传送到通道的至少一个接收者或订阅者队列,否则必须由消息传送中间件返回到发送者。
一种类型的强制传送消息是具有Z’作为路由键的“意图变成发布者”消息(在此也称为“发布者消息”),服务器314中的服务器实例可以将该消息发送到交换。如果任意服务器实例队列订阅接收具有Z’作为路由键的消息,则将发布者消息传送到该其它服务器实例队列,否则将发布者消息返回到发送者服务器实例。
例如,当服务器I0确定服务器I0应该变成通道Z的发布者时,服务器I0发送路由键为Z’的意图变成发布者消息,交换将消息传送到已订阅接收具有Z’作为路由键的消息的任何其它服务器实例队列。如果未使用绑定键Z’将此类其它服务器实例队列绑定到交换,则交换将意图变成发布者消息返回到服务器I0。
如果将意图变成发布者消息传送到某个订阅者队列,则传送用作向服务器I0的指示,该指示表明具有作为通道Z的发布者的另一个服务器。服务器I0然后让位于现有发布者服务器。
如果未将意图变成发布者消息传送到任何订阅者队列,则交换524将发布者消息返回到服务器I0。失败的传送用作向服务器I0的指示,该指示表明没有作为通道Z的发布者的另一个服务器。服务器I0然后作为通道Z的发布者,使用绑定键Z’将服务器I0的服务器实例队列504绑定到交换524,并且还更新服务器I0中的内部指示符以便指示服务器I0是通道Z的发布者。
意图变成发布者消息设法解决通道的现有发布者服务器与尝试变成同一通道的发布者服务器的另一个服务器之间的冲突。但是,在某些情况下,当没有现有发布者服务器但两个或更多服务器同时或几乎同时尝试变成同一通道的发布者时,可能出现竞争状况。仅使用意图变成发布者消息未有效解决此类同时或几乎同时的冲突。
另一种类型的强制传送消息是具有通道标识符的发布者(例如,Z’)作为路由键的终止消息,服务器314中的服务器实例可以将该消息发送到交换。终止消息还包括发送者服务器的某些信息,以使得相对于接收者服务器的优先级,可以建立发送者服务器的优先级。如果任意服务器实例队列订阅接收具有该通道标识符的发布者(例如,Z’)作为路由键的消息,则将终止消息传送到该其它服务器实例队列,否则将终止消息返回到发送者服务器实例。例如,如果服务器I0发送具有Z’作为路由键的终止消息,则交换将消息传送到已订阅接收具有Z’作为路由键的消息的任何服务器实例队列。如果未针对Z’键将此类其它服务器实例队列绑定到交换,则交换将终止消息返回到服务器I0。
在示例性实施例的范围内,可以在终止消息中使用服务器的任何合适的信息,该信息可用于建立两个服务器的相对优先级。例如并且不暗示对此的任何限制,一种此类信息可以是服务器的标识符。不同服务器具有不同标识符,并且服务器标识符的某种排序可以用于确定服务器1具有高于服务器2的优先级,例如因为1是低于2的数值,或者反之亦然。同样,不同服务器可以具有不同优先级、寿命、在数据处理环境中的位置、可用容量、利用率以及许多其它类型的信息,可以在两个服务器之间比较这些信息以便确定哪个服务器在给定时间具有较高优先级。可以在示例性实施例的范围内使用特定于服务器并且可用于建立服务器相对于另一个服务器的优先级的任何信息。
在服务器变成通道的发布者之后,存在另一个服务器也同时变成同一通道的发布者的可能性,如上所述。为了避免此类同时冲突,发布者服务器发送终止消息。
假设服务器I0和服务器I1同时或几乎同时尝试变成通道Z的发布者。服务器I0和I1已几乎同时向交换发送意图变成发布者消息。这些消息返回到对应的服务器,从而指示没有通道的现有发布者。服务器I0和I1然后均更新其内部状态以便指示它们本身作为通道的发布者。但是在承担发布者的角色并且开始在通道上发布的实际任务之前,服务器I0和服务器I1发送终止消息以便避免竞争状况问题。服务器I0发送终止消息K0,其具有作为路由键的Z’以及例如服务器I0的标识符0。服务器I1接收终止消息K0。同样,服务器I1发送终止消息K1,其具有作为路由键的Z’以及例如服务器I1的标识符1。服务器I0接收终止消息K1。
使用K0,服务器I1将服务器I1自己的标识符“1”与K0的发送者的标识符“0”相比较。假设在用于数据处理环境中的标识符排序方案中,数值越低优先级越高,则服务器I1断定服务器I0具有高于服务器I1的优先级。因此,服务器I1针对Z’从交换524取消绑定其服务器实例队列,并且更新其内部状态以便停止作为通道Z的发布者。同样,使用K1,服务器I0将服务器I0自己的标识符“0”与K1的发送者的标识符“1”相比较。服务器I0断定服务器I0具有高于服务器I1的优先级。因此,服务器I0保持使用绑定键Z’将其服务器实例队列504绑定到交换524,并且作为通道Z的发布者维护其内部状态。
在配置的时间量之后,服务器I0和服务器I1均检查其内部状态。服务器I0的内部状态显示它仍然是通道Z的发布者,而服务器I1的内部状态显示它不再是通道Z的发布者。因此,服务器I0承担通道Z的发布者角色并且开始发布,而服务器I1则不发布。因此,甚至解决同时的发布者冲突。
参考图6,该图示出根据一个示例性实施例的用于发布-订阅***中的通道所有权的实例过程的流程图。过程600可以在服务器(例如图3、4或5中的服务器I0)中实现,其中修改服务器以便执行在此描述的操作,或者服务器与实现在此描述的操作的应用结合操作。
服务器(例如,服务器实例I0)接收来自客户机的订阅请求(方框602)。服务器确定请求是要订阅通道(例如,通道Z)(方框604)。服务器使用Z作为绑定键,将客户机的会话队列绑定到交换(方框606)。
对于所有其它服务器实例队列,服务器使用发布者(Z)(即Z’)作为路由键,在交换上发布意图发布消息以便强制传送(方框608)。服务器判定意图发布消息是否被传送到任何服务器实例队列,或者备选地,判定意图发布消息是否因为未传送而返回(方框610)。如果意图发布消息被传送(即,未返回)(方框610的“是”路径),则服务器此后结束过程600。
如果意图发布消息未被传送(即,被返回)(方框610的“否”路径),则服务器使用键Z’将其服务器实例队列绑定到交换(方框612)。服务器保存信息(例如有关它本身的内部状态信息),从而指示服务器I0是通道Z的发布者(方框614)。服务器此后结束过程600,或者继续到图7中的过程700。
参考图7,该图示出根据一个示例性实施例的用于解决同时或几乎同时的多个发布者竞争状况的实例过程的流程图。过程700可以在服务器(例如图3、4或5中的服务器I0)中实现,其中修改服务器以便执行在此描述的操作,或者服务器与实现在此描述的操作的应用结合操作。
服务器(例如,服务器实例I0)针对任何其它订阅者服务器实例队列,在交换上发布终止消息,该消息包含发布者的优先级信息以及作为发布者(Z)(例如,Z’)的路由键(方框702)。服务器从作为通道Z的发布者的任何其它服务器接收任何终止消息并且处理这些消息(方框704)。在经过一段时间(例如这样的时间段:在其内服务器应该已接收所有可以出现的终止消息,并且服务器已在终止消息的所有发送者之间建立它自己的相对优先级)之后,服务器判定服务器是否仍然是通道Z的发布者(方框706)。
如果服务器仍然是通道Z的发布者(即,服务器I0在通道Z的所有同时发布者中具有最高的相对优先级)(方框706的“是”路径),则服务器开始向通道Z发布(方框708)。服务器此后结束过程700。
如果服务器不再是通道Z的发布者(即,服务器I0在通道Z的所有同时发布者中不具有最高的相对优先级)(方框706的“否”路径),则服务器更新有关服务器自身状态的信息以便指示服务器不是通道Z的发布者(步骤710)。服务器此后结束过程700。
参考图8,该图示出根据一个示例性实施例的用于消除重复发布者的实例过程的流程图。过程800可以在服务器(例如图3、4或5中的服务器I0)中实现,其中修改服务器以便执行在此描述的操作,或者服务器与实现在此描述的操作的应用结合操作。
作为实例通道Z的发布者的服务器(例如,服务器实例I0)从也是同一通道的发布者的另一个服务器(例如,服务器I1)接收终止消息(方框802)。服务器以先前描述的方式,确定服务器I0和服务器I1中的哪一个相对于彼此具有优势或优先级(方框804)。
如果服务器确定I0具有优先级(方框806的“I0”路径),则服务器设置内部状态以便指示服务器I0是通道Z的发布者(方框808)。服务器针对任何其它订阅者服务器实例队列,在交换上发布终止消息,该消息包含发布者的优先级信息以及作为路由键的发布者(Z)(例如,Z’)(方框810)。服务器此后结束过程800。以图7中的过程700的方式处理终止消息。
如果服务器确定I1具有优先级(方框806的“I1”路径),则服务器作为通道Z的发布者,从交换取消绑定服务器的服务器实例队列(方框812)。服务器更新内部状态以便指示服务器I0不是通道Z的发布者(方框814)。服务器此后结束过程800。
仅为了使描述清晰而并非作为对示例性实施例的限制,使用某些实例消息描述了示例性实施例。从本公开,所属技术领域的普通技术人员将认识到,在此描述的示例性实施例不知道用于在客户机与服务器之间传送请求和响应的特定传输协议,并且这些示例性实施例可以适合于使用HTTP或其它协议操作,并且在示例性实施例的范围内构想这些操作。
因此,在示例性实施例中提供一种用于发布-订阅***中的通道所有权的计算机实现的方法、***或装置以及计算机程序产品。如果针对某种类型的设备描述实施例或其一部分,则计算机实现的方法、***或装置、计算机程序产品或其一部分适合于或者被配置为与该类型设备的合适和相当的表现形式一起使用。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的不同实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (15)

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.一种用于在发布-订阅数据处理环境中管理通道所有权的数据处理***,所述数据处理***包括:
存储设备,其中所述存储设备存储计算机可用程序代码;以及
处理器,其中所述处理器执行所述计算机可用程序代码,并且其中所述计算机可用程序代码包括:
用于在第一服务器处,使用处理器和存储器确定来自客户机的订阅请求涉及通道的计算机可用代码,所述通道具有通道标识符;
用于在消息传送中间件内的交换组件处,使得与所述客户机关联的会话队列绑定到所述通道的计算机可用代码;
用于将强制传送消息配置为由所述交换组件使用发布者标识符来路由的计算机可用代码,所述发布者标识符与所述通道标识符相关;以及
用于将所述强制传送消息从所述第一服务器传送到所述交换组件以指示所述第一服务器要变成所述通道的发布者的意图的计算机可用代码,其中所述强制传送消息使得所述通道的所述通道所有权被限于单个发布者。
CN201610124896.3A 2015-03-05 2016-03-04 发布-订阅数据处理环境中管理通道所有权的方法和*** Active CN105939335B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/639383 2015-03-05
US14/639,383 US9800648B2 (en) 2015-03-05 2015-03-05 Channel ownership in a publish-subscribe system

Publications (2)

Publication Number Publication Date
CN105939335A CN105939335A (zh) 2016-09-14
CN105939335B true CN105939335B (zh) 2019-03-22

Family

ID=56738964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610124896.3A Active CN105939335B (zh) 2015-03-05 2016-03-04 发布-订阅数据处理环境中管理通道所有权的方法和***

Country Status (3)

Country Link
US (3) US9800648B2 (zh)
CN (1) CN105939335B (zh)
DE (1) DE102016103733B4 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10505802B2 (en) * 2015-11-02 2019-12-10 Cisco Technology, Inc. Adaptive subscriber-driven resource allocation for push-based monitoring
US10567312B2 (en) 2016-04-11 2020-02-18 Facebook, Inc. Techniques for messaging bot controls based on machine-learning user intent detection
US10606848B2 (en) * 2016-04-11 2020-03-31 Facebook, Inc. Techniques for device configuration using messaging history information
US10367767B2 (en) 2016-09-21 2019-07-30 Facebook, Inc. Modular inbox and generation of content modules
US10356029B2 (en) 2016-09-21 2019-07-16 Facebook, Inc. Methods and systems for presenting modules in an inbox interface
US10841264B2 (en) 2016-09-21 2020-11-17 Facebook, Inc. Method and system for presenting a subset of messages in a modular inbox
US11233760B2 (en) 2016-09-21 2022-01-25 Facebook, Inc. Module ranking for a modular inbox
US10880237B2 (en) 2016-11-28 2020-12-29 Facebook, Inc. Methods and systems for ranking messaging bots
US10491698B2 (en) 2016-12-08 2019-11-26 International Business Machines Corporation Dynamic distribution of persistent data
US11360447B2 (en) * 2017-02-10 2022-06-14 Johnson Controls Technology Company Building smart entity system with agent based communication and control
US11994833B2 (en) 2017-02-10 2024-05-28 Johnson Controls Technology Company Building smart entity system with agent based data ingestion and entity creation using time series data
US10515098B2 (en) 2017-02-10 2019-12-24 Johnson Controls Technology Company Building management smart entity creation and maintenance using time series data
US11042144B2 (en) 2017-03-24 2021-06-22 Johnson Controls Technology Company Building management system with dynamic channel communication
US11323519B2 (en) * 2017-04-19 2022-05-03 Microsoft Technology Licensing, Llc Internet of things pub-sub data publisher
US10630399B2 (en) * 2017-05-05 2020-04-21 Dell Products, L.P. Testing distributed applications that have an established exchange in an advanced message queuing protocol (AMQP) message broker
US10552069B2 (en) 2017-07-07 2020-02-04 Sap Se Caching the topology of a distributed data storage system
EP3655826A1 (en) * 2017-07-17 2020-05-27 Johnson Controls Technology Company Systems and methods for agent based building simulation for optimal control
US20190096014A1 (en) 2017-09-27 2019-03-28 Johnson Controls Technology Company Building risk analysis system with risk decay
US10962945B2 (en) 2017-09-27 2021-03-30 Johnson Controls Technology Company Building management system with integration of data into smart entities
US11314788B2 (en) 2017-09-27 2022-04-26 Johnson Controls Tyco IP Holdings LLP Smart entity management for building management systems
US11120012B2 (en) 2017-09-27 2021-09-14 Johnson Controls Tyco IP Holdings LLP Web services platform with integration and interface of smart entities with enterprise applications
KR102382894B1 (ko) 2017-11-28 2022-04-05 삼성전자주식회사 통신 시스템에서 이벤트를 관리하는 방법 및 장치
US10778595B2 (en) 2018-11-01 2020-09-15 International Business Machines Corporation Operating a message queue cluster having multiple nodes
US11258675B2 (en) * 2019-10-29 2022-02-22 Dell Products L.P. Message oriented middleware topology explorer
CN111103570B (zh) * 2019-11-04 2023-04-28 航天南湖电子信息技术股份有限公司 一种雷达实时信号处理应用软件***
CN111711620B (zh) * 2020-06-05 2022-08-09 南京领行科技股份有限公司 实现应用间双向通信的方法、装置、设备和存储介质
CN111770009B (zh) * 2020-06-29 2022-05-20 深圳市金蝶天燕云计算股份有限公司 一种数据传输方法及相关设备
CN112671933B (zh) * 2021-02-23 2022-04-26 浙江中控技术股份有限公司 一种数据处理方法及***
CN115665238B (zh) * 2022-09-21 2023-09-08 深圳市米糠云科技有限公司 一种呼叫中心数据发布订阅处理的方法及***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393458B1 (en) * 1999-01-28 2002-05-21 Genrad, Inc. Method and apparatus for load balancing in a distributed object architecture
CN101650741A (zh) * 2009-08-27 2010-02-17 中国电信股份有限公司 一种分布式全文检索的索引实时更新的方法和***
CN101681489A (zh) * 2007-05-31 2010-03-24 微软公司 内容分发基础结构
CN101692656A (zh) * 2009-10-16 2010-04-07 中兴通讯股份有限公司 一种个人网络网关设备、***及其对外提供业务的方法
CN103220328A (zh) * 2013-03-05 2013-07-24 迈普通信技术股份有限公司 数据同步分发方法及装置
CN103404087A (zh) * 2011-02-24 2013-11-20 国际商业机器公司 发布-订阅环境中发布者的对等协作

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226684B1 (en) * 1998-10-26 2001-05-01 Pointcast, Inc. Method and apparatus for reestablishing network connections in a multi-router network
US7139792B1 (en) * 2000-09-29 2006-11-21 Intel Corporation Mechanism for locking client requests to a particular server
US20020165815A1 (en) * 2001-05-07 2002-11-07 International Business Machines Corporation Online marketplace with anonymous communication
US7437375B2 (en) 2004-08-17 2008-10-14 Symantec Operating Corporation System and method for communicating file system events using a publish-subscribe model
US20060106840A1 (en) 2004-11-04 2006-05-18 International Business Machines Corporation System and method for tracking notifications in a publish subscribe system
US8516082B2 (en) * 2009-03-25 2013-08-20 Limelight Networks, Inc. Publishing-point management for content delivery network
US9235829B2 (en) 2009-10-30 2016-01-12 Verisign, Inc. Hierarchical publish/subscribe system
US8489674B2 (en) 2010-03-11 2013-07-16 Yahoo! Inc. Distributed publish/subscribe system
EP2666106A1 (en) 2011-01-20 2013-11-27 Nokia Corp. Method and apparatus for facilitating content distribution
US9250975B2 (en) * 2011-01-26 2016-02-02 International Business Machines Corporation Elastic and scalable publish/subscribe service
US8793322B2 (en) 2011-02-20 2014-07-29 International Business Machines Corporation Failure-controlled message publication and feedback in a publish/subscribe messaging environment
US9313159B2 (en) * 2011-03-24 2016-04-12 Red Hat, Inc. Routing messages exclusively to eligible consumers in a dynamic routing network
US8327012B1 (en) * 2011-09-21 2012-12-04 Color Labs, Inc Content sharing via multiple content distribution servers
US20150149305A1 (en) * 2013-11-26 2015-05-28 Jack Ke Zhang Triggered presentation of third-party interactive content channels on electronic devices
US9171174B2 (en) * 2013-11-27 2015-10-27 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for verifying user data access policies when server and/or user are not trusted
US9979993B2 (en) * 2014-09-15 2018-05-22 Verizon Patent And Licensing Inc. Network for personalized content aggregation platform

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393458B1 (en) * 1999-01-28 2002-05-21 Genrad, Inc. Method and apparatus for load balancing in a distributed object architecture
CN101681489A (zh) * 2007-05-31 2010-03-24 微软公司 内容分发基础结构
CN101650741A (zh) * 2009-08-27 2010-02-17 中国电信股份有限公司 一种分布式全文检索的索引实时更新的方法和***
CN101692656A (zh) * 2009-10-16 2010-04-07 中兴通讯股份有限公司 一种个人网络网关设备、***及其对外提供业务的方法
CN103404087A (zh) * 2011-02-24 2013-11-20 国际商业机器公司 发布-订阅环境中发布者的对等协作
CN103220328A (zh) * 2013-03-05 2013-07-24 迈普通信技术股份有限公司 数据同步分发方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于订阅发布机制的中间件***设计与实现;万豪,史浩山,林卓,魏驰,马冲;《计算机测量与控制》;20121231;第2551-2554页

Also Published As

Publication number Publication date
US10158697B2 (en) 2018-12-18
DE102016103733A1 (de) 2016-09-08
US20160261395A1 (en) 2016-09-08
US20180262555A1 (en) 2018-09-13
CN105939335A (zh) 2016-09-14
US9800648B2 (en) 2017-10-24
US20170257421A1 (en) 2017-09-07
US10063623B2 (en) 2018-08-28
DE102016103733B4 (de) 2021-08-19

Similar Documents

Publication Publication Date Title
CN105939335B (zh) 发布-订阅数据处理环境中管理通道所有权的方法和***
CN104145261B (zh) 使用发布订阅模型的身份提供者发现服务
CN105897688B (zh) 使得在云中部署的应用能够访问内部资源的方法和装置
CN103516777B (zh) 用于在云计算机环境中进行供应的方法和***
CN105556496B (zh) 通过快捷***组件互连高速(Peripheral Component Interconnect-Express,PCIe)进行的可扩展直接节点间通信的方法和装置
US20170366347A1 (en) Technologies for data broker assisted transfer of device ownership
CN112602063B (zh) 用于应用执行的发布-订阅框架
CN102760074B (zh) 用于高负荷业务流程可扩展性的方法及其***
CN108182111A (zh) 任务调度***、方法和装置
JP6104184B2 (ja) クラウドストレージシステムのデータ暗号化処理装置及び方法
EP3635918B1 (en) Systems for managing messaging conversations
CA3100810C (en) Multicast encryption scheme for data-ownership platform
CN105453058B (zh) 目录服务发现和/或学习
CA2843284C (en) Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application
US20190373051A1 (en) Task Scheduling System for Internet of Things (IoT) Devices
CN109729040A (zh) 协议的选择的方法、设备以及计算机可读介质
US10609155B2 (en) Scalable self-healing architecture for client-server operations in transient connectivity conditions
CN108287894A (zh) 数据处理方法、装置、计算设备及存储介质
US8694462B2 (en) Scale-out system to acquire event data
EP4131112A1 (en) Electronic wallet and method for atomic swapping of two different blockchain tokens by using electronic wallet
AU2021246978B2 (en) Multi-level cache-mesh-system for multi-tenant serverless environments
JP6423491B1 (ja) ネットワークを利用して少なくとも1つの事業者がサービスを顧客に提供する方法およびそのネットワーク
CN115086425B (zh) 消息传输方法、装置、程序产品、介质及电子设备
JP2014106965A (ja) データセット転送プロトコルを用いた多重要請処理方法
US20220374951A1 (en) Charging for the use of resources in a distributed network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant