CN104079614B - 用于分布式发布订阅系统消息有序获取的方法和系统 - Google Patents
用于分布式发布订阅系统消息有序获取的方法和系统 Download PDFInfo
- Publication number
- CN104079614B CN104079614B CN201310109002.XA CN201310109002A CN104079614B CN 104079614 B CN104079614 B CN 104079614B CN 201310109002 A CN201310109002 A CN 201310109002A CN 104079614 B CN104079614 B CN 104079614B
- Authority
- CN
- China
- Prior art keywords
- message
- transfer server
- message transfer
- server
- sequence
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000012546 transfer Methods 0.000 claims abstract description 145
- 238000009826 distribution Methods 0.000 claims abstract description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 238000003860 storage Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
Abstract
本发明涉及计算机网络环境下的发布订阅系统(Pub/Sub),更具体地,本发明尤其涉及用于分布式发布订阅系统消息有序获取的方法和系统。本发明提供了一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法,所述分布式订阅发布系统包括至少一个消息中转服务器,所述方法包括:确定待获取的多个消息的排序;在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。
Description
技术领域
本发明涉及计算机网络环境下的发布订阅系统(Pub/Sub),更具体地,本发明尤其涉及分布式计算机网络环境下的发布订阅系统中,有序获取消息的方法和系统。
背景技术
目前,消息发布订阅系统(Pub/Sub)成为计算机网络时代用户获取网络信息的重要方式之一。在发布/订阅系统中,众多订阅者按照自己的需求选择感兴趣的消息源。一旦发布者发布消息,该消息就被订阅者所获取。
随着分布式计算机网络环境得到广泛应用,目前发布/订阅系统主要采用两种模式:主动推送消息的模式和订阅者主动获取消息的模式。在主动推送消息的模式中,发布者发布的消息被发送至多个分布式的消息中转服务器(发布者并不知晓每个消息被发送至哪个具体的中转服务器),然后消息中转服务器将消息推送至订阅者,这种模式对消息中转服务器的要求比较高。在订阅者主动获取消息的模式中,消息中转服务器不负责推送消息,而是由订阅者主动从消息中转服务器获取其订阅的消息,这种模式可以减轻服务器端的资源消耗。
由于很多发布订阅系统中所发布的消息都是有顺序要求的,例如,对于股市即时行情的消息发布订阅系统,必须保证订阅者接收到的消息是严格按照时间顺序的。又例如,在足球比赛现场直播的消息发布订阅系统中,消息的接收也必须严格按照时间顺序。由于可能存在多个发布者,不能保证多个发布者之间彼此协调严格按照顺序发布消息,也不能保证先发布的消息一定先到达消息中转服务器,因此可能出现时间戳靠后的消息先到达订阅者的情形。
对于上述主动推送模式的发布/订阅系统,可以在消息中转服务器中设定发布消息的时间戳,并由消息中转服务器按照正确的顺序将消息依次推送至订阅者。但是这种情形下,对消息中转服务器的依赖极高,不仅需要服务器端理解发布者和订阅者之间约定的顺序要求,还要对众多分散在多个分布式服务器上的消息进行统一排序并主动推送至千千万万个订阅者。同时,即使按照正确的顺序将消息依次推送出去,也不能保证订阅者一定能按照正确的顺序接收到所有消息。
而在上述订阅者主动获取消息的发布订阅系统中,还没有能够保证订阅者按照正确的顺序接收消息的技术方案。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种用于分布式计算机网络环境下的发布订阅系统中,有序获取消息的方法和系统。
根据本发明的一个方面,提供了一种用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法,所述分布式订阅发布系统包括至少一个消息中转服务器,所述方法包括:确定待获取的多个消息的排序;在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。
根据本发明的另一方面,提供了一种用于在分布式订阅发布环境中有序获取基于特定主题的多个消息的系统,所述分布式订阅发布环境包括至少一个消息中转服务器,所述系统包括:排序确定装置,被配置为确定待获取的多个消息的排序;记录装置,被配置为在消息中转服务器序列信息中记录所述多个消息分别位于的消息中转服务器,所述消息中转服务器序列信息中的消息中转服务器排序对应于所确定的多个消息的排序;以及消息获取装置,被配置为利用所述消息中转服务器序列信息,从相应的消息中转服务器按序获取所述多个消息。
根据本发明所提供的方法或系统,可以在订阅者主动获取消息模式的发布订阅系统中,使所有的订阅者按照预定的消息顺序正确依序获取消息,并且无需增加服务器的额外负担,同时使尽可能多的订阅者直接有序获取消息,而无需重复性地执行查询、记录等操作。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图;
图3示出了根据本发明另一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的方法的流程图;
图4示出了根据本发明一实施例的示例性分布式订阅发布系统架构图;
图5示出了根据本发明一实施例的用于在分布式订阅发布系统中有序获取基于特定主题的多个消息的系统的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(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,在此不再赘述。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
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所述的系统,其中记录装置被进一步配置为:
判断当前的消息中转服务器序列信息中是否包含对应于所述多个消息中的某特定消息的消息中转服务器;以及
响应于判断结果为否,在消息中转服务器序列信息中记录该特定消息所位于的消息中转服务器,并且
消息获取装置被进一步配置为:
响应于判断结果为是,利用当前的消息中转服务器序列信息,从相应的消息中转服务器按序获取该特定消息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310109002.XA CN104079614B (zh) | 2013-03-29 | 2013-03-29 | 用于分布式发布订阅系统消息有序获取的方法和系统 |
US14/224,307 US9288168B2 (en) | 2013-03-29 | 2014-03-25 | Retrieving messages in order in a distributed publish/subscribe system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310109002.XA CN104079614B (zh) | 2013-03-29 | 2013-03-29 | 用于分布式发布订阅系统消息有序获取的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104079614A CN104079614A (zh) | 2014-10-01 |
CN104079614B true CN104079614B (zh) | 2017-09-12 |
Family
ID=51600656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310109002.XA Expired - Fee Related CN104079614B (zh) | 2013-03-29 | 2013-03-29 | 用于分布式发布订阅系统消息有序获取的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9288168B2 (zh) |
CN (1) | CN104079614B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9654408B2 (en) * | 2013-11-06 | 2017-05-16 | Amazon Technologies, Inc. | Strict queue ordering in a distributed system |
CN104899277B (zh) * | 2015-05-29 | 2018-08-10 | 北京京东尚科信息技术有限公司 | 一种消息分发方法和装置 |
CN107656825A (zh) * | 2017-09-01 | 2018-02-02 | 上海艾融软件股份有限公司 | 消息处理方法、装置及系统 |
CN108170545A (zh) * | 2018-01-08 | 2018-06-15 | 北京奇艺世纪科技有限公司 | 一种基于消息中间件的消息传输方法和装置 |
CN108769244B (zh) * | 2018-06-14 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种存储任务信息获取方法及相关装置 |
CN110875935B (zh) * | 2018-08-30 | 2023-03-24 | 阿里巴巴集团控股有限公司 | 消息发布、处理、订阅方法、装置及系统 |
CN110928704B (zh) * | 2018-09-20 | 2023-06-23 | 广州虎牙信息科技有限公司 | 消息处理方法、消息处理系统、服务器及计算机存储介质 |
CN111031336B (zh) * | 2019-12-10 | 2022-05-06 | 北京达佳互联信息技术有限公司 | 直播榜单数据更新方法、装置、电子设备和存储介质 |
CN111669427B (zh) * | 2020-04-20 | 2022-06-07 | 北京邮电大学 | 一种软件定义网络发布订阅系统和方法 |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN112884926B (zh) * | 2021-02-10 | 2023-04-28 | 深圳成谷科技有限公司 | 交通控制网内的车载单元接入方法、装置及转接设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264476A (zh) * | 1997-06-18 | 2000-08-23 | 英特维公司 | 分布式计算机网络上服务器端优化数据传送的系统和方法 |
US7353204B2 (en) * | 2001-04-03 | 2008-04-01 | Zix Corporation | Certified transmission system |
CN102469033A (zh) * | 2010-11-01 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种消息订阅系统以及消息发送方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226510B1 (en) * | 1998-03-19 | 2001-05-01 | American Secure Care, Llc | Emergency phone for automatically summoning multiple emergency response services |
US7774411B2 (en) * | 2003-12-12 | 2010-08-10 | Wisys Technology Foundation, Inc. | Secure electronic message transport protocol |
KR100711523B1 (ko) * | 2006-06-13 | 2007-04-27 | 삼성전자주식회사 | 휴대용 단말기에서 메시지 관리 장치 및 방법 |
US8566423B2 (en) | 2007-11-22 | 2013-10-22 | International Business Machines Corporation | Scalable publish/subscribe messaging systems and methods |
US8135594B2 (en) | 2008-01-16 | 2012-03-13 | International Business Machines Corporation | Limiting proxy subscription propagation in a publish/subscribe message broker network |
US8140630B2 (en) | 2008-03-05 | 2012-03-20 | International Business Machines Corporation | Publish/subscribe message broker for message sequences |
US20100131600A1 (en) * | 2008-11-24 | 2010-05-27 | Ibm Corporation | Message masking in middleware environments |
US8453163B2 (en) | 2009-06-29 | 2013-05-28 | Software Ag Usa, Inc. | Systems and/or methods for policy-based JMS broker clustering |
GB2481587B (en) * | 2010-06-28 | 2016-03-23 | Vodafone Ip Licensing Ltd | Authentication |
CN103190123B (zh) | 2010-10-29 | 2016-08-10 | 诺基亚技术有限公司 | 用于分发发布的消息的方法和装置 |
-
2013
- 2013-03-29 CN CN201310109002.XA patent/CN104079614B/zh not_active Expired - Fee Related
-
2014
- 2014-03-25 US US14/224,307 patent/US9288168B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264476A (zh) * | 1997-06-18 | 2000-08-23 | 英特维公司 | 分布式计算机网络上服务器端优化数据传送的系统和方法 |
US7353204B2 (en) * | 2001-04-03 | 2008-04-01 | Zix Corporation | Certified transmission system |
CN102469033A (zh) * | 2010-11-01 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种消息订阅系统以及消息发送方法 |
Also Published As
Publication number | Publication date |
---|---|
US9288168B2 (en) | 2016-03-15 |
CN104079614A (zh) | 2014-10-01 |
US20140297769A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104079614B (zh) | 用于分布式发布订阅系统消息有序获取的方法和系统 | |
US10628449B2 (en) | Method and apparatus for processing database data in distributed database system | |
US10045397B2 (en) | Data complementing method and apparatus | |
US9720992B2 (en) | DML replication with logical log shipping | |
US9558242B2 (en) | Social where next suggestion | |
EP3049953A1 (en) | Multiple data source aggregation for efficient synchronous multi-device media consumption | |
CN105659233A (zh) | 讨论概要 | |
CN103368765A (zh) | 一种管理系统权限添加方法和装置 | |
US11553023B2 (en) | Abstraction layer for streaming data sources | |
US10521182B2 (en) | Method and terminal for controlling grouping play of playing system | |
CN102377766A (zh) | 信息处理装置、信息处理方法和程序 | |
WO2018145538A1 (zh) | 一种直播平台的消息处理方法和装置 | |
CN105530272A (zh) | 一种应用数据的同步方法和装置 | |
US20180060408A1 (en) | Data transfer between multiple databases | |
CN106063282A (zh) | 合并内容频道 | |
CN111083179A (zh) | 物联网云平台、基于物联网云平台的设备交互方法及装置 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
US11880353B2 (en) | Method and system for handling engineering data in a multiengineering system environment | |
CN106375414B (zh) | 基于分布式环境的远程配置资源的处理方法和装置 | |
US20140181237A1 (en) | Server and method for storing data | |
US20190073436A1 (en) | Dynamic preview generation in a product lifecycle management environment | |
US20140272827A1 (en) | Systems and methods for managing a voice acting session | |
US20130054772A1 (en) | Method and apparatus for content management using network server | |
WO2017127969A1 (zh) | 餐饮app的派单方法及系统 | |
JP2009187141A (ja) | 情報配信システム及び同システムにおける重複数調整方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170912 |
|
CF01 | Termination of patent right due to non-payment of annual fee |