用于发布-订阅环境中发布者的对等协作的方法及系统转让专利

申请号 : CN201280010108.8

文献号 : CN103404087B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·琼斯B·M·欧康奈尔K·S·布霍加尔M·盖尔R·汉密尔顿11

申请人 : 国际商业机器公司

摘要 :

本发明的实施例提供了一种用于增强的pub/sub环境的方法,由此发布者的对等组被定义且可以协作以确定何时高速缓存要发送到一个或多个公共中介的数据。具体而言,在一典型实施例中,配置数据等将被读取以在pub/sub消息收发环境中的发布者系统之间定义对等组。一旦这种组被识别出来,就将在其之间建立通信。这种通信将用于识别对等组中的这组(至少一个)发布者系统公用的、有可能可以被高速缓存的一组数据。一旦这种数据被识别出来,就将生成对应于其并且与这组数据关联的唯一标识符/高速缓存键集合。然后,包括这组数据和对应的唯一标识符的消息将发送到中介系统(例如,从发布者系统),其中中介系统将在高速缓存中存储(或者已经存储了)这组数据,并且把底层消息一道传递到可用的订阅者系统。当未来消息要利用先前高速缓存的这组数据生成时,发布者系统将用所述唯一标识符代替高速缓存的这组数据来产生缩短的消息,该缩短的消息被发送到中介系统。当接收到缩短的消息时,中介系统将定位唯一标识符、从高速缓存检索对应的一组数据、用这组数据替换该唯一标识符以产生完整的消息,并且把该完整的消息发送到可用的订阅者系统。

权利要求 :

1.一种用于在发布-订阅pub/sub消息收发环境中建立发布者的对等P2P协作的方法,包括:在所述pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;

识别所述一组发布者系统公用的、有可能被高速缓存的一组数据;

在所述一组发布者系统中的至少一个发布者系统上生成对应于所述一组数据的唯一标识符,所述唯一标识符把所述一组数据识别为可高速缓存的;

在所述一组发布者系统之间共享所述唯一标识符;

把所述一组数据与所述唯一标识符关联;及把具有所述一组数据和所述唯一标识符的第一消息发送到所述pub/sub消息收发环境中的中介系统,所述的方法还包括:

在所述中介系统上接收所述第一消息;

定位所述唯一标识符;

使所述一组数据存储在高速缓存中;及

把所述第一消息发送到所述pub/sub消息收发环境中的一组订阅者系统,所述的方法还包括:在所述中介系统上从所述一组发布者系统中的任何一个发布者系统接收第二消息,所述第二消息包括用所述唯一标识符代替所述一组数据的缩短的消息;

定位所述缩短的消息中的所述唯一标识符;

从所述高速缓存中检索所述一组数据;

在所述第二消息中用所述一组数据替换所述唯一标识符以产生完整的消息;及把所述完整的消息发送到所述一组订阅者系统。

2.如权利要求1所述的方法,其中所述关联与所述发送是由所述一组发布者系统中的至少一个发布者系统执行的。

3.如权利要求1所述的方法,其中所述高速缓存是订阅者系统高速缓存。

4.如权利要求1所述的方法,其中所述高速缓存是中介系统高速缓存。

5.如权利要求1所述的方法,还包括:读取配置数据以把所述一组发布者系统识别为所述pub/sub消息收发环境中的对等组。

6.如权利要求1所述的方法,其中所述可能是基于以下因素中的至少一个识别的:将包括所述一组数据的至少一条未来消息的数量,及所述至少一条未来消息的大小。

7.一种用于在发布-订阅pub/sub消息收发环境中建立发布者的对等P2P协作的系统,包括:用于在所述pub/sub消息收发环境中的一组发布者系统之间建立P2P通信的装置;

用于识别所述一组发布者系统公用的、有可能被高速缓存的一组数据的装置;

用于在所述一组发布者系统中的至少一个发布者系统上生成对应于所述一组数据的唯一标识符,所述唯一标识符把所述一组数据识别为可高速缓存的的装置;

用于在所述一组发布者系统之间共享所述唯一标识符的装置;

用于把所述一组数据与所述唯一标识符关联的装置;及用于把具有所述一组数据和所述唯一标识符的第一消息发送到所述pub/sub消息收发环境中的中介系统的装置,所述的系统还包括:

用于在所述中介系统上接收所述第一消息的装置;

用于定位所述唯一标识符的装置;

用于使所述一组数据存储在高速缓存中的装置;及用于把所述第一消息发送到所述pub/sub消息收发环境中的一组订阅者系统的装置,所述的系统还包括:用于在所述中介系统上从所述一组发布者系统中的任何一个发布者系统接收第二消息,所述第二消息包括用所述唯一标识符代替所述一组数据的缩短的消息的装置;

