用于分布式发布订阅系统消息有序获取的方法和系统.pdf

上传人:g**** 文档编号:4886670 上传时间:2018-11-22 格式:PDF 页数:15 大小:1.47MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310109002.X

申请日:

2013.03.29

公开号:

CN104079614A

公开日:

2014.10.01

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20130329|||公开

IPC分类号:

H04L29/08; H04L12/58

主分类号:

H04L29/08

申请人:

国际商业机器公司

发明人:

张凯; 张静; 张军; 魏佳

地址:

美国纽约阿芒克

优先权:

专利代理机构:

北京市金杜律师事务所 11256

代理人:

酆迅;李峥宇

PDF下载: PDF下载
内容摘要

本发明涉及计算机网络环境下的发布订阅系统(Pub/Sub),更具体地,本发明尤其涉及用于分布式发布订阅系统消息有序获取的方法和系统。本发明提供了一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法,所述分布式订阅发布系统包括至少一个消息中转服务器,所述方法包括:确定待获取的多个消息的排序;在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。

权利要求书

权利要求书1.  一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法,所述分布式订阅发布系统包括至少一个消息中转服务器,所述方法包括:确定待获取的多个消息的排序;在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。2.  如权利要求1所述的方法,其中在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器包括:查询所述多个消息分别位于的消息中转服务器的标识;以及将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。3.  如权利要求1所述的方法,还包括:为所述多个消息中的每个消息,在多个订阅者中确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。4.  如权利要求3所述的方法,其中利用所述消息中转服务器序列表,从相应的消息中转服务器按序获取所述多个消息包括:在所述多个订阅者中,未被确定为负责的订阅者的其它订阅者直接利用当前消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息中的一个或多个消息。5.  如权利要求2所述的方法,还包括:判断所查询到的消息中转服务器中是否还有基于同一主题的其它消息;响应于判断结果为是,将该查询到的消息中转服务器记录在所述 消息中转服务器序列信息中的对应于该其它消息的位置。6.  如权利要求3所述的方法,其中利用锁竞争的方式确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。7.  如权利要求1所述的方法,其中在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器包括:判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消息的消息中转服务器;以及响应于判断结果为否,在消息中转服务器序列信息中记录该特定消息所位于的消息中转服务器,并且利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息包括:响应于判断结果为是,利用当前的消息中转服务器序列信息,从相应的消息中转服务器按序获取该特定消息。8.  一种用于在分布式订阅发布环境中有序获取基于特定主题的多个消息的系统,所述分布式订阅发布环境包括至少一个消息中转服务器,所述系统包括:排序确定装置,被配置为确定待获取的多个消息的排序;记录装置,被配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及消息获取装置,被配置为利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。9.  如权利要求8所述的系统,其中记录装置被配置为:查询所述多个消息分别位于的消息中转服务器的标识;以及将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。10.  如权利要求8所述的系统,还包括:订阅者确定装置,配置为为所述多个消息中的每个消息,在多个 订阅者中确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。11.  如权利要求10所述的系统,其中消息获取装置被进一步配置为:在所述多个订阅者中,未被确定为负责的订阅者的其它订阅者直接利用当前消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息中的一个或多个消息。12.  如权利要求9所述的系统,还包括:第一判断装置,被配置为判断所查询到的消息中转服务器中是否还有基于同一主题的其它消息;以及响应于判断结果为是,将该查询到的消息中转服务器记录在所述消息中转服务器序列信息中的对应于该其它消息的位置。13.  如权利要求10所述的系统,其中利用锁竞争的方式确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。14.  如权利要求8所述的系统,其中记录装置被进一步配置为:判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消息的消息中转服务器;以及响应于判断结果为否,在消息中转服务器序列信息中记录该特定消息所位于的消息中转服务器,并且消息获取装置被进一步配置为:响应于判断结果为是,利用当前的消息中转服务器序列信息,从相应的消息中转服务器按序获取该特定消息。

说明书

