发布/订阅数据处理设备、方法和计算机程序产品的制作方法

文档序号:6416501阅读:174来源:国知局
专利名称:发布/订阅数据处理设备、方法和计算机程序产品的制作方法
技术领域
本发明涉及数据处理领域,更具体地涉及用于将消息自数据消息供应者(此后称为“发布者”)分配给这类消息的消费者(此后称为“订户”)的数据处理。
发布/订阅数据处理系统近年来日益普及,用作将数据消息自发布计算机分配至订户计算机的一种手段。将世界各地种类各异的计算机连接起来的因特网的不断增长的普及程度有助于使这类发布/订阅系统更为普及。因特网的全球网浏览器应用程序(“应用程序”或“过程”一词系指在计算机上运行的软件程序或其一部分)可与发布者或订户一起用于图形地显示消息。当由发布者提供的数据经常变化及大量订户要求快速地用最新数据更新时,这类系统特别有用。也许说明它有用的最佳例子是股票交易数据的分配。
在这类系统中,数据消息发布应用程序不必知道将要接收消息的订阅应用程序的标识或地点。发布者只须连至一个发布/订阅分配代理过程,该过程包含于一组用于组成代理系统(此后称为代理程序)的这类过程中,它将消息送至分配代理过程,并说明送至分配代理过程的消息主题。该分配代理过程然后将发布的消息分配至订阅应用程序,这些订阅应用程序以前曾向代理程序表示过它们希望接收限定主题的数据消息。因此,订户也不必知道发布者的标识和地点。订户只须连至分配代理过程即可。