用于定位所述缩短的消息中的所述唯一标识符的装置;

用于从所述高速缓存中检索所述一组数据的装置;

用于在所述第二消息中用所述一组数据替换所述唯一标识符以产生完整的消息的装置;及用于把所述完整的消息发送到所述一组订阅者系统的装置。

8.如权利要求7所述的系统,其中所述关联与所述发送是由所述一组发布者系统中的至少一个发布者系统执行的。

9.如权利要求7所述的系统,其中所述高速缓存是订阅者系统高速缓存。

10.如权利要求7所述的系统,其中所述高速缓存是中介系统高速缓存。

11.如权利要求7所述的系统,还包括:用于读取配置数据以把所述一组发布者系统识别为所述pub/sub消息收发环境中的对等组的装置。

12.如权利要求7所述的系统,其中所述可能是基于以下因素中的至少一个识别的:将包括所述一组数据的至少一条未来消息的数量,及所述至少一条未来消息的大小。

13.一种部署用于在发布-订阅(pub/sub)消息收发环境中建立发布者的对等(P2P)协作的系统的方法,包括:提供一种计算机基础设施,所述计算机基础设施可操作来:在所述pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;

识别所述一组发布者系统公用的、有可能被高速缓存的一组数据;

在所述一组发布者系统中的至少一个发布者系统上生成对应于所述一组数据的唯一标识符,所述唯一标识符把所述一组数据识别为可高速缓存的;

在所述一组发布者系统之间共享所述唯一标识符;

把所述一组数据与所述唯一标识符关联;及把具有所述一组数据和所述唯一标识符的第一消息发送到所述pub/sub消息收发环境中的中介系统,所述的方法还包括:

在所述中介系统上接收所述第一消息;

定位所述唯一标识符;

使所述一组数据存储在高速缓存中;及

把所述第一消息发送到所述pub/sub消息收发环境中的一组订阅者系统,所述的方法还包括:在所述中介系统上从所述一组发布者系统中的任何一个发布者系统接收第二消息,所述第二消息包括用所述唯一标识符代替所述一组数据的缩短的消息;

定位所述缩短的消息中的所述唯一标识符;

从所述高速缓存中检索所述一组数据;

在所述第二消息中用所述一组数据替换所述唯一标识符以产生完整的消息;及把所述完整的消息发送到所述一组订阅者系统。

说明书 :

用于发布-订阅环境中发布者的对等协作的方法及系统

技术领域

[0001] 本发明涉及发布-订阅(pub/sub)环境。具体而言,本发明涉及用于经发布者的对等(P2P)协作在pub/sub环境中高速缓存可能重复的数据的方法。

背景技术

[0002] 发布-订阅(pub/sub)消息收发模式(messaging pattern)是如今在许多不同行业中使用的通信模型。例如,pub/sub在银行系统、天气系统及需要向多个实体通知公共信息的技术的其它系统中使用。总的来说,pub/sub是一种消息收发范例,其中消息的发送者(发布者)一般不被编程成把它们的消息发送到具体的接收者(订阅者)。相反,所发布的消息可以按特征分类,而不需要知道可能有什么样的订阅者(如果有的话)。订阅者对一个或多个类表示兴趣而且可以接收感兴趣的消息,而不需要知道存在什么发布者。这种发布者与订阅者的解耦可以允许更大的伸缩性和更为动态的网络拓扑结构。
[0003] pub/sub模型中的一个缺陷是所有内容(即,消息的主体/有效载荷)都发送到所有用户,而且因此,以最简单的形式,从发布者生成的网络流量的量为用订阅者的个数乘以消息的大小。而且,同一组数据要(在不同的消息中)多次重新发送到相同的订阅者会是很常见的。因此,所生成的数据的量会很大并且消耗大量的网络带宽。

发明内容