说明书用于分布式发布订阅系统消息有序获取的方法和系统
技术领域
本发明涉及计算机网络环境下的发布订阅系统(Pub/Sub),更具体地,本发明尤其涉及分布式计算机网络环境下的发布订阅系统中,有序获取消息的方法和系统。
背景技术
目前,消息发布订阅系统(Pub/Sub)成为计算机网络时代用户获取网络信息的重要方式之一。在发布/订阅系统中,众多订阅者按照自己的需求选择感兴趣的消息源。一旦发布者发布消息,该消息就被订阅者所获取。
随着分布式计算机网络环境得到广泛应用,目前发布/订阅系统主要采用两种模式:主动推送消息的模式和订阅者主动获取消息的模式。在主动推送消息的模式中,发布者发布的消息被发送至多个分布式的消息中转服务器(发布者并不知晓每个消息被发送至哪个具体的中转服务器),然后消息中转服务器将消息推送至订阅者,这种模式对消息中转服务器的要求比较高。在订阅者主动获取消息的模式中,消息中转服务器不负责推送消息,而是由订阅者主动从消息中转服务器获取其订阅的消息,这种模式可以减轻服务器端的资源消耗。
由于很多发布订阅系统中所发布的消息都是有顺序要求的,例如,对于股市即时行情的消息发布订阅系统,必须保证订阅者接收到的消息是严格按照时间顺序的。又例如,在足球比赛现场直播的消息发布订阅系统中,消息的接收也必须严格按照时间顺序。由于可能存在多个发布者,不能保证多个发布者之间彼此协调严格按照顺序发布消息,也不能保证先发布的消息一定先到达消息中转服务器,因此可能出现时间戳靠后的消息先到达订阅者的情形。
对于上述主动推送模式的发布/订阅系统,可以在消息中转服务器中设定发布消息的时间戳,并由消息中转服务器按照正确的顺序将消息依次推送至订阅者。但是这种情形下,对消息中转服务器的依赖极高,不仅需要服务器端理解发布者和订阅者之间约定的顺序要求,还要对众多分散在多个分布式服务器上的消息进行统一排序并主动推送至千千万万个订阅者。同时,即使按照正确的顺序将消息依次推送出去,也不能保证订阅者一定能按照正确的顺序接收到所有消息。
而在上述订阅者主动获取消息的发布订阅系统中,还没有能够保证订阅者按照正确的顺序接收消息的技术方案。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种用于分布式计算机网络环境下的发布订阅系统中,有序获取消息的方法和系统。
根据本发明的一个方面,提供了一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法,所述分布式订阅发布系统包括至少一个消息中转服务器,所述方法包括:确定待获取的多个消息的排序;在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。
根据本发明的另一方面,提供了一种用于在分布式订阅发布环境中有序获取基于特定主题的多个消息的系统,所述分布式订阅发布环境包括至少一个消息中转服务器,所述系统包括:排序确定装置,被配置为确定待获取的多个消息的排序;记录装置,被配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及消息获取装置,被配置为利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。
根据本发明所提供的方法或系统,可以在订阅者主动获取消息模式的发布订阅系统中,使所有的订阅者按照预定的消息顺序正确依序获取消息,并且无需增加服务器的额外负担,同时使尽可能多的订阅者直接有序获取消息,而无需重复性地执行查询、记录等操作。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图;
图3示出了根据本发明另一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图;
图4示出了根据本发明一实施例的示例性分布式订阅发布系统架构图;
图5示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的系统的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码 等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在 用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参看图1。图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理 器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键 盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
接下来介绍图2。图2示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图。图2所示的方法从步骤201开始。在步骤201中,确定待获取的多个消息的排序。首先需要明确的是,这里所说的“多个消息”是指基于同一主题的多个消息,例如,基于同一场足球比赛的直播这一主题而发布的多个消息。本领域技术人员应当理解,在发布/订阅系统中,发布者和订阅者基于事先的约定已经定义好该主题的消息的排序规则,例如在股市行情消息发布系统中,发布者和订阅者事先约定好每分钟发布一次股市行情消息,消息的排序按照分钟的顺序排列,每分钟发布的股市行情消息可以附加时间戳用于标识。因此,在步骤201中,可以确定待获取的多个消息的排序。也就是说,股市行情消息的订阅者知晓第1分钟的股市行情消息之后应该是第2分钟的股市行情消息,以此类推。现在的问题是,由于每分钟的股市行情信息可能被发布至不确定的消息中转服务器上,而订阅者并不知晓每条股市行情消息究竟在哪个中转服务器上,因此无法有序获取股市行情消息。而消息中转服务器并不了解发布者和订阅者之间约定好的消息顺序规则,并且在订阅者主动获取消息模式的发布/订阅系统中,消息中转服务器也不负责推送消息。
接下来,图2所示的方法进行至步骤202,在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序。根据本发明的一个实施例,消息中转服务器序列信息存储于某消息中转服务器中。根据本发明的另一实施例,消息中转服务器序列信息存储于独立于所有消息中转服务器、订阅者、发布者的位置,但是与订阅者之间可通信地耦合。根据本发明的一个实施例,消息中转服务器序列信息既可以以数据表的形式存在,也可以以任何其它数据文件、元数据信息的方式存在。如上所述,由于多个消息中的每条消息究竟被发布至哪个消息中转服务器是不确定的,因此要在消息中转服务器序列信息中记录每个消息被发布在哪个消息中转服务器上,从而订阅者可以直接从相应的消息中转服务器上获取该消息。举例而言,假设基于某特定主题Topic1发布了5条消息,其顺序是M1,M2,M3,M4和M5,而M1和M5被发布至消息中转服务器B1,M2被发布至消息中转服务器B3,M3被发布至消息中转服务器B2,M4被发布至消息中转服务器B0,那么在步骤202中记录完成的消息中转服务器序列信息的一个示例可以是:
Topic1:B1,B3,B2,B0,B1
可以看出,该序列信息中的每个位置分别依序对应于每个消息所位于的消息中转服务器。这样,订阅者通过读取这个序列信息,就可以从相应的消息中转服务器有序获取基于主题Topic1的多个消息。
需要强调的是,消息中转服务器序列信息是一个动态更新的过程,并非一次性记录完成的。一旦该主题下有新的消息被发布,那么就需要动态地(按照预定的时间间隔)更新消息中转服务器序列信息。并且,假设消息M3被B2接收到的时刻由于网络时延的原因被滞后,而导致消息M4已经被B0接收到,但是本应在前的消息M3还未被B2接收到,那么消息中转服务器序列信息可能是:
Topic1:B1,B3,,B0,B1
也就是说,对应于消息M3的位置上的内容为空。这种情况下, 一旦订阅者读取到该序列信息,发现M3的位置上为空,即使后面对应于M4和M5上的消息中转服务器已经确定,订阅者也不会去B0和B1上获取M4和M5,而是会等待(或者主动查询并记录,参见下文描述)对应于消息M3的中转服务器被确定,这样就保证了消息的有序获取。
根据本发明的一个实施例,其中在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器包括:查询所述多个消息分别位于的消息中转服务器的标识;以及将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。根据一个优选实施方式,这里的“查询”指的是针对每个消息,依次询问各个消息中转服务器。直至确定某个消息中转服务器上存有该消息,然后将该消息中转服务器的标识(例如上面例子里的B1)记录在消息中转服务器序列信息中的相应位置。需要指出的是,“查询”的步骤并非必需的,完全有可能当消息被发布至消息中转服务器时,消息中转服务器自动记录该消息的标识以及相应的消息中转服务器的标识的对应关系,而无需重新查询。
根据本发明的一个实施例,为多个消息中的每个消息,在多个订阅者中确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。由于每个订阅者基于同一主题对消息的接收顺序的要求通常是一致的,因此一旦有一个订阅者查询得知某条消息所位于的消息中转服务器,并将该消息中转服务器标识记录在消息中转服务器序列信息中的相应位置后,其它所有的订阅者都可以直接利用消息中转服务器序列信息去有序获取消息,而无需重新查询,从而可以节省大量的查询时间和等待时间。也就是说,未被确定为负责的订阅者的其它订阅者直接利用当前消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息中的一个或多个消息。
根据本发明的一个实施例,利用锁竞争的方式确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的 订阅者。如果有多个订阅者均提出了查询或记录的请求,要保证只有一个订阅者有权限更新消息中转服务器序列信息,否则就可能出错。锁竞争的方式可能包括乐观锁或悲观锁,锁竞争属于本领域的现有技术,在此不再赘述。
还需要强调的是,步骤202对于多个消息中的每个消息而言是必需的,但是对于每个订阅者而言可能不是必需的。因为一旦有订阅者在消息中转服务器序列信息中记录了相关信息,那么其它的订阅者就无需再重新记录。
接下来,图2所示的方法进行至步骤203,利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。从上面给出的消息中转服务器序列信息的例子可以容易地理解步骤203的操作。
图3示出了根据本发明另一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图。步骤301对应于图2中的步骤201,在此不再赘述。
在步骤302中,判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消息的消息中转服务器。例如,某个订阅者已经获取到了消息M1、M2和M3,现在需要获取消息M4,那么该订阅者可以先判断一下M4对应的消息中转服务器是否已经被记录在消息中转服务器序列信息中。如果判断结果为是,则进行至步骤307(对应于图2中的步骤203)利用当前的消息中转服务器序列信息,从相应的消息中转服务器按序获取该特定消息。如果判断结果为否,则进行至步骤303,确定负责在消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。确定订阅者的相关技术内容在上文中已经描述,在此不再赘述。
接下来,图3所示的方法进行至步骤304,查询该消息所位于的消息中转服务器的标识,以及步骤305,将所查询到的标识记录在消息中转服务器序列信息中的相应位置。步骤304和305在上文对图2的描述中也已记载,在此不再赘述。
接下来,图3所示的方法进行至步骤306,判断所查询到的消息中转服务器中是否还有基于同一主题的其它消息。如果判断结果为是,则进行至步骤305,将该消息中转服务器记录在序列信息中的对应于该其它消息的位置。如果判断结果为否,则进行至步骤307,利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。例如,如果在查询消息M1所位于的消息中转服务器时,发现消息中转服务器B1上除了有M1之外还有M5,那么可以直接将B1记录在消息中转服务器序列信息中对应于消息M5的位置,这样就省去了将来再次查询M5所位于的消息中转服务器的操作。当然,本领域技术人员应当理解,步骤306并非必需的步骤,而仅仅是一种优化方案。完全可以逐个查询并记录每个消息所位于的消息中转服务器。
图4示出了根据本发明一实施例的示例性分布式订阅发布系统架构图。在图4的左侧,示出了由发布者(producer)发布的m1-m6总共6个基于主题topic1的消息。中间方框内示出了分布式环境下的三个消息中转服务器,broker1,broker2和broker3,其中消息m1和m5位于broker1,m2和m3位于broker2,m4和m6位于broker3。而图4的右侧则示出了订阅者(consumer)有序接收到了6个消息。中间方框的下部示出了最终的消息中转服务器序列信息(Broker list)。中间方框中部示意性地给出了一个关于broker,topic和message的三元数据结构组,这个三元数据结构组的目的是记录每个消息中转服务器上针对每个特定主题存储有哪些消息,这样便于订阅者直接根据该三元数据结构组的记录来更新消息中转服务器序列信息。根据本发明一个实施例,该三元数据结构组可以由消息中转服务器负责记录并更新(不会过多地增大消息中转服务器的负担),也可以由订阅者来负责记录并更新,也可以由发布者负责记录并更新。需要强调的是,该三元数据结构并非必需的,如上文对图2和图3的描述,完全可以在没有该三元数据结构或类似的用于记录中间信息的数据结构的情况下实现本发明的目的。
还需要强调的是,也可以采用让发布者来查询并记录消息中转服务器序列信息的方式实现本发明构思,只要最终订阅者通过消息中转服务器序列信息主动有序获取各个消息即可。
图5示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的系统的框图。图5所示的系统在整体上由系统500表示。具体地,系统500包括排序确定装置501,被配置为确定待获取的多个消息的排序;记录装置502,被配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及消息获取装置503,被配置为利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。本领域技术人员应当理解,系统500的装置501-503分别对应于图2所示的方法中的步骤201-203,在此不再赘述。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者 使本技术领域的其它普通技术人员能理解本文披露的各实施例。