图1中显示当今使用的一种这类发布/订阅系统。发布者11和12连至发布/订阅代理程序2并将发布的消息送至代理程序2,后者将消息分配至订户31、32、33、34。作为输出数据消息的数据处理应用程序的发布者11和12使用周知的称为远程过程调用(或RPC)的应用程序间数据连接协议连至代理程序2。每个发布应用程序可在单独的机器上运行,或者备择地,单个机器也可执行多个发布应用程序。代理程序2由多个分配代理(21至27)组成,后者用下面称之为“树结构”的层次方式连接起来。这些分配代理中可以每个在单独的机器上运行,它们是将数据消息自发布者通过代理程序2分配至订户的数据处理应用程序。订阅应用程序31、32、33和34通过RPC连至代理程序2以便接收发布的消息。
发布者11和12首先通过RPC直接连至一个根分配代理21,它又通过RPC连至第二层分配代理22和23,后者又通过RPC连至第三层分配代理24、25、26和27(亦称为“叶分配代理”,因为它们是树结构中的最后分配代理)。每个分配代理可在它自己的机器上运行,或者备择地,一个机器上可运行数组分配代理。叶分配代理通过RPC连至订阅应用程序31至34,后者之中每个可在它自己机器上运行。
为使代理程序2能确定哪个发布消息应送至哪个订户,发布者向根分配代理21提供每个发布消息的分配流名称。分配流(此后称为“流”)是具有名称的消息的有序序列(例如股票交易报价的流名称是“股票”),该名称用于将一个流与其它流区别开。类似地,订户向叶分配代理31至34提供它们希望订阅的流的名称。以此方式,代理程序2一直留意着哪个订户对哪个流感兴趣,因此当发布者向这些流发布消息时,这些消息就可以分配至相应的订户。也允许订户向代理程序提供筛选表示以限制在具体流中接收的消息(例如,只对IBM股票报价感兴趣的订户31可用以下方式向“股票”流订阅向叶分配代理24发出RPC调用并包括筛选表示,要求只将“股票”流中与IBM股票有关的消息送至订户31)。
经常需要分配代理将某些事件通知其“孩子”(也即直接位于该分配代理下面的那些分配代理),以使孩子能采取适当行动。例如,如分醒代理22丢失了它与它父亲(根分配代理21)的连接,则分配代理22应通知其子分配代理24和25以便这些孩子能采取已由系统管理程序预先筹划的适当行动(例如分配代理24和25可以或者尝试与其它父亲连接,例如与分配代理23连接,或者只是简单地与分配代理22在一起,等待分配代理22重新获得它与根分配代理21的连接)。
在现有技术发布/订阅代理程序中,在父分配代理与其孩子之间的这类通信要求父亲应在正常发布/订阅消息流之外发送一个专门命令。这增加了分配代理间传送的通信种类。此外,与其兄弟中的一个相比较,一个孩子可能以不同顺序接收消息,这是由于父亲必须向每个孩子发送不同命令。因此,此领域中现有技术导致可用资源的低效使用和通常无法令人满意的体系结构方法。
根据一个方面,本发明提供一种发布/订阅数据处理代理设备,它具有一个用于自发布应用程序接收由发布应用程序发布的限定主题流中的数据消息的装置;以及一个用于将收到的所发布数据消息分配给一个曾请求接收曾发布过所发布消息的流中的消息的订阅应用程序的装置,用于分配的装置包括多个连接的分配代理数据处理单元;其中一个流是为由发布分配代理数据处理单元发布的消息保留的,并准备由位于发布分配代理数据处理单元邻近处的订阅分配代理数据处理单元接收,或者准备由位于发布分配代理数据处理单元邻近处的订阅应用程序接收。
根据第二方面,本发明提供一个发布/订阅数据处理代理设备,它具有一个用于自发布应用程序接收由发布应用程序发布的限定主题流中的数据消息的装置;以及一个用于将收到的所发布数据消息分配给一个曾请求接收曾发布过所发布消息的流中的消息的订阅应用程序的装置,用于分配的装置包括多个安排在包括多个有序层次的层次结构中的分配代理数据处理单元,该有序层次包括最靠近发布应用程序的顶层和最靠近订阅应用程序的底层;其中一个流是为位于层次中一层上的发布分配代理数据处理单元发布的消息保留的,并准备由位于层次中相邻层上的订阅分配代理数据处理单元接收,或当发布分配代理数据处理单元位于层次中底层上时准备由订阅应用程序接收。
在收到保留的流中发布的消息后,订阅分配代理数据处理单元或订阅应用程序最好根据收到的发布消息内容采取预定动作。此外,发布应用程序或订阅应用程序中至少一个程序最好利用因特全球网浏览器以使所发布消息在因特网上发送或接收。
本发明重新使用现有流体系结构以实现相邻分配代理之间(以及分配代理和与其直接相连的订户之间的)通信。因此不必要为这类通信使用另外的通信类型,因而导致可用系统资源的高效使用。
此外,自例如父分配代理至其孩子的数据消息总是在流中按顺序传送,从而保证每个这类孩子完全按相同顺序接收所有这类消息,因此用于提供所得结果的高度稳定性和可预见性。
根据第三和第四方面,本发明提供一种数据处理方法,该方法所具有的方法步骤分别对应于本发明的第一和第二方面的数据处理设备的每个部件。
根据第五和第六方面,本发明提供一个具有存放于其上的计算机程序的计算机可读存储媒体,当在计算机上运行时,该计算机程序分别执行本发明第三和第四方面的数据处理方法功能。
通过参照结合附图描述的优选实施例的详细描述,将能更好地理解本发明,附图中图1显示与本发明优选实施例有关的发布/订阅系统的体系结构。
图2是显示根据本发明优选实施例的父分配代理所采取步骤的流程图;图3是显示根据本发明优选实施例的子分配代理所采取步骤的流程图;以及图4显示在执行图2和3流程图中步骤之后的图1代理体系结构的替代版本。
图1中在计算机上运行的发布应用程序11是例如现场股票交易数据报价的供应者。也即,发布应用程序11提供用于报道股票价格当前值的每分钟消息。此例中,发布应用程序11正在发行早已在代理程序2中配置好的称为“股票”的流中的消息。众所周知,当发布者11希望向“股票”流发布股票报价消息时,发布者11向位于代理树结构顶层的根分配代理21发出RPC调用。此例中,在另一计算机上运行的订阅应用程序32已通过RPC调用向位于树结构底层的叶分配代理24发送一个订阅请求,以标示订户32希望向“股票”流订阅。
因此,任何时候当发布者11向“股票”流发布数据消息时,代理程序2的分配树结构将消息通过根分配代理21往下送,通过任何中间分配代理(例如图1例中的22)及通过叶分配代理24送至订户32。这涉及一系列在图1中连接发布者11与订户32的每个连续圆圈之间所发生的RPC调用(即11至21,21至22,22至24和24至32)。
迄今已描述了现有技术发布/订阅代理程序的操作。现描述本发明的优选实施例。
如分配代理22丢失了它与它父亲(即根分配代理21)的连结,则这意味着在分配代理22重新获得它与根分配代理21的连接之前,作为分配代理22的孩子的分配代理24和25将无法进一步接收任何数据消息。当然,连至分配代理24的订户31和32(及连至分配代理25的任何订户)也将接不到任何数据消息。分配代理22必须将丢失连接一事通知其孩子24和25,以便这些孩子能采取恰当行动(例如连至分配代理22的兄弟,如分配代理23)。孩子应采取哪些恰当行动的细节应预先由系统管理程序将它作为预配置政策加以规定。
图2的流程图阐释了根据本发明优选实施例的分配代理22所采取的操作步骤。
在步201,分配代理22检测到它已丢失与它父亲(根分配代理21)的连接。在步202,分配代理22在一个称为“信息流”的为父分配代理与其孩子之间传送信息用而保留的流中发布一条消息。只有分配代理才能在此流中用作发布者,要作一个安全检验以便在允许发布者在此流中发布之前确定发布者是否为分配代理。任何时候当一个新孩子(不论它是分配代理或是订户)连至分配代理(它是该孩子的父亲),该孩子向“信息流”流订阅,以便该孩子能容易地自它的父分配代理接收消息。分配代理22在步骤202中发布消息通知代理22的孩子24和25,告诉它们代理22已丢失它与代理21的连接。
图3的流程图阐释了根据本发明的优选实施例在收到由父分配代理22在步202中发布的消息后子分配代理24和25所采取的操作步骤。
在步301,子分配代理24和25接收由父分配代理22发布的消息。这是由父分配代理22启动对每个子分配代理24和25的RPC调用而完成的。当子分配代理第一次作为分配代理22的孩子参加该树时,它们早就向“信息流”流订阅。在步302,子分配代理24和25遵循由系统管理程序设置的预配置政策,以便通知代理24和25当它们收到“信息流”流中来自它们父亲的消息,消息中告诉它们父亲已丢失与其父亲的连接时,它们应该做什么。此例中,预配置政策是在此情况下子分配代理应连接另一选代父亲23,后者是已丢失与其父亲21的连接的初始父亲22的兄弟。因此,代理24和25向代理23发出RPC调用(它又向根分配代理21发出RPC调用),请求本来通过代理22送至代理24和25的发布消息现在应通过代理23发送。图4显示阐释此改变的发布/订阅代理程序2的树结构的修改版本。
应注意,在步301之后孩子遵循的另一选代政策是在父代理22重新获得它与根代理21的连接之前只是等待。然而,此政策的结果是当丢失连接时订户31和32在接收消息中感受到延迟。当再度建立连接时,在丢失连接期间发布的消息可自永久存储器(由根代理21所维持)中检索出并通过代理22和24送至订户31和32。
在上面使用“信息流”流在父亲与其孩子通信的例子中,一个父亲对其每个孩子送一条消息。与分配树中其它流一样,父亲也可根据所送消息的性质来选择在“信息流”流中将特定消息送给它孩子中的哪一个。例如,“信息流”的另一用途是父分配代理希望通知订户31(它是代理24的孩子)说,订户31已丧失其在流(例如“股票”流)中接收消息的授权。例如,这可能是一个公司经过重组,并已改变可以查阅一定数据的订户。另一方面,订户32并未丧失其在此流中接收消息的授权。因此,父亲24通过RPC只向订户31在“信息流”流中发布消息,其内容是通知订户31,订户31不再被授权在流(例如“股票”流)中接收消息。在此情况下,订户收到此消息后不必采取任何特殊响应。然而已清楚地通知订户31,它不要指望“股票”流中再有任何消息。
“信息流”流还有一个用途是使负载均衡的情况,假定叶分配代理24正在忙碌地将消息发送给它孩子中的一个(订户31),也即送至订户31的消息负担很重。父分配代理24可在“信息流”流中发布一条消息,告诉它的其它孩子(订户32)以便在繁重通信期间临时将分配代理25连至订户32。订户32然后通过向代理25发出RPC调用而连至代理25。稍后时间,如果代理25由于负荷过多而过载,则代理25可在“信息流”流中发布一条消息,通过订户32重新连至其初始父亲24。响应于此发布消息,订户32然后通过对初始父亲24的RPC调用来重新连至其初始父亲24。
虽然为了阐释目的在优选实施例中描述了分配代理过程的层次树结构,但本发明的范围也包括许多其它体系结构。本发明也可用于一组跨越不同类型网络(包括局域网和广域网)和不同类型机器以及使用不同过程间通信协议(例如RPC,插口,TCP/IP或其它任何众所周知的过程间通信协议)的协作过程组的环境。例如,本发明也可用于因特网环境中,因特网涉及多个连接不同类型机器的不同类型网络。在不使用树结构的实施例中,“信息流”不但用于在父和子过程间传送信息,而且更广泛地在相邻过程间传送信息(也即,彼此相邻的过程,及使用周知的过程间通信协议而不通过中间过程彼此间直接通信)。
权利要求
1.一种发布/订阅数据处理代理设备包括用于自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息的装置;以及用于将收到的发布数据消息分配至订阅应用程序的装置,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个连接的分配代理数据处理单元;其中有一个流是为由发布分配代理数据处理单元发布的消息保留的,并准备由位于发布分配代理数据处理单元邻近处的订阅分配代理数据处理单元接收,或者准备由位于发布分配代理数据处理单元邻近处的订阅应用程序接收。
2.一种发布/订阅数据处理代理设备包括用于自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息的装置;以及用于将收到的发布数据消息分配至订阅应用程序的装置,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,该用于分配的装置包括多个安排在包括多个有序层次的层次结构中的分配代理数据处理单元,该有序层次包括最靠近发布应用程序的顶层和最靠近订阅应用程序的底层;其中一个流是为位于层次中一层上的发布分配代理数据处理单元发布的消息保留的,并准备由位于层次中相邻层上的订阅分配代理数据处理单元接收,或当发布分配代理数据处理单元位于层次中底层上时准备由订阅应用程序接收。
3.权利要求1的设备,其中在收到保留的流中发布的消息后,订阅分配代理数据处理单元或订阅应用程序根据收到的发布消息内容采取预定行动。
4.权利要求1的设备,其中至少一个发布应用程序或订阅应用程序利用因特全球网浏览程序以便将发布消息在因特网上发送或接收。
5.一种发布/订阅数据处理代理方法包括以下步骤自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息;以及将收到的发布数据消息分配至订阅应用程序,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个连接的分配代理数据处理单元;其中有一个流是为由发布分配代理数据处理单元发布的消息保留的,并准备由位于发布分配代理数据处理单元邻近处的订阅分配代理数据处理单元接收,或准备由位于发布分配代理数据处理单元邻近处的订阅应用程序接收。
6.一种发布/订阅数据处理代理方法包括以下步骤自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息;以及将收到的发布数据消息分配至订阅应用程序,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个安排在包括多个有序层次的层次结构中的分配代理数据处理单元,该有序层次包括最靠近发布应用程序的顶层和最靠近订阅应用程序的底层;其中一个流是为位于层次中一层上的发布分配代理数据处理单元发布的消息保留的,并准备由位于层次中相邻层上的订阅分配代理数据处理单元接收,或当发布分配代理数据处理单元位于层次中底层上时准备由订阅应用程序接收。
7.一种存储于计算机可读存储媒体上的计算机程序产品,当在计算机上运行时,该计算机程序产品执行包括以下步骤的发布/订阅数据处理代理方法自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息;以及将收到的发布数据消息分配至订阅应用程序,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个连接的分配代理数据处理单元;其中一个流是为由发布分配代理数据处理单元发布的消息保留的,并准备由位于发布分配代理数据处理单元邻近处的订阅分配代理数据处理单元接收,或准备由位于发布分配代理数据处理单元邻近处的订阅应用程序接收。
8.一种存储于计算机可读存储媒体上的计算机程序产品,当在计算机上运行时,该计算机程序产品执行包括以下步骤的发布/订阅数据处理代理方法自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息;以及将收到的发布数据消息分配至订阅应用程序,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个安排在包括多个有序层次的层次结构中的分配代理数据处理单元,该有序层次包括最靠近发布应用程序的顶层和最靠近订阅应用程序的底层;其中一个流是为位于层次中一层上的发布分配代理数据处理单元发布的消息保留的,并准备由位于层次中相邻层上的订阅分配代理数据处理单元接收,或当发布分配代理数据处理单元位于层次中底层上时准备由订阅应用程序接收。
全文摘要
一种发布/订阅数据处理代理设备具有:用于自发布应用程序接收由发布应用程序在限定主题的流中发布的数据消息的装置;以及用于将收到的发布数据消息分配至订阅应用程序的装置,该订阅应用程序曾请求接收曾在其中发布过发布消息的流中的消息,用于分配的装置包括多个连接的分配代理数据处理单元;其中有一个流是为由发布分配代理数据处理单元发布的消息保留的,并准备由位于发布分配代理数据处理单元邻近处的订阅分配代理数据处理单元接收。
文档编号G06F17/00GK1240964SQ9910705
公开日2000年1月12日 申请日期1999年5月26日 优先权日1999年5月26日
发明者安德鲁·布莱尔·哈斯廷斯, 山克尔·拉马斯瓦米, 唐纳德·埃德温·施密茨, 王清华(音译), 迈克尔·怀恩·扬 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1