[0004] 总的来说,本发明的实施例提供了一种用于增强的pub/sub环境的方法,由此定义发布者的对等组(peer group)而且可以协作,以便确定何时高速缓存要发送到一个或多个公共中介(broker)的数据(例如,识别可以高速缓存的、多个发布者公用的数据)。具体而言,在一种典型的实施例中,配置数据等将被读取,以便在pub/sub消息收发环境中的发布者系统之间定义对等组。一旦这种组被识别出来,就将在其中建立对等方(peer)之间的通信。这种通信将用于识别对等组中这组(至少一个)发布者系统公用的、有可能可以被高速缓存的一组数据。一旦这种数据被识别出来,就将生成与其对应并且与这组数据关联的唯一标识符/高速缓存键(cache key)集合。然后,包括这组数据和对应的唯一标识符的消息将发送到中介系统(例如,从发布者系统),其中中介系统将在高速缓存中存储(或者已经存储了)这组数据,并且把底层消息一道传递到可用的订阅者系统。当未来的消息要利用先前高速缓存的这组数据生成时,发布者系统将用所述唯一标识符代替高速缓存的这组数据,以产生缩短的消息,这个缩短的消息将发送到中介系统。当接收到该缩短的消息时,中介系统将定位唯一标识符、从高速缓存检索对应的一组数据、用这组数据替换所述唯一标识符以产生完整的消息,并且把该完整的消息发送到可用的订阅者系统。
[0005] 本发明的第一方面提供了一种用于在发布-订阅(pub/sub)消息收发环境中建立发布者的对等(P2P)协作的方法,包括:在pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;识别这组发布者系统公用的、有可能被高速缓存的一组数据;在这组发布者系统中的至少一个上生成对应于这组数据的唯一标识符,该唯一标识符把这组数据识别为可高速缓存的;在这组发布者系统之间共享该唯一标识符;把这组数据与该唯一标识符关联;并且把具有这组数据和该唯一标识符的第一消息发送到pub/sub消息收发环境中的中介系统。
[0006] 本发明的第二方面提供了一种用于在发布-订阅(pub/sub)消息收发环境中建立发布者的对等(P2P)协作的系统,包括:至少一条总线;耦合到该至少一条总线的至少一个处理器;及耦合到所述至少一条总线的至少一个存储器介质,这至少一个存储器介质包括指令, 所述指令用于:在pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;识别这组发布者系统公用的、有可能被高速缓存的一组数据;在这组发布者系统中的至少一个上生成对应于这组数据的唯一标识符,该唯一标识符把这组数据识别为可高速缓存的;在这组发布者系统之间共享该唯一标识符;把这组数据与该唯一标识符关联;并且把具有这组数据和该唯一标识符的第一消息发送到pub/sub消息收发环境中的中介系统。
[0007] 本发明的第三方面提供了至少一种用于在发布-订阅(pub/sub)消息收发环境中建立发布者的对等(P2P)协作的计算机程序产品,这至少一种计算机程序产品包括至少一个计算机可读存储介质,及存储在所述至少一个计算机可读存储介质上的程序指令,所述程序指令用于:在pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;识别这组发布者系统公用的、有可能被高速缓存的一组数据;在这组发布者系统中的至少一个上生成对应于这组数据的唯一标识符,该唯一标识符把这组数据识别为可高速缓存的;在这组发布者系统之间共享该唯一标识符;把这组数据与该唯一标识符关联;并且把具有这组数据和该唯一标识符的第一消息发送到pub/sub消息收发环境中的中介系统。
[0008] 本发明的第四方面提供了一种部署用于在发布-订阅(pub/sub)消息收发环境中建立发布者的对等(P2P)协作的系统的方法,包括:提供一种计算机基础设施,所述计算机基础设施可操作:在pub/sub消息收发环境中的一组发布者系统之间建立P2P通信;识别这组发布者系统公用的、有可能被高速缓存的一组数据;在这组发布者系统中的至少一个上生成对应于这组数据的唯一标识符,该唯一标识符把这组数据识别为可高速缓存的;在这组发布者系统之间共享该唯一标识符;把这组数据与该唯一标识符关联;并且把具有这组数据和该唯一标识符的第一消息发送到pub/sub消息收发环境中的中介系统。

附图说明