用于分布式发布订阅系统消息有序获取的方法和系统.pdf_第1页
第1页 / 共15页
用于分布式发布订阅系统消息有序获取的方法和系统.pdf_第2页
第2页 / 共15页
用于分布式发布订阅系统消息有序获取的方法和系统.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《用于分布式发布订阅系统消息有序获取的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于分布式发布订阅系统消息有序获取的方法和系统.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104079614 A (43)申请公布日 2014.10.01 CN 104079614 A (21)申请号 201310109002.X (22)申请日 2013.03.29 H04L 29/08(2006.01) H04L 12/58(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约阿芒克 (72)发明人 张凯 张静 张军 魏佳 (74)专利代理机构 北京市金杜律师事务所 11256 代理人 酆迅 李峥宇 (54) 发明名称 用于分布式发布订阅系统消息有序获取的方 法和系统 (57) 摘要 本发明涉及计算机网络环境下的发布订阅系 统 (Pub/。

2、Sub), 更具体地, 本发明尤其涉及用于分 布式发布订阅系统消息有序获取的方法和系统。 本发明提供了一种用于在分布式订阅发布系统中 有序获取基于特定主题的多个消息的方法, 所述 分布式订阅发布系统包括至少一个消息中转服务 器, 所述方法包括 : 确定待获取的多个消息的排 序 ; 在消息中转服务器序列信息中记录所述多个 消息分别位于的消息中转服务器, 所述消息中转 服务器序列信息中的消息中转服务器排序对应于 所确定的多个消息的排序 ; 以及利用所述消息中 转服务器序列信息, 从相应的消息中转服务器按 序获取所述多个消息。 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 4 页。

3、 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书8页 附图4页 (10)申请公布号 CN 104079614 A CN 104079614 A 1/2 页 2 1. 一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法, 所述 分布式订阅发布系统包括至少一个消息中转服务器, 所述方法包括 : 确定待获取的多个消息的排序 ; 在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器, 所述消 息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序 ; 以及 利用所述消息中转服务器序列信息, 从相应的消息中转服务器按序获取。

4、所述多个消 息。 2. 如权利要求 1 所述的方法, 其中在消息中转服务器序列信息中记录所述多个消息分 别位于的消息中转服务器包括 : 查询所述多个消息分别位于的消息中转服务器的标识 ; 以及 将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。 3. 如权利要求 1 所述的方法, 还包括 : 为所述多个消息中的每个消息, 在多个订阅者中确定负责在消息中转服务器序列信息 中记录所述每个消息所位于的消息中转服务器的订阅者。 4. 如权利要求 3 所述的方法, 其中利用所述消息中转服务器序列表, 从相应的消息中 转服务器按序获取所述多个消息包括 : 在所述多个订阅者中, 未被确定为负责的。

5、订阅者的其它订阅者直接利用当前消息中转 服务器序列信息, 从相应的消息中转服务器按序获取所述多个消息中的一个或多个消息。 5. 如权利要求 2 所述的方法, 还包括 : 判断所查询到的消息中转服务器中是否还有基于同一主题的其它消息 ; 响应于判断结果为是, 将该查询到的消息中转服务器记录在所述消息中转服务器序列 信息中的对应于该其它消息的位置。 6. 如权利要求 3 所述的方法, 其中利用锁竞争的方式确定负责在消息中转服务器序列 信息中记录所述每个消息所位于的消息中转服务器的订阅者。 7. 如权利要求 1 所述的方法, 其中在消息中转服务器序列信息中记录所述多个消息分 别位于的消息中转服务器包。

6、括 : 判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消 息的消息中转服务器 ; 以及 响应于判断结果为否, 在消息中转服务器序列信息中记录该特定消息所位于的消息中 转服务器, 并且 利用所述消息中转服务器序列信息, 从相应的消息中转服务器按序获取所述多个消息 包括 : 响应于判断结果为是, 利用当前的消息中转服务器序列信息, 从相应的消息中转服务 器按序获取该特定消息。 8. 一种用于在分布式订阅发布环境中有序获取基于特定主题的多个消息的系统, 所述 分布式订阅发布环境包括至少一个消息中转服务器, 所述系统包括 : 排序确定装置, 被配置为确定待获取的多个消息的排序 。

7、; 记录装置, 被配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息 中转服务器, 所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个 权 利 要 求 书 CN 104079614 A 2 2/2 页 3 消息的排序 ; 以及 消息获取装置, 被配置为利用所述消息中转服务器序列信息, 从相应的消息中转服务 器按序获取所述多个消息。 9. 如权利要求 8 所述的系统, 其中记录装置被配置为 : 查询所述多个消息分别位于的消息中转服务器的标识 ; 以及 将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。 10. 如权利要求 8 所述的系统, 还包括 : 订阅。

8、者确定装置, 配置为为所述多个消息中的每个消息, 在多个订阅者中确定负责在 消息中转服务器序列信息中记录所述每个消息所位于的消息中转服务器的订阅者。 11. 如权利要求 10 所述的系统, 其中消息获取装置被进一步配置为 : 在所述多个订阅者中, 未被确定为负责的订阅者的其它订阅者直接利用当前消息中转 服务器序列信息, 从相应的消息中转服务器按序获取所述多个消息中的一个或多个消息。 12. 如权利要求 9 所述的系统, 还包括 : 第一判断装置, 被配置为判断所查询到的消息中转服务器中是否还有基于同一主题的 其它消息 ; 以及 响应于判断结果为是, 将该查询到的消息中转服务器记录在所述消息中转。

9、服务器序列 信息中的对应于该其它消息的位置。 13. 如权利要求 10 所述的系统, 其中利用锁竞争的方式确定负责在消息中转服务器序 列信息中记录所述每个消息所位于的消息中转服务器的订阅者。 14. 如权利要求 8 所述的系统, 其中记录装置被进一步配置为 : 判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消 息的消息中转服务器 ; 以及 响应于判断结果为否, 在消息中转服务器序列信息中记录该特定消息所位于的消息中 转服务器, 并且 消息获取装置被进一步配置为 : 响应于判断结果为是, 利用当前的消息中转服务器序列信息, 从相应的消息中转服务 器按序获取该特定消息。 权。

10、 利 要 求 书 CN 104079614 A 3 1/8 页 4 用于分布式发布订阅系统消息有序获取的方法和系统 技术领域 0001 本发明涉及计算机网络环境下的发布订阅系统 (Pub/Sub), 更具体地, 本发明尤其 涉及分布式计算机网络环境下的发布订阅系统中, 有序获取消息的方法和系统。 背景技术 0002 目前, 消息发布订阅系统 (Pub/Sub) 成为计算机网络时代用户获取网络信息的重 要方式之一。在发布 / 订阅系统中, 众多订阅者按照自己的需求选择感兴趣的消息源。一 旦发布者发布消息, 该消息就被订阅者所获取。 0003 随着分布式计算机网络环境得到广泛应用, 目前发布 / 。

11、订阅系统主要采用两种模 式 : 主动推送消息的模式和订阅者主动获取消息的模式。 在主动推送消息的模式中, 发布者 发布的消息被发送至多个分布式的消息中转服务器 ( 发布者并不知晓每个消息被发送至 哪个具体的中转服务器 ), 然后消息中转服务器将消息推送至订阅者, 这种模式对消息中转 服务器的要求比较高。 在订阅者主动获取消息的模式中, 消息中转服务器不负责推送消息, 而是由订阅者主动从消息中转服务器获取其订阅的消息, 这种模式可以减轻服务器端的资 源消耗。 0004 由于很多发布订阅系统中所发布的消息都是有顺序要求的, 例如, 对于股市即时 行情的消息发布订阅系统, 必须保证订阅者接收到的消息。

12、是严格按照时间顺序的。 又例如, 在足球比赛现场直播的消息发布订阅系统中, 消息的接收也必须严格按照时间顺序。由于 可能存在多个发布者, 不能保证多个发布者之间彼此协调严格按照顺序发布消息, 也不能 保证先发布的消息一定先到达消息中转服务器, 因此可能出现时间戳靠后的消息先到达订 阅者的情形。 0005 对于上述主动推送模式的发布 / 订阅系统, 可以在消息中转服务器中设定发布消 息的时间戳, 并由消息中转服务器按照正确的顺序将消息依次推送至订阅者。但是这种 情形下, 对消息中转服务器的依赖极高, 不仅需要服务器端理解发布者和订阅者之间约定 的顺序要求, 还要对众多分散在多个分布式服务器上的消。

13、息进行统一排序并主动推送至 千千万万个订阅者。 同时, 即使按照正确的顺序将消息依次推送出去, 也不能保证订阅者一 定能按照正确的顺序接收到所有消息。 0006 而在上述订阅者主动获取消息的发布订阅系统中, 还没有能够保证订阅者按照正 确的顺序接收消息的技术方案。 发明内容 0007 考虑到上述存在的问题, 本发明的目的之一在于提供一种用于分布式计算机网络 环境下的发布订阅系统中, 有序获取消息的方法和系统。 0008 根据本发明的一个方面, 提供了一种用于在分布式订阅发布系统中有序获取基于 特定主题的多个消息的方法, 所述分布式订阅发布系统包括至少一个消息中转服务器, 所 述方法包括 : 确。

14、定待获取的多个消息的排序 ; 在消息中转服务器序列信息中记录所述多个 说 明 书 CN 104079614 A 4 2/8 页 5 消息分别位于的消息中转服务器, 所述消息中转服务器序列信息中的消息中转服务器排序 对应于所确定的多个消息的排序 ; 以及利用所述消息中转服务器序列信息, 从相应的消息 中转服务器按序获取所述多个消息。 0009 根据本发明的另一方面, 提供了一种用于在分布式订阅发布环境中有序获取基于 特定主题的多个消息的系统, 所述分布式订阅发布环境包括至少一个消息中转服务器, 所 述系统包括 : 排序确定装置, 被配置为确定待获取的多个消息的排序 ; 记录装置, 被配置为 在消。

15、息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器, 所述消息中 转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序 ; 以及消息获 取装置, 被配置为利用所述消息中转服务器序列信息, 从相应的消息中转服务器按序获取 所述多个消息。 0010 根据本发明所提供的方法或系统, 可以在订阅者主动获取消息模式的发布订阅系 统中, 使所有的订阅者按照预定的消息顺序正确依序获取消息, 并且无需增加服务器的额 外负担, 同时使尽可能多的订阅者直接有序获取消息, 而无需重复性地执行查询、 记录等操 作。 附图说明 0011 通过对结合附图所示出的实施方式进行详细说明, 本发明的上。

16、述以及其他特征将 更加明显, 本发明附图中相同的标号表示相同或相似的部件。在附图中, 0012 图 1 示出了适于用来实现本发明实施方式的示例性计算系统 100 的框图 ; 0013 图 2 示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于 特定主题的多个消息的方法的流程图 ; 0014 图 3 示出了根据本发明另一实施例的用于在分布式订阅发布系统中有序获取基 于特定主题的多个消息的方法的流程图 ; 0015 图 4 示出了根据本发明一实施例的示例性分布式订阅发布系统架构图 ; 0016 图 5 示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于 特定主题的多个消。

17、息的系统的框图。 具体实施方式 0017 下面将参照附图更详细地描述本公开的优选实施方式。 虽然附图中显示了本公开 的优选实施方式, 然而应该理解, 可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。 相反, 提供这些实施方式是为了使本公开更加透彻和完整, 并且能够将本公开的 范围完整地传达给本领域的技术人员。 0018 所属技术领域的技术人员知道, 本发明可以实现为系统、 方法或计算机程序产品。 因此, 本公开可以具体实现为以下形式, 即 : 可以是完全的硬件、 也可以是完全的软件 ( 包 括固件、 驻留软件、 微代码等 ), 还可以是硬件和软件结合的形式, 本文一般称为 “电路”。

18、 、“模 块” 或 “系统” 。此外, 在一些实施例中, 本发明还可以实现为在一个或多个计算机可读介质 中的计算机程序产品的形式, 该计算机可读介质中包含计算机可读的程序代码。 0019 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计 算机可读信号介质或者计算机可读存储介质。 计算机可读存储介质例如可以是但不限 说 明 书 CN 104079614 A 5 3/8 页 6 于电、 磁、 光、 电磁、 红外线、 或半导体的系统、 装置或器件, 或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括 : 具有一个或多个导线的电连接、 便 携式计算机磁盘、 。

19、硬盘、 随机存取存储器 (RAM)、 只读存储器 (ROM)、 可擦式可编程只读存储 器(EPROM或闪存)、 光纤、 便携式紧凑磁盘只读存储器(CD-ROM)、 光存储器件、 磁存储器件、 或者上述的任意合适的组合。在本文件中, 计算机可读存储介质可以是任何包含或存储程 序的有形介质, 该程序可以被指令执行系统、 装置或者器件使用或者与其结合使用。 0020 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式, 包括但 不限于电磁信号、 光信号或上述的任意合适的组合。计算机可读的信号介质还可以是 计算机可。

20、读存储介质以外的任何计算机可读介质, 该计算机可读介质可以发送、 传播或者 传输用于由指令执行系统、 装置或者器件使用或者与其结合使用的程序。 0021 计算机可读介质上包含的程序代码可以用任何适当的介质传输, 包括但不限 于无线、 电线、 光缆、 RF 等等, 或者上述的任意合适的组合。 0022 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码, 所述程序设计语言包括面向对象的程序设计语言 - 诸如 Java、 Smalltalk、 C+, 还包括常规的过程式程序设计语言 - 诸如” C” 语言或类似的程序设计语言。程序代码可以 完全地在用户计算机上执行、 部。

21、分地在用户计算机上执行、 作为一个独立的软件包执行、 部 分在用户计算机上部分在远程计算机上执行、 或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络包括局域网 (LAN) 或 广域网 (WAN)- 连接到用户计算机, 或者, 可以连接到外部计算机 ( 例如利用因特网服务提 供商来通过因特网连接 )。 0023 下面将参照本发明实施例的方法、 装置 ( 系统 ) 和计算机程序产品的流程图和 / 或框图描述本发明。应当理解, 流程图和 / 或框图的每个方框以及流程图和 / 或框图中各 方框的组合, 都可以由计算机程序指令实现。 这些计算机程序指令可。

22、以提供给通用计算机、 专用计算机或其它可编程数据处理装置的处理器, 从而生产出一种机器, 这些计算机程序 指令通过计算机或其它可编程数据处理装置执行, 产生了实现流程图和 / 或框图中的方框 中规定的功能 / 操作的装置。 0024 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中, 这样, 存储在计算机可读介质中的指令就产生出一 个包括实现流程图和 / 或框图中的方框中规定的功能 / 操作的指令装置 (instruction means) 的制造品 (manufacture)。 0025 也可以把计算机程序指令加载到计算机、 其它可编程数。

23、据处理装置、 或其它设备 上, 使得在计算机、 其它可编程数据处理装置或其它设备上执行一系列操作步骤, 以产生计 算机实现的过程, 从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和 / 或框图中的方框中规定的功能 / 操作的过程。 0026 下面参看图 1。图 1 示出了适于用来实现本发明实施方式的示例性计算机系统 / 服务器 12 的框图。图 1 显示的计算机系统 / 服务器 12 仅仅是一个示例, 不应对本发明实 施例的功能和使用范围带来任何限制。 0027 如图 1 所示, 计算机系统 / 服务器 12 以通用计算设备的形式表现。计算机系统 说 明 书 CN 10407。

24、9614 A 6 4/8 页 7 / 服务器 12 的组件可以包括但不限于 : 一个或者多个处理器或者处理单元 16, 系统存储器 28, 连接不同系统组件 ( 包括系统存储器 28 和处理单元 16) 的总线 18。 0028 总线 18 表示几类总线结构中的一种或多种, 包括存储器总线或者存储器控制器, 外围总线, 图形加速端口, 处理器或者使用多种总线结构中的任意总线结构的局域总线。 举 例来说, 这些体系结构包括但不限于工业标准体系结构 (ISA) 总线, 微通道体系结构 (MAC) 总线, 增强型 ISA 总线、 视频电子标准协会 (VESA) 局域总线以及外围组件互连 (PCI) 。

25、总线。 0029 计算机系统 / 服务器 12 典型地包括多种计算机系统可读介质。这些介质可以是 任何能够被计算机系统 / 服务器 12 访问的可用介质, 包括易失性和非易失性介质, 可移动 的和不可移动的介质。 0030 系统存储器 28 可以包括易失性存储器形式的计算机系统可读介质, 例如随机存 取存储器 (RAM)30 和 / 或高速缓存存储器 32。计算机系统 / 服务器 12 可以进一步包括其 它可移动/不可移动的、 易失性/非易失性计算机系统存储介质。 仅作为举例, 存储系统34 可以用于读写不可移动的、 非易失性磁介质 ( 图 1 未显示, 通常称为 “硬盘驱动器” )。尽管 图。

26、 1 中未示出, 可以提供用于对可移动非易失性磁盘 ( 例如 “软盘” ) 读写的磁盘驱动器, 以及对可移动非易失性光盘 ( 例如 CD-ROM, DVD-ROM 或者其它光介质 ) 读写的光盘驱动器。 在这些情况下, 每个驱动器可以通过一个或者多个数据介质接口与总线18相连。 存储器28 可以包括至少一个程序产品, 该程序产品具有一组(例如至少一个)程序模块, 这些程序模 块被配置以执行本发明各实施例的功能。 0031 具有一组(至少一个)程序模块42的程序/实用工具40, 可以存储在例如存储器 28 中, 这样的程序模块 42 包括但不限于操作系统、 一个或者多个应用程序、 其它 程序模块。

27、以及程序数据, 这些示例中的每一个或某种组合中可能包括网络环境的实现。程 序模块 42 通常执行本发明所描述的实施例中的功能和 / 或方法。 0032 计算机系统 / 服务器 12 也可以与一个或多个外部设备 14( 例如键盘、 指向设备、 显示器 24 等 ) 通信, 还可与一个或者多个使得用户能与该计算机系统 / 服务器 12 交互的 设备通信, 和 / 或与使得该计算机系统 / 服务器 12 能与一个或多个其它计算设备进行通信 的任何设备 ( 例如网卡, 调制解调器等等 ) 通信。这种通信可以通过输入 / 输出 (I/O) 接 口 22 进行。并且, 计算机系统 / 服务器 12 还可以。

28、通过网络适配器 20 与一个或者多个网络 ( 例如局域网 (LAN), 广域网 (WAN) 和 / 或公共网络, 例如因特网 ) 通信。如图所示, 网络适 配器 20 通过总线 18 与计算机系统 / 服务器 12 的其它模块通信。应当明白, 尽管图中未示 出, 可以结合计算机系统 / 服务器 12 使用其它硬件和 / 或软件模块, 包括但不限于 : 微代 码、 设备驱动器、 冗余处理单元、 外部磁盘驱动阵列、 RAID 系统、 磁带驱动器以及数据备份存 储系统等。 0033 接下来介绍图 2。图 2 示出了根据本发明一实施例的用于在分布式订阅发布系统 中有序获取基于特定主题的多个消息的方法的。

29、流程图。图 2 所示的方法从步骤 201 开始。 在步骤 201 中, 确定待获取的多个消息的排序。首先需要明确的是, 这里所说的 “多个消息” 是指基于同一主题的多个消息, 例如, 基于同一场足球比赛的直播这一主题而发布的多个 消息。本领域技术人员应当理解, 在发布 / 订阅系统中, 发布者和订阅者基于事先的约定已 经定义好该主题的消息的排序规则, 例如在股市行情消息发布系统中, 发布者和订阅者事 先约定好每分钟发布一次股市行情消息, 消息的排序按照分钟的顺序排列, 每分钟发布的 说 明 书 CN 104079614 A 7 5/8 页 8 股市行情消息可以附加时间戳用于标识。因此, 在步骤。

30、 201 中, 可以确定待获取的多个消息 的排序。也就是说, 股市行情消息的订阅者知晓第 1 分钟的股市行情消息之后应该是第 2 分钟的股市行情消息, 以此类推。 现在的问题是, 由于每分钟的股市行情信息可能被发布至 不确定的消息中转服务器上, 而订阅者并不知晓每条股市行情消息究竟在哪个中转服务器 上, 因此无法有序获取股市行情消息。而消息中转服务器并不了解发布者和订阅者之间约 定好的消息顺序规则, 并且在订阅者主动获取消息模式的发布 / 订阅系统中, 消息中转服 务器也不负责推送消息。 0034 接下来, 图 2 所示的方法进行至步骤 202, 在消息中转服务器序列信息中记录所述 多个消息分。

31、别位于的消息中转服务器, 所述消息中转服务器序列信息中的消息中转服务器 排序对应于所确定的多个消息的排序。根据本发明的一个实施例, 消息中转服务器序列信 息存储于某消息中转服务器中。根据本发明的另一实施例, 消息中转服务器序列信息存储 于独立于所有消息中转服务器、 订阅者、 发布者的位置, 但是与订阅者之间可通信地耦合。 根据本发明的一个实施例, 消息中转服务器序列信息既可以以数据表的形式存在, 也可以 以任何其它数据文件、 元数据信息的方式存在。 如上所述, 由于多个消息中的每条消息究竟 被发布至哪个消息中转服务器是不确定的, 因此要在消息中转服务器序列信息中记录每个 消息被发布在哪个消息中。

32、转服务器上, 从而订阅者可以直接从相应的消息中转服务器上获 取该消息。举例而言, 假设基于某特定主题 Topic1 发布了 5 条消息, 其顺序是 M1, M2, M3, M4 和 M5, 而 M1 和 M5 被发布至消息中转服务器 B1, M2 被发布至消息中转服务器 B3, M3 被发 布至消息中转服务器 B2, M4 被发布至消息中转服务器 B0, 那么在步骤 202 中记录完成的消 息中转服务器序列信息的一个示例可以是 : 0035 Topic1 : B1, B3, B2, B0, B1 0036 可以看出, 该序列信息中的每个位置分别依序对应于每个消息所位于的消息中转 服务器。 这样。

33、, 订阅者通过读取这个序列信息, 就可以从相应的消息中转服务器有序获取基 于主题 Topic1 的多个消息。 0037 需要强调的是, 消息中转服务器序列信息是一个动态更新的过程, 并非一次性记 录完成的。一旦该主题下有新的消息被发布, 那么就需要动态地 ( 按照预定的时间间隔 ) 更新消息中转服务器序列信息。并且, 假设消息 M3 被 B2 接收到的时刻由于网络时延的原 因被滞后, 而导致消息 M4 已经被 B0 接收到, 但是本应在前的消息 M3 还未被 B2 接收到, 那 么消息中转服务器序列信息可能是 : 0038 Topic1 : B1, B3, , B0, B1 0039 也就是说。

34、, 对应于消息 M3 的位置上的内容为空。这种情况下, 一旦订阅者读取到 该序列信息, 发现 M3 的位置上为空, 即使后面对应于 M4 和 M5 上的消息中转服务器已经确 定, 订阅者也不会去B0和B1上获取M4和M5, 而是会等待(或者主动查询并记录, 参见下文 描述 ) 对应于消息 M3 的中转服务器被确定, 这样就保证了消息的有序获取。 0040 根据本发明的一个实施例, 其中在消息中转服务器序列信息中记录所述多个消息 分别位于的消息中转服务器包括 : 查询所述多个消息分别位于的消息中转服务器的标识 ; 以及将所查询到的标识分别记录在消息中转服务器序列信息中的相应位置。 根据一个优选 。

35、实施方式, 这里的 “查询” 指的是针对每个消息, 依次询问各个消息中转服务器。直至确定 某个消息中转服务器上存有该消息, 然后将该消息中转服务器的标识 ( 例如上面例子里的 说 明 书 CN 104079614 A 8 6/8 页 9 B1) 记录在消息中转服务器序列信息中的相应位置。需要指出的是,“查询” 的步骤并非必 需的, 完全有可能当消息被发布至消息中转服务器时, 消息中转服务器自动记录该消息的 标识以及相应的消息中转服务器的标识的对应关系, 而无需重新查询。 0041 根据本发明的一个实施例, 为多个消息中的每个消息, 在多个订阅者中确定负责 在消息中转服务器序列信息中记录所述每个。

36、消息所位于的消息中转服务器的订阅者。 由于 每个订阅者基于同一主题对消息的接收顺序的要求通常是一致的, 因此一旦有一个订阅者 查询得知某条消息所位于的消息中转服务器, 并将该消息中转服务器标识记录在消息中转 服务器序列信息中的相应位置后, 其它所有的订阅者都可以直接利用消息中转服务器序列 信息去有序获取消息, 而无需重新查询, 从而可以节省大量的查询时间和等待时间。 也就是 说, 未被确定为负责的订阅者的其它订阅者直接利用当前消息中转服务器序列信息, 从相 应的消息中转服务器按序获取所述多个消息中的一个或多个消息。 0042 根据本发明的一个实施例, 利用锁竞争的方式确定负责在消息中转服务器序。

37、列信 息中记录所述每个消息所位于的消息中转服务器的订阅者。 如果有多个订阅者均提出了查 询或记录的请求, 要保证只有一个订阅者有权限更新消息中转服务器序列信息, 否则就可 能出错。 锁竞争的方式可能包括乐观锁或悲观锁, 锁竞争属于本领域的现有技术, 在此不再 赘述。 0043 还需要强调的是, 步骤 202 对于多个消息中的每个消息而言是必需的, 但是对于 每个订阅者而言可能不是必需的。 因为一旦有订阅者在消息中转服务器序列信息中记录了 相关信息, 那么其它的订阅者就无需再重新记录。 0044 接下来, 图 2 所示的方法进行至步骤 203, 利用所述消息中转服务器序列信息, 从 相应的消息中。

38、转服务器按序获取所述多个消息。 从上面给出的消息中转服务器序列信息的 例子可以容易地理解步骤 203 的操作。 0045 图 3 示出了根据本发明另一实施例的用于在分布式订阅发布系统中有序获取基 于特定主题的多个消息的方法的流程图。步骤 301 对应于图 2 中的步骤 201, 在此不再赘 述。 0046 在步骤 302 中, 判断当前的消息中转服务器序列信息中是否包含对应于所述多个 消息中的某特定消息的消息中转服务器。 例如, 某个订阅者已经获取到了消息M1、 M2和M3, 现在需要获取消息 M4, 那么该订阅者可以先判断一下 M4 对应的消息中转服务器是否已经 被记录在消息中转服务器序列信。

39、息中。如果判断结果为是, 则进行至步骤 307( 对应于图 2 中的步骤 203) 利用当前的消息中转服务器序列信息, 从相应的消息中转服务器按序获取 该特定消息。如果判断结果为否, 则进行至步骤 303, 确定负责在消息中转服务器序列信息 中记录所述每个消息所位于的消息中转服务器的订阅者。 确定订阅者的相关技术内容在上 文中已经描述, 在此不再赘述。 0047 接下来, 图 3 所示的方法进行至步骤 304, 查询该消息所位于的消息中转服务器的 标识, 以及步骤 305, 将所查询到的标识记录在消息中转服务器序列信息中的相应位置。步 骤 304 和 305 在上文对图 2 的描述中也已记载,。

40、 在此不再赘述。 0048 接下来, 图 3 所示的方法进行至步骤 306, 判断所查询到的消息中转服务器中是否 还有基于同一主题的其它消息。如果判断结果为是, 则进行至步骤 305, 将该消息中转服务 器记录在序列信息中的对应于该其它消息的位置。如果判断结果为否, 则进行至步骤 307, 说 明 书 CN 104079614 A 9 7/8 页 10 利用所述消息中转服务器序列信息, 从相应的消息中转服务器按序获取所述多个消息。例 如, 如果在查询消息 M1 所位于的消息中转服务器时, 发现消息中转服务器 B1 上除了有 M1 之外还有M5, 那么可以直接将B1记录在消息中转服务器序列信息中。

41、对应于消息M5的位置, 这样就省去了将来再次查询 M5 所位于的消息中转服务器的操作。当然, 本领域技术人员应 当理解, 步骤 306 并非必需的步骤, 而仅仅是一种优化方案。完全可以逐个查询并记录每个 消息所位于的消息中转服务器。 0049 图 4 示出了根据本发明一实施例的示例性分布式订阅发布系统架构图。在图 4 的 左侧, 示出了由发布者 (producer) 发布的 m1-m6 总共 6 个基于主题 topic1 的消息。中间 方框内示出了分布式环境下的三个消息中转服务器, broker1, broker2 和 broker3, 其中消 息 m1 和 m5 位于 broker1, m2。

42、 和 m3 位于 broker2, m4 和 m6 位于 broker3。而图 4 的右侧则 示出了订阅者 (consumer) 有序接收到了 6 个消息。中间方框的下部示出了最终的消息中 转服务器序列信息 (Broker list)。中间方框中部示意性地给出了一个关于 broker, topic 和 message 的三元数据结构组, 这个三元数据结构组的目的是记录每个消息中转服务器上 针对每个特定主题存储有哪些消息, 这样便于订阅者直接根据该三元数据结构组的记录来 更新消息中转服务器序列信息。根据本发明一个实施例, 该三元数据结构组可以由消息中 转服务器负责记录并更新 ( 不会过多地增大消。

43、息中转服务器的负担 ), 也可以由订阅者来 负责记录并更新, 也可以由发布者负责记录并更新。 需要强调的是, 该三元数据结构并非必 需的, 如上文对图2和图3的描述, 完全可以在没有该三元数据结构或类似的用于记录中间 信息的数据结构的情况下实现本发明的目的。 0050 还需要强调的是, 也可以采用让发布者来查询并记录消息中转服务器序列信息的 方式实现本发明构思, 只要最终订阅者通过消息中转服务器序列信息主动有序获取各个消 息即可。 0051 图 5 示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于 特定主题的多个消息的系统的框图。图 5 所示的系统在整体上由系统 500 表示。。

44、具体地, 系统500包括排序确定装置501, 被配置为确定待获取的多个消息的排序 ; 记录装置502, 被 配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器, 所述 消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序 ; 以及 消息获取装置 503, 被配置为利用所述消息中转服务器序列信息, 从相应的消息中转服务器 按序获取所述多个消息。本领域技术人员应当理解, 系统 500 的装置 501-503 分别对应于 图 2 所示的方法中的步骤 201-203, 在此不再赘述。 0052 附图中的流程图和框图显示了根据本发明的多个实施例的系统、 方法和计。

45、算机程 序产品的可能实现的体系架构、 功能和操作。在这点上, 流程图或框图中的每个方框可以 代表一个模块、 程序段或代码的一部分, 所述模块、 程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。 也应当注意, 在有些作为替换的实现中, 方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如, 两个连续的方框实际上可以 基本并行地执行, 它们有时也可以按相反的顺序执行, 这依所涉及的功能而定。 也要注意的 是, 框图和 / 或流程图中的每个方框、 以及框图和 / 或流程图中的方框的组合, 可以用执行 规定的功能或操作的专用的基于硬件的系统来实现, 或者可以用专用硬件。

46、与计算机指令的 组合来实现。 说 明 书 CN 104079614 A 10 8/8 页 11 0053 以上已经描述了本发明的各实施例, 上述说明是示例性的, 并非穷尽性的, 并且也 不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下, 对于本技 术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择, 旨 在最好地解释各实施例的原理、 实际应用或对市场中的技术的技术改进, 或者使本技术领 域的其它普通技术人员能理解本文披露的各实施例。 说 明 书 CN 104079614 A 11 1/4 页 12 图 1 说 明 书 附 图 CN 104079614 A 12 2/4 页 13 图 2 说 明 书 附 图 CN 104079614 A 13 3/4 页 14 图 3 说 明 书 附 图 CN 104079614 A 14 4/4 页 15 图 4 图 5 说 明 书 附 图 CN 104079614 A 15 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1