[0009] 根据联系附图考虑的以下对本发明各方面的具体描述,本发明的这些及其它特征将更容易理解,附图中:
[0010] 图1绘出了根据本发明一种实施例的计算节点。
[0011] 图2绘出了根据本发明一种实施例的pub/sub环境。
[0012] 图3绘出了根据本发明一种实施例的组件流程图。
[0013] 图4绘出了根据本发明一种实施例的另一个组件流程图。
[0014] 图5绘出了根据本发明一种实施例的方法流程图。
[0015] 图6绘出了根据本发明一种实施例的另一个方法流程图。
[0016] 附图不一定是按比例的。附图仅仅是示意性的表示,而不是要刻画本发明的具体参数。附图仅仅是要绘出本发明的典型实施例,因此不应当认为是限制本发明的范围。在附图中,相同的标号代表相同的元件。具体实施例
[0017] 现在将参考附图更加完全地描述说明性实施例,其中附图中示出了示例性实施例。但是,本公开内容可以按许多不同形式体现而且不应当认为是限定到在此所述的示例性实施例。相反,提供这些示例性实施例是为了使本公开内容透彻完整并且将向本领域技术人员完全传达本公开内容的范围。在本描述中,众所周知的特征与技术的细节可能被忽略了,以避免不必要地模糊所给出的实施例。
[0018] 在此所使用的术语仅仅是为了描述特定的实施例而不是要限制本公开内容。如在此所使用的,除非语境清楚地另外指示,否则单数形式“一个”、“这个”也要包括复数形式。此外,术语“一个”等的使用不表示数量的限制,而是表示至少一个所引用项的存在。还应当理解,当在本说明书中使用时,术语“包括”、“包含”规定所述特征、区域、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、区域、整数、步骤、操作、元件、组件和/或其组的存在或添加。
[0019] 总的来说,本发明的实施例提供了一种用于增强的pub/sub环境的方法,由此定义发布者的对等组而且可以协作,以便确定何时高速缓存要发送到一个或多个公共中介的数据(例如,识别可以高速缓存的、多个发布者公用的数据)。具体而言,在一种典型的实施例中,配置数据等将被读取,以便在pub/sub消息收发环境中的发布者系统之间定义对等组。一旦这种组被识别出来,就将在其中建立对等方之间的通信。这种通信将用于识别对等组中这组(至少一个)发布者系统公用的、有可能可以被高速缓存的一组数据。一旦这种数据被识别出来,就将生成与其对应并且与这组数据关联的唯一标识符/高速缓存键集合。然后,包括这组数据和对应的唯一标识符的消息将发送到中介系统(例如,从发布者系统),其中中介系统将在高速缓存中存储(或者已经存储了)这组数据,并且把底层消息一道传递到可用的订阅者系统。当未来的消息要利用先前高速缓存的这组数据生成时,发布者系统将用所述唯一标识符代替高速缓存的这组数据,以产生缩短的消息,这个缩短的消息将发送到中介系统。当接收到该缩短的消息时,中介系统将定位唯一标识符、从高速缓存检索对应的一组数据、用这组数据替换所述唯一标识符以产生完整的消息,并且把该完整的消息发送到可用的订阅者系统。
[0020] 在此所述的方法提供了一种优化发布者与中介之间的网络流量的解决方案并且提供了在复杂生产环境中工作的系统,该复杂生产环境通常在发布者与中介之间只有单向通信可用的情况下出现。类似地,在低延迟网络中,在发布者与中介之间具有双向通信可能不是理想的。
[0021] 应当指出,下文中数据的高速缓存可以经发布者系统、中介系统和/或订阅者系统发生。据此,不是要限制高速缓存的位置。
[0022] 现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
[0023] 云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
[0024] 计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
[0025] 如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0026] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0027] 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0028] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/ 服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0029] 本发明的实施例可以实现为计算机可读信号介质,这可以包括具有体现在其中的计算机可读程序代码的传播数据信号(例如,在基带中或者作为载波的一部分)。这种传播信号可以采取多种形式中的任意一种,包括但不限于电磁、光或者其任何合适的组合。计算机可读信号介质可以是非计算机可读存储介质且可以传送、传播或者传输由指令执行系统、装置或设备使用或者与其结合使用的任何计算机可读介质。
[0030] 体现在计算机可读介质上的程序代码可以利用任何适当的介质发送,包括但不限于无线、有线、光纤电缆、射频(RF)等或者以上所述的任意合适组合。
[0031] 作为例子但不是限制,具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块与程序数据,可以存储在存储器28中。总的来说,程序/实用程序40执行在此所述的本发明的功能。操作系统、一个或多个应用程序、其它程序模块与程序数据中的每一个或者其某种组合可以包括联网环境的实现。程序模块42通常执行在此所述的本发明实施例的功能和/或方法。计算机系统/服务器12也可以与一个或多个外部设备14,诸如键盘、定点设备、显示器24等,通信;还可与一个或者多个使得消费者能与该计算机系统/服务器12交互的设备通信;和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通 信的任何设备(例如,网卡,调制解调器等)通信。这种通信可以经I/O接口22进行。
[0032] 还有,计算机系统/服务器12可以经网络适配器20与一个或者多个网络,诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如互联网),通信。如图所示,网络适配器20经总线18与计算机系统/服务器12的其它组件通信。应当明白,尽管未示出,但其它硬件和/或软件组件也可以与计算机系统/服务器12结合使用。例子包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据归档存储系统等。
[0033] 本发明的实施例提供了用于基于发布者的高速缓存的方法,该方法可以用于减少在pub/sub系统中输送到单个订阅者的数据量(网络流量)。
[0034] 现在参考图2,更加具体地示出了根据本发明至少一种实施例的pub/sub环境70。如图所示,环境70包括经中介系统76(以下也称为“中介”)与订阅者系统74(以下也称为“订阅者”)通信的发布者系统72(以下也称为“发布者”)。系统72、74、76经网络链接78A-N通信,其中网络链接78A-N可以代表现在已知或者以后开发的任何类型的网络链接和/或通信网络。应当理解,发布者系统72、订阅者系统74和中介系统76每个都包括一个或多个计算机系统12A-C(例如,这种计算机系统包括类似于图1的计算机系统12的组件/元件)。因此,发布者系统72、订阅者系统74和中介系统76每个都可以包括启用其对应功能的程序/实用程序
40A-C。具体而言,发布者系统72包括具有一组(至少一个)发布者程序模块42A的发布者程序40A,中介系统76包括具有一组中介程序模块42B的中介程序40B,而订阅者系统74包括具有一组订阅者程序模块42C的订阅者程序40C。程序40A-C的程序模块42A-C一般启用/执行以下联系图3-5将描述的功能。
[0035] 现在参考图3,更具体地示出说明本发明一种典型实施例所涉及的过程的组件流程图。应当事先理解,虽然完全相同的步骤示为由多 个发布者执行,但是可能只需要执行单个实例。完全相同的步骤是平行示出的,以便说明任何一个发布者系统的高速缓存引擎110A-B都可以执行底层功能性。在步骤S1A-B中,发布者系统首先知道什么对等方在其对等组中。这可以经被读取的配置文件或者发布者通过其了解其对等方的某种其它方式进行。
在一种实施例中,管理员等可以在发布者被创建的时候提供这种信息。在步骤S2A-B中,对等组中的发布者系统将在其对等方之间建立通信。这可以是简单的一对一关系、一对多关系或者多对多关系。对等组可以定义一个主对等方或者某种其它层次关系,用于管理对等组之间的通信。当发布者系统运行时,或者通过其自己或者和对等组一起,发布者系统将确定发布什么数据,这些数据将在步骤S3A-B中高速缓存。
[0036] 据此,识别过程可以利用诸如以下一个或多个的属性来配置:
[0037] ·数据是否将在多于“N”个消息中;
[0038] ·数据是否将在多于“M”个消息中并且超过“X”个字节。
[0039] ·这些确定可以基于已经发布的消息的历史信息或者关于一般发布的数据类型(例如,已知要发布的公用可扩展标记语言(XML)架构可以具有可以被高速缓存的公用冗长标签或标签序列)来作出。
[0040] 然后,对等组之间的协作用于进一步确定什么数据应当被高速缓存。例如,如果用于单个发布者的规则声明在数据已经在十条或者更多条过去的消息中出现的情况下就应当高速缓存该数据,那么对等组就可以定义一规则,该规则声明是否数据已出现至少两次,历史上通过该对等组核查,并且查看数据作为一个组是否被看到十次或者更多次(或者某个其它可配置的值)。如果已经满足了那些标准,就让对等组高速缓存这个数据。同样,缺省规则可以是,如果单个发布者系统确定特定数据应当被高速缓存,那么就应当通知对等组中的所有发布者并且总是使用与该数据关联的高速缓存键/唯一标识符。据此,在步骤S4A或S4B中为数据建立高速缓存键/唯一标识符。在这个步骤中,没有必要让多于一个发布者系统生成该唯一标识符。因此,只 需要执行步骤S4A或者S4B。据此,高速缓存键/唯一标识符的生成可以由组中的主对等方进行,在对等方之间协商,或者使用某种其它方法。总之,一旦高速缓存键/唯一标识符被创建并且与该数据关联,就在步骤S5A-B中在对等组中的所有对等方之间共享。
[0041] 在步骤S6A-B中处理消息。这一般涉及利用高速缓存键/唯一标识符来标记/注释/关联消息中可高速缓存的数据,而且只需要由单个发布者系统执行。这个过程可以利用在以下标题为“可能实现I和II”的部分中描述的方法之一。一旦消息已经得到处理,就在步骤S7A或S7B中发布它,并且在步骤S8中由中介系统接收。一接收到,中介系统就将在步骤S9中处理所述消息,并且在步骤S10中把该消息发送到可用的订阅者系统,所述消息将在步骤S11中接收。
[0042] 步骤S9中由中介系统高速缓存引擎100对消息的处理将参考图4更具体地描述。但是,总的来说,中介系统高速缓存引擎100将检测并定位消息中的唯一标识符,并且在高速缓存(例如,中介系统高速缓存、订阅者系统高速缓存等)中存储(或者已经存储了)对应的数据。然后,当随后接收到具有该唯一标识符的消息时(例如,接收到缩短的消息),中介系统高速缓存引擎100将检索对应的数据、用检索出的数据代替消息中的唯一标识符,以便产生完整的消息,然后把该完整的消息发送到可用的订阅者系统。
[0043] 尽管没有示出,但是订阅者可以访问中介系统高速缓存和/或维护其自己的高速缓存。这允许订阅者维护或者可以访问先前高速缓存的数据。总之,当发布者创建具有先前高速缓存的数据的消息时,发布者系统将用唯一标识符代替这种数据,以便产生缩短的消息,然后把缩短的消息发送到中介系统。一接收到,中介系统就可以定位缩短的消息中的唯一标识符、从高速缓存检索关联的数据、用检索出的数据替换消息中的唯一标识符,然后把完整的消息发送到可用的订阅者系统。可替换地,在订阅者系统维护或者可以访问高速缓存数据的情况下,由中介系统从发布者系统接收到的缩短的消息可以发送到订阅者系统,订阅者系统可以检索先前高速缓存的、可以由订阅者系统用 于完成消息的数据(例如,经订阅者高速缓存引擎)。
[0044] 现在参考图4,将更具体地描述中介高速缓存引擎100的功能。在步骤R1中,从发布者系统接收消息/发布。在步骤R2中,确定是否有新的项需要被高速缓存。如果需要,就在步骤R3中把它们存储在数据仓库/高速缓存140中。一旦所有可以高速缓存的数据项都已经存储,就在步骤R4中分析该消息,看它是否包括与从之前消息高速缓存的数据对应的唯一标识符。如果包括,就从高速缓存140检索那个数据并将其插入到消息中。一旦所有新的可高速缓存的数据都已经高速缓存,并且之前高速缓存的数据已经检索出来,就在步骤R5中确定该消息是否包括无效的(关于之前高速缓存的数据的)高速缓存键/唯一标识符(例如,高速缓存键/唯一标识符看起来不与高速缓存140中所存储的任何数据关联)。如果包括,就可以在步骤R7中使该高速缓存失效,并且可以在步骤R8中从发布者系统请求刷新高速缓存140。
[0045] 总之,一旦完成任何中介侧的处理,消息就可以在步骤R6中发送到订阅者系统。如以上所指出的,订阅者系统可以接收完整的消息(例如,基于步骤R4)或者在订阅者系统能够访问之前高速缓存的数据的情况下接收缩短的消息,如以上所指出的。
[0046] 应当理解,允许中介系统使发布者系统和/或订阅者系统上的高速缓存项失效可能是有益的。例如,如果中介的高速缓存引擎可以确定先前高速缓存的数据不会被再次使用,或者被再次使用的可能性非常低,那么它就可以在对其它系统的下次发布时发送失效消息。这可以实现为包含键与失效指示的定制头。当接收到并读取该消息时,订阅者系统和/或发布者系统将简单地从其高速缓存除去高速缓存的项。
[0047] 所述系统的附加方面:
[0048] ·以上所说明的高速缓存140(图4)可以是存储器中的或者磁盘上的数据仓库(例如,像 数据库的数据库、平面文件、二进制文件、二进制加密文件等)。
[0049] ·中介系统的高速缓存引擎100可以为每个键附加截止时间。这个值可以由订阅者系统或发布者系统的高速缓存用于使高速缓存条目失效。这对于限制高速缓存的增长可能是有用的。
[0050] ·中介系统可以(向发布者系统与订阅者系统)发送将使某些高速缓存条目失效的后续消息(例如,确定数据将不会被再次使用)。
[0051] ·中介系统的高速缓存引擎100可以支持如前所述的自动高速缓存创建。例如,如果关于一个话题的最后“N”条消息包含公共的数据段,那么那个数据段应当被标记以供高速缓存并且创建高速缓存键/数据对并且利用下一条消息发送。
[0052] 说明性实现
[0053] 说明性实现I
[0054] 高速缓存引擎或者删除或者用适当的高速缓存键/唯一标识符替换高速缓存的数据(以下描述允许删除数据的系统)。例如,假定要发送的消息看起来如下:
[0055] AAAAAABBBBBBBCCCCCCDDDDDDEEEEEEE
[0056] 高速缓存引擎声明“B”将有可能用在将来的消息中并且指示接收者他们应当在其本地高速缓存中保留该部分。在这个例子中,数据部分BBBBBBB将被称为~rp1。接收者将存储该部分BBBBBBB并且分析进入的消息以查找~rp1的存在。进一步假定在未来某个时间点,发布者想发送看起来如下的消息:
[0057] FFFFFFFFBBBBBBBUUUUUUJJJJJJJJ
[0058] 不是发送这个消息,而是现在可以如下发送:
[0059] FFFFFFFF~rp1UUUUUUJJJJJJJJ
[0060] 这允许发送者在网络上发送较少的流量。当接收到这个消息时,接收者将基于来自其高速缓存的转换信息,重构该消息,并且在把~rp1展开成BBBBBBB之后创建如下消息:
[0061] FFFFFFFFBBBBBBBUUUUUUJJJJJJJJ
[0062] 说明性实现II
[0063] 例如,如果期望高速缓存的数据被插入到该消息的第12个位置,那么将生成指示rp1=12,x,y的消息和性质/属性(或者定制头)(其中,rp1是高速缓存键/唯一标识符,12是插入数据的第一个位置,x是下一个,y是再下一个,以此类推)。这种方法消除了删除匹配高速缓存指示符的任何未高速缓存的消息数据的需求。
[0064] 应当指出,在这种解决方案中可以包括多种方法。
[0065] 高速缓存数据的自动选择:在一种典型的实施例中,所提出的发明自动地确定哪个信息应当被高速缓存。
[0066] 有几种技术可以用于识别可高速缓存的信息。以下所识别出的技术可以单独地或者彼此结合地使用。
[0067] 区分引擎:
[0068] 这个系统分析单个话题内的或者跨多个话题的消息,来捕捉消息之间的相似性。假定消息最相似的方面是用于将来高速缓存的好候选。捕捉到的相似性可以跨重新启动而持续,使得高速缓存效率不会中断。当消息简档改变时,高速缓存的项可以随时间而变。例如,如果一种类型的消息暂时占主导地位,那么另一种完全不同的消息类型是占主导地位的。随着时间的推移,关于第一种类型的高速缓存条目可以失效,以便为第二种类型腾出地方。
[0069] 基于速率的选择:一些消息和话题比其它的消息和话题具有更高的发布速率是很常见的。这种速率可以与用于每个特定话题的主题的重要性或动态本质相关。具有更高发布速率的话题应当在具有较低发布速率的话题之前被选择以供高速缓存。基于速率的选择计数每个话题的消息的总数或者单个话题内的消息类型,并且选择发布最多的话题或消息类型用于消息部分高速缓存。
[0070] 消息相关性选择:这种系统可以确定相关话题之间的相关性,并且因此在检测到第一个消息时高速缓存相关话题的可能的相似性。例如,可能存在/得分/[赛场]和/统计/[赛场]的相关话题,其中赛场是关 于一特定车(cart)上的特定参赛者的变换的话题。发布到/统计/[赛场]的每条消息的前面都有发布到/得分/[赛场]的消息。这两组消息都可以识别用于那个特定赛场的参赛者名字。因此,这种方法可以辨明,对于发布到/得分/[赛场]和/统计/[赛场]的每条消息,尽管消息的组成部分改变了(当前的得分、当前的统计数据),但是参赛者名字保持相同。因此,在一条消息发布到/得分/[赛场]之后的短时间内,在发送对应的/统计/[赛场]消息之前,比赛者名字组成部分有资格被高速缓存。
[0071] 最后,应当指出:表明数据实体的不同方法可以由数据的发送者和接收者使用。如果应当规定安全性,那么这些方法包括通用散列、具有校验和的散列、滚动散列(rolling hash)或者甚至加密散列函数。这些方法中每一种都提供了某些优点而且可以用于加速和方便在此所述的任何概念的实现。
[0072] 现在参考图5,示出了根据本发明一种实施例的方法流程图。在步骤T1中,在pub/sub消息收发环境中的一组发布者系统之间建立P2P通信。在步骤T2中,识别有可能要高速缓存的、这组发布者系统公用的一组数据。在步骤T3中,在这组发布者系统中的至少一个上生成对应于这组数据的唯一标识符,该唯一标识符把这组数据识别为可以高速缓存的。在步骤T4中,在这组发布者系统之间共享该唯一标识符。在步骤T5中,这组数据与该唯一标识符关联。在步骤T6中,(生成和)发送具有这组数据和该唯一标识符的第一消息到pub/sub消息收发环境中的中介系统。
[0073] 现在参考图6,将更加具体地描述对先前高速缓存的数据的检索。在步骤V1中,在发布者系统上生成第二消息(相对于图5步骤T6中的第一消息)。在这种情况下,这第二消息将具有代替先前高速缓存的一组数据的唯一标识符。在步骤V2中,这第二消息作为缩短的消息发送到中介系统。在步骤V3中,在第二消息中定位唯一标识符。在步骤V4中,从高速缓存中检索这组数据,并且将其用于在步骤V5中替换第二消息中的唯一标识符。然后,在步骤V6中,第 二消息从中介系统发送到一组订阅者系统。可替换地,由中介系统接收到的缩短的消息可以发送到订阅者系统,然后,所述订阅者系统可以使用该信息从高速缓存检索数据,以便完成消息。这个选项将在订阅者系统可以访问先前高速缓存的数据的时候出现。
[0074] 尽管在此示出和描述为数据高速缓存解决方案,但是应当理解,本发明还提供各种备选实施例。例如,在一种实施例中,本发明提供了包括计算机程序代码的计算机可读/可用介质,所述计算机程序代码使计算机基础设施能够提供在此所述的数据高速缓存功能。就此而言,计算机可读/可用介质包括实现本发明各种处理中每一种的程序代码。应当理解,术语“计算机可读介质”或“计算机可用介质”包括程序代码的任何类型物理实施例中的一种或多种。特别地,计算机可读/可用介质可以包括体现在一种或多种便携式存储制造品(例如,光盘、磁盘、磁带等)上、计算设备的一个或多个数据存储部分——诸如存储器28(图1)和/或存储系统34(图1)(例如,固定盘、只读存储器、随机存取存储器、高速缓存存储器等)——上的程序代码。
[0075] 在另一种实施例中,本发明提供了基于订阅、广告和/或收费来执行本发明过程的方法。即,服务提供商,诸如解决方案集成商,可以用来提供数据高速缓存功能。在这种情况下,服务提供商可以为一个或多个消费者创建、维护、支持等执行本发明处理的计算机基础设施,诸如计算机系统12(图1)。反过来,服务提供商可以根据订阅和/或收费协议从消费者收费和/或服务提供商可以从广告内容向一个或多个第三方的销售收费。
[0076] 在再一种实施例中,本发明提供了用于提供数据高速缓存功能的计算机实现方法。在这种情况下,可以提供计算机基础设施,诸如计算机系统12(图1),而且可以获得(例如,创建、购买、使用、修改等)用于执行本发明处理的一个或多个系统并且将其部署到该计算机基础设施。就此而言,系统的部署可以包括以下中的一个或多个(:1)在计算机设备,诸如计算机系统12(图1),上安装来自计算 机可读介质的程序代码(;2)把一个或多个计算设备添加到计算机基础设施;及(3)结合和/或修改计算机基础设施的一个或多个现有系统,以便使计算机基础设施能够执行本发明的处理。
[0077] 如在此所使用的,应当理解,术语“程序代码”和“计算机程序代码”是同义词而且意味着以任何语言、代码或符号形式的一组指令的任何表示,所述指令要使具有信息处理能力的计算设备直接地或者在以下中的任何一个或两个之后执行特定的功能:a)转换成另一种语言、代码或符号;b)以不同材料形式复制。就此而言,程序代码可以体现为以下中的一种或多种:应用/软件程序、组件软件/函数库、操作系统、基本设备系统/用于特定计算设备的驱动器,等等。
[0078] 适于存储和/或执行程序代码的数据处理系统可以在下文中提供并且可以包括直接地或者通过系统总线间接地通信耦合到存储器元件的至少一个处理器。存储器元件可以包括,但不限于,在程序代码的实际执行过程中采用的本地存储器、大容量储存器和高速缓存存储器,其中高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行过程中必须从大容量储存器检索代码的次数。输入/输出和/或其它外部设备(包括但不限于键盘、显示器、定点设备等)可以直接地或者通过居间设备控制器耦合到系统。
[0079] 网络适配器也可以耦合到系统,以使数据处理系统能够通过居间的专用或公共网络的任意组合变得耦合到其它数据处理系统、远端打印机、和/或存储设备等。说明性的网络适配器包括,但不限于,调制解调器、电缆调制解调器和以太网卡。
[0080] 给出本发明各个方面的以上描述是为了说明和描述。它不是详尽的或者要把本发明限定到所公开的精确形式而且,很显然,许多修改与变体都是可能的。对本领域技术人员来说可能很显然的这种修改与变化要包括在如所附权利要求定义的本发明范围之内。