消息队列发布与订阅的同步方法及其系统与流程

文档序号:20917552发布日期:2020-05-29 13:43阅读:419来源:国知局
消息队列发布与订阅的同步方法及其系统与流程

本发明涉及中介媒体之间消息队列(messagequeue,mq)的同步机制,特别涉及一种消息队列发布与订阅的同步方法及其系统。



背景技术:

因应巨量数据实时传输与存取目的,装置与装置之间的数据传输类型愈来愈多元,为追求高吞吐量数据传输与降低数据的延迟时间,同时确保消息队列内容的同步与后端应用程序数据内容存取的一致性,于是逐步发展为分散式的数据发布与订阅(publish/subscribe,pub/sub)。

分散式消息队列(distributedmessagequeue)数据发布与订阅机制,是将消息多等份切割,并行式地向多个分散数据中介媒体(broker)同时发布与订阅存取,借以提升消息数据传输吞吐量,其中,可通过管理员(zookeeper)统一管理,并依规则(roundrobin、range或hash)固定数据发布与订阅存取特定broker地址,分散式消息队列数据发布与数据订阅,虽然提升消息数据传输吞吐量,但zookeeper的地址规则限定数据发布与订阅存取并行度,简单来说,数据发布与订阅可参考网络带宽、仲介状态或距离远近等动态环境因素,不限定数据中介媒体,以大幅提升数据消息传输吞吐量,但需解决各数据中介媒体之间的消息内容同步。

现有技术中,数据分散服务(datadistributionservice,dds)致力于非代理(broker-less)消息递送技术,虽大幅提升消息递送的吞吐量(highthroughput)与降低数据的延迟(lowlatency),但数据内容不保证送达,订阅端数据内容也无法一致;rabbitmq致力于中介媒体消息路由规则(routingrules)与转寄(forwarding)技术,虽提升消息递送的准确性,但仍无并行发布与订阅机制;kafka致力于分散式数据信道中介(brokerscluster)技术与消息分割(topicpartitioning),虽能提升消息数据传输吞吐量,但可能造成中介媒体之间无完整数据内容同步。

综上,既有分散式pub/sub消息队列系统虽具备高吞吐量数据传输与低延迟特性,但数据仅能通过固定数据中介媒体发布与订阅,导致数据并行化传输无法提升,若不限定客户(pub/sub)端对数据中介媒体(broker)的消息队列发布与存取,则需解决多个数据中介媒体之间消息队列(mq)的同步问题,以保有多个数据需求端所处理的数据内容一致。

由上可知,在现有分散式pub/sub消息队列系统,如何提供解决数据中介媒体之间的消息队列内容同步问题,确保每一个客户端所存取数据相同,此将成为目前本技术领域人员急欲解决的技术问题。



技术实现要素:

本发明提出一种可提高分散式pub/sub消息队列系统传输吞吐量的方法,用于解决数据中介媒体之间的消息队列内容同步问题,借此确保客户端于网络环境等多项参数条件下,能自行任意选择一最佳数据中介媒体进行发布与存取数据,同时令每一个客户端所存取的数据内容皆具有一致性。

本发明提出一种消息队列发布与订阅的同步方法,其包括:提供一消息数据中介媒体集群,该消息数据中介媒体集群包括多个具有暂存消息队列与同步消息队列的消息数据中介媒体;在该消息数据中介媒体集群中任一消息数据中介媒体提出同步需求时,由一协调服务器选择该消息数据中介媒体集群中其中一个消息数据中介媒体来执行数据同步;设定数据读取锁定,将全部该多个消息数据中介媒体的暂存消息队列的数据内容依序写入至所选定的该消息数据中介媒体的同步消息队列;以及将所选定的该消息数据中介媒体的同步消息队列中的完整数据内容复制至其他该消息数据中介媒体的同步消息队列中,使得各该消息数据中介媒体的同步消息队列内的数据内容一致。

本发明还提出一种消息队列发布与订阅的同步系统,其包括:消息数据中介媒体集群以及协调服务器。消息数据中介媒体集群包含多个消息数据中介媒体,且各该消息数据中介媒体包括暂存消息队列与同步消息队列,而协调服务器连接该消息数据中介媒体集群,该协调服务器在该消息数据中介媒体集群中任一消息数据中介媒体提出同步需求时,选择该消息数据中介媒体集群中其中一个消息数据中介媒体来执行数据同步,其中,该数据同步的执行包括设定数据读取锁定,以令全部该多个消息数据中介媒体的暂存消息队列的数据内容依序写入至所选定的该消息数据中介媒体的同步消息队列,接着将所选定的该消息数据中介媒体的同步消息队列中的完整数据内容复制至其他该消息数据中介媒体的同步消息队列中,以使各该消息数据中介媒体的同步消息队列内的数据内容一致。

本发明提出的消息队列发布与订阅的同步方法及其系统,通过不限定消息发布端或消息订阅端的数据消息递送与存取的消息数据中介媒体,客户端可自行参考网络状态、距离、中介媒体(例如响应时间)等状态参数,选择主题相关任一消息数据中介媒体进行数据消息发布或订阅,以提高整体数据传输并行度与吞吐量,另外,消息数据中介媒体具备暂存消息队列(bufferqueue)与同步消息队列(dataqueue)两种数据队列(messagequeues),分别做为发布端递送与订阅端存取数据用途,如此能让于任一消息数据中介媒体在提出同步需求时,依旧保有数据消息可持续发布,避免因消息数据中介媒体于数据同步时,所衍生传输吞吐效能下降等问题。

附图说明

图1为本发明的消息队列发布与订阅的同步系统的系统架构图;

图2为本发明的消息队列发布与订阅的同步方法的步骤图;

图3a-图3c为本发明的消息队列发布与订阅方法具体细节的运作流程图;

图4a-图4g为本发明的消息队列发布与订阅方法一具体实施例有关同步机制的示意图;以及

图5a-图5d为本发明的消息队列发布与订阅方法有关同步机制的序列图。

符号说明

1消息队列发布与订阅的同步系统

11消息数据中介媒体集群

111消息数据中介媒体

1111暂存消息队列

1112同步消息队列

12协调服务器

2消息发布端

3消息订阅端

a、b、c消息发布端

d、e、f消息订阅端

i、j、k消息数据中介媒体

r、s装置

s21~s24步骤

s310~s319流程

s320~s325流程

s331~s336流程

u厂区

v机台

x、y、z消息数据中介媒体。

具体实施方式

本公开的示范性实施例可包括本文中所描述(包括具体实施方式中所描述)和/或图式中所展示的新颖特征中的任何一个或一个以上。如本文中所使用,“至少一个”、“一个或一个以上”和“和/或”为在操作中既连接又分离的开端表达。举例来说,表达“a、b和c中的至少一个”、“a、b或c中的至少一个”、“a、b和c中的一个或一个以上”、“a、b或c中的一个或一个以上”和“a、b和/或c”中的每一个意味单独a、单独b、单独c、a和b一起、a和c一起、b和c一起或a、b和c一起。

应注意,术语“一”实体指一个或一个以上所述实体。因此,术语“一”、“一个或一个以上”和“至少一个”可在本文中互换使用。

图1说明本发明的消息队列发布与订阅的同步系统的系统架构图。如图所示,消息队列发布与订阅的同步系统1能让其内部各消息数据中介媒体的数据内容一致,使得消息订阅端3能取得所需数据,其中,消息队列发布与订阅的同步系统1包括消息数据中介媒体集群11和协调服务器12。

消息数据中介媒体集群11包含多个消息数据中介媒体111,且各该消息数据中介媒体111包括暂存消息队列(bufferqueue)1111与同步消息队列(dataqueue)1112两种不同消息队列(messagequeue),并能依主题(topic),使多个消息数据中介媒体111组成一群组,即消息数据中介媒体集群(brokercluster)11,借此分散(并行)接受数据发布与订阅。

协调服务器12连接该消息数据中介媒体集群11,该协调服务器12在该消息数据中介媒体集群11中任一消息数据中介媒体111提出同步需求时,选择该消息数据中介媒体集群11中其中一个消息数据中介媒体111来执行数据同步,其中,该数据同步包括设定数据读取锁定(lock),以令全部消息数据中介媒体111的暂存消息队列1111的数据内容依序写入至所选定的消息数据中介媒体111的同步消息队列1112,接着将所选定的该消息数据中介媒体111的同步消息队列1112中的完整数据内容复制至其他消息数据中介媒体111的同步消息队列1112中,以使各该消息数据中介媒体111的同步消息队列1112内的数据内容一致。

具体来说,协调服务器12除负责管理数据消息主题(topic)管理、数据仲介之间故障切换(failover)、数据写入磁盘备份时间等控制工作之外,协调服务器12还能设定数据同步读取锁定(lock)与执行管理消息数据中介媒体111的同步消息队列1112之间的同步工作。

在一实施例中,协调服务器12能通过两种方式来进行数据内容同步。第一种为协调服务器12依据所有消息数据中介媒体111间的暂存消息队列1111的数据内容的产生时间、序列识别号(seq.id),以将全部消息数据中介媒体111的暂存消息队列1111的数据内容依序写入至所选定的消息数据中介媒体111的同步消息队列1112;第二种为以时间周期为单位,依各消息数据中介媒体111的次序批次同步,以令协调服务器12将全部消息数据中介媒体111的暂存消息队列1111的数据内容批次写入所选定的消息数据中介媒体111的同步消息队列1112中。

由上可知,协调服务器12进行消息数据中介媒体111之间的数据同步时,能依据时间周期或是消息订阅端(subscribers)存取同步消息队列1112内数据内容至末端等两种情况作为同步启动时间点,由消息数据中介媒体111向协调服务器12发起同步消息队列1112数据同步需求,协调服务器12遴选一个消息数据中介媒体111进行数据同步并设定数据读取同步锁定,即将所选定的消息数据中介媒体111的同步消息队列1112锁定,避免同步过程被消息订阅端3进行读取。

消息发布端2连线消息数据中介媒体集群11,该消息发布端2能依据传输状态任选主题相关的消息数据中介媒体111发布消息,即消息发布端2所选定的消息数据中介媒体111收到消息发布端2所发布的数据消息后,会依序新增至消息发布端2所选定的消息数据中介媒体111其暂存消息队列1111的尾端。另外,传输状态包括网络状态、距离、中介媒体响应时间。

消息订阅端3连线消息数据中介媒体集群11,消息订阅端3也依据传输状态任选主题相关的消息数据中介媒体111订阅存取消息,即消息订阅端3所选定的消息数据中介媒体111收到消息订阅端3所发出的数据存取后,会依序传送消息订阅端3所选定的消息数据中介媒体111其同步消息队列1112中的数据内容并记录该消息订阅端3的读取位置,以利于之后该消息订阅端3继续读取所选定的消息数据中介媒体111中的内容数据。

图2说明本发明的消息队列发布与订阅的同步方法的步骤图。如图所示,本发明的消息队列发布与订阅的同步方法主要说明消息数据中介媒体集群内各消息数据中介媒体可能分别存放不同数据内容,当消息数据中介媒体任一个无法提供消息订阅端取得数据时会请求进行同步,即使各消息数据中介媒体内数据内容一致,借此达到消息数据传输高吞吐量和并行化存取的目的。

在步骤s21中,提供一消息数据中介媒体集群,该消息数据中介媒体集群包括多个具有暂存消息队列与同步消息队列的消息数据中介媒体。为了达到消息数据具有高传输吞吐量,故采用多个消息数据中介媒体的设计,另外,每一个消息数据中介媒体具有接收新进数据内容的暂存消息队列以及供订阅者读取数据内容的同步消息队列,并通过两个队列使用,不影响数据传输吞吐量下执行消息数据的同步,进而达到提升数据消息并行存取的目的。

在步骤s22中,在该消息数据中介媒体集群中任一消息数据中介媒体提出同步需求时,由一协调服务器选择该消息数据中介媒体集群中其中一个消息数据中介媒体来执行数据同步。在本步骤中,订阅者通常会选择一个消息数据中介媒体来读取数据内容,但完整数据消息内容可能散布在多个不同消息数据中介媒体,因而当任一消息数据中介媒体无法满足订阅者需求时,即订阅者无法取得数据内容时,则消息数据中介媒体会发出同步需求,并由协调服务器指定一个消息数据中介媒体执行数据同步。

在步骤s23中,设定数据读取锁定,将全部该消息数据中介媒体的暂存消息队列的数据内容依序写入至所选定的该消息数据中介媒体的同步消息队列。在本步骤中,会先锁定协调服务器所指定/选定的消息数据中介媒体的同步消息队列读取,接着将全部该多个消息数据中介媒体其暂存消息队列的数据内容写入所选定的消息数据中介媒体的同步消息队列,此时所选定的消息数据中介媒体的同步消息队列即包含所有数据内容。

在步骤s24中,将所选定的该消息数据中介媒体的同步消息队列中的完整数据内容复制至其他该消息数据中介媒体的同步消息队列中,使得各该消息数据中介媒体的同步消息队列内的数据内容一致。本步骤即将所选定的消息数据中介媒体的同步消息队列所包含的完整数据内容再复制到其他未被选择的消息数据中介媒体的同步消息队列中,如此所有的消息数据中介媒体的同步消息队列其数据内容将会一致。

在一实施例,有关前述同步机制中,当将全部消息数据中介媒体的暂存消息队列的数据内容依序写入至所选定的消息数据中介媒体的同步消息队列时,可通过两种方式进行,一种是依据暂存消息队列的数据内容的产生时间、序列识别号(seq.id)而使该数据内容依序写入,此方式是基于各暂存消息队列内数据内容会有产生时间或是序列识别号(即先后顺序),因而可据此依据各暂存消息队列内数据内容的产生先后顺序,依序写入所选定的消息数据中介媒体的同步消息队列中。

另一种为以时间周期为单位,依各消息数据中介媒体的次序批次同步,以令协调服务器将各消息数据中介媒体的暂存消息队列的数据内容批次写入所选定的消息数据中介媒体的同步消息队列中。此方式通过一时间周期(例如10秒或1分钟),锁定所选择的消息数据中介媒体的同步消息队列,并依序由其余消息数据中介媒体的暂存消息队列取出所有数据内容,并写入所选择的消息数据中介媒体的同步消息队列中。

在一实施例中,各消息数据中介媒体的次序能以环状(ring)、星状(star)或其他网络拓扑结构方式来进行,并依序将每一个消息数据中介媒体的暂存消息队列中的所有数据内容批次写入至所选择的消息数据中介媒体的同步消息队列中。

上述两种同步方式的差别是,所选择的消息数据中介媒体的同步消息队列内的数据内容顺序可能不同,但数据内容所包含内容会是相同,顺序不同原因在于前一种方式是考虑各暂存消息队列内每一个数据内容产生时间或序列识别号,举例来说,第一个暂存消息队列可能放数据内容编号1、3、4,第二个暂存消息队列可能放数据内容编号2、5,则所有数据内容存入所选择的消息数据中介媒体的同步消息队列内顺序会维持1、2、3、4、5,但若采用后一种方式,则是先取得一个暂存消息队列的所有数据内容(编号1、3、4),再取得下一个暂存消息队列的所有数据内容(编号2、5),这样所有数据内容存入所选择的消息数据中介媒体的同步消息队列内顺序则为维持1、3、4、2、5,但不论如何,所有数据内容皆会存入所选择的消息数据中介媒体的同步消息队列中,且各数据中介媒体的同步消息队列一致。

另外,前述暂存消息队列用于供一消息发布端将其数据内容依序新增至这些暂存消息队列的尾端。简单来说,当消息发布端发布新的数据内容时,这些数据内容会依据网络状态、距离、中介媒体响应时间的传输状态,任选主题相关的消息数据中介媒体发布消息,以使这些新的数据内容写入所选择消息数据中介媒体的暂存消息队列的尾端。

同理,前述同步消息队列用于依据消息订阅端(即前述订阅者)的数据存取,依序传送这些同步消息队列的数据内容并记录该消息订阅端的读取位置。同样地,消息订阅端会依据网络状态、距离、中介媒体响应时间的传输状态,任选主题相关的消息数据中介媒体订阅存取消息。也就是说,若消息订阅端提出数据存取需求,则可由所选择的消息数据中介媒体的同步消息队列取得所需数据内容,此时会同步记录消息订阅端的读取位置,以便后续再继续读取数据。

图3a-图3c说明本发明的消息队列发布与订阅方法具体细节的运作流程图。如图3a所示,其说明消息发布端或消息订阅端发出消息要求发布或订阅数据,其中,在流程s311-s312中,一个装置(消息发布端或消息订阅端)尝试发布消息至某个主题或订阅读取某个主题,即消息发布端发布消息至某个主题的消息数据中介媒体,或是消息订阅端订阅读取某个主题的消息数据中介媒体内数据内容,此时消息发布端或消息订阅端会选择最佳的消息数据中介媒体来进行数据发布或订阅。

在流程s313-s315中,判断数据消息是否为发布,若是,在流程s314执行数据消息推播,接着进入流程s315,数据将以fifo方式新增至消息数据中介媒体的暂存消息队列。

反之,若数据消息不是发布,表示要读取,则进入流程s316,判断所选择的消息数据中介媒体的同步消息队列是否读取到最后,若否,则进入流程s317,表示所选择的消息数据中介媒体还能提供消息订阅端所需的数据内容,若所选择的消息数据中介媒体已无消息订阅端所需的数据内容,则进入流程s318,查看其他消息数据中介媒体的暂存消息队列是否为空,若是则进入流程s319,回复无数据消息,并结束流程。

另外,在流程s318中,若发现其他消息数据中介媒体的暂存消息队列不为空,表示有些数据并未被放入同步消息队列,所以无法被读取,故进入在流程s310中,消息数据中介媒体向协调服务器提出数据同步需求,并在同步后会到流程s317,回复数据消息。

如图3b所示,其说明数据同步的前段程序,其对应图2步骤s22和s23。在流程s320中,消息数据中介媒体向协调服务器提出数据同步需求,接着进入流程s321-s322中,协调服务器由主题群组(brokercluster)中选定一消息数据中介媒体做为数据同步暂存之用,并且设定选定的消息数据中介媒体的同步消息队列数据读取锁定(lock),避免同步时有人执行读取。

在流程s323中,以时间周期为单位,由消息数据中介媒体次序批次执行,或是依据消息数据中介媒体间的暂存消息队列内数据内容产生时间、序列识别号先后顺序以进行数据同步,接着,进入流程s324,其余暂存消息队列完成复制,最后,进入流程s325,移除同步消息队列的读取锁定。

如图3c所示,说明数据同步的后段程序,其对应图2步骤s24。在流程s331中,移除同步消息队列的读取锁定,接着进入流程s332,判断主题内所有消息数据中介媒体的同步消息队列已完成同步,若是,表示完成同一主题内消息数据中介媒体的同步,同步程序结束,若否,则进入流程s333。

在流程s333-336中,先选定进行数据同步的消息数据中介媒体,接着,设定选定的消息数据中介媒体的同步消息队列数据读取锁定,之后,复制数据同步暂存至选定的消息数据中介媒体的同步消息队列,也就是,将作为同步暂存用的消息数据中介媒体其同步消息队列的数据内容复制给未同步者,最后,移除选定的消息数据中介媒体的同步消息队列的读取锁定,并且回到流程s332直到所有消息数据中介媒体的同步消息队列的数据内容一致,才结束整个同步程序。

图4a-图4g为说明本发明的消息队列发布与订阅方法一具体实施例有关同步机制的示意图。如图4a所示,其为说明本发明所采技术概念的一实施例,收集一厂区u的机台v的震动感测,信号可以每秒100k笔的数据产出,此时通过多个消息发布端a-c来进行数据发布,并由多个消息订阅端d-f来进行订阅,例如厂区u的机台v产出编号17-19的数据内容,编号17-19的数据内容可随机或依规则送至消息发布端a-c,此时多个消息发布端a-c可依据传输状态选择一个消息数据中介媒体来发布数据。在此实施例中,消息数据中介媒体集群中包括三个消息数据中介媒体i、j、k,如图所示,编号18的数据内容被传送至消息发布端b,而消息发布端b将编号18的数据内容依据传输状态选一消息数据中介媒体传送,也就是说,每一个消息数据中介媒体i、j、k都可能存储有不同数据内容,例如消息数据中介媒体i的暂存消息队列具有编号13、14的数据内容,消息数据中介媒体j的暂存消息队列具有编号15的数据内容,消息数据中介媒体k的暂存消息队列具有编号16的数据内容,而暂存消息队列内数据无法被读取,仅有同步消息队列(目前皆有编号1-3的数据内容)能供订阅读取,因而多个消息订阅端d-f可进行轮询(polling)并依据传输状态选择一个消息数据中介媒体i、j、k来订阅并读取数据内容,如此,不限定消息发布端或消息订阅端进行数据消息递送与存取的消息数据中介媒体,客户端可自行选择主题相关任一消息数据中介媒体,以提高整体数据传输并行度与吞吐量。

然上述状态有可能某一消息订阅端无法由其选定的消息数据中介媒体取得所需数据,举例来说,目前三个消息数据中介媒体i、j、k都无法取得编号17-19的数据内容,因而当无法满足消息订阅端d-f时,被要求读取的消息数据中介媒体会提出同步需求。数据内容写入到消息数据中介媒体的同步消息队列中可通过两种形式来执行,一种是采用消息数据中介媒体间的暂存消息队列内数据内容时间与序列,也就是依据每一个暂存消息队列内数据内容产出时间或者序列编号(序列识别号)来决定写入到所选定的消息数据中介媒体的同步消息队列的先后,另一种则是依据消息数据中介媒体次序批次,也就是所有消息数据中介媒体批次将暂存消息队列的数据内容写入到所选定的消息数据中介媒体的同步消息队列中,即将暂存消息队列所有数据内容一次写入。下面通过图4b-图4d以及图4e-图4g来呈现两者差异。

如图4b-图4d所示,其为说明本申请第一种数据内容同步机制。如图所示,所示三个消息数据中介媒体i、j、k的同步消息队列皆具有编号1-3的数据内容,此同步消息队列所存放者是表示已同步过的数据,而消息订阅端d-f也仅能读取同步消息队列内数据内容,另外,所示三个消息数据中介媒体的暂存消息队列分别存储不同数据内容,在编号17-19的数据内容在存放至消息数据中介媒体i、j、k(此存放仅是举例)后,如消息数据中介媒体i的暂存消息队列存放编号13、14、17的数据内容,消息数据中介媒体j的暂存消息队列存放编号15、18的数据内容,消息数据中介媒体k的暂存消息队列存放编号16、19的数据内容,当消息订阅端d-f无法由任一个消息数据中介媒体i-k取得标号1-3以外的数据内容时,消息数据中介媒体i-k即须进行同步。

首先,假若由任一个消息数据中介媒体i-k提出请求同步后,协调服务器会选定一个消息数据中介媒体作为同步暂存之用,举例来说,当选择消息数据中介媒体i时,会把消息数据中介媒体i的同步消息队列读取锁定,避免同步过程被读取,接着将消息数据中介媒体i-k的暂存消息队列的数据内容皆写入消息数据中介媒体i的同步消息队列中,也就是,消息数据中介媒体i的同步消息队列中除了原本标号1-3的数据内容外,将会加入编号13、14、17、15、18、16、19等数据内容。

本实施例在是采用消息数据中介媒体间的暂存消息队列内数据内容时间与序列,也就是依据每一个暂存消息队列内数据内容产出时间或者序列编号(序列识别号)来决定写入到所选定的消息数据中介媒体的同步消息队列的先后。在消息数据中介媒体i的同步消息队列读取锁定,接着由三个消息数据中介媒体i-k的暂存消息队列中数据内容序列编号来决定谁先被取出,可通过比较三个暂存消息队列i-k中数据内容序列编号前后,编号前面者先被取出,消息数据中介媒体i的编号13数据内容,次一个还是消息数据中介媒体i内的编号14数据内容,再下一个才是消息数据中介媒体j内的编号15数据内容。最终,消息数据中介媒体i的同步消息队列会包含标号1、2、3、13、14、15、16、17、18、19顺序的数据内容。

接着,如图4c所示,消息数据中介媒体i的同步消息队列已包含所有数据内容,接着解除消息数据中介媒体i的读取锁定,并分别将消息数据中介媒体j、k进行读取锁定,以将消息数据中介媒体i的同步消息队列的数据内容分别复制给消息数据中介媒体j、k,即完成同步程序,读取锁定可采一次一个消息数据中介媒体,最终如图4d所示,消息数据中介媒体i、j、k的同步消息队列的数据内容皆相同,此时消息订阅端d-f也能由消息数据中介媒体i、j、k任一个取得所需数据内容。

图4e-图4g说明本申请第二种数据内容同步机制,是依据消息数据中介媒体次序批次,也就是所有消息数据中介媒体批次将暂存消息队列的数据内容写入到消息数据中介媒体i的同步消息队列,即将暂存消息队列所有数据内容一次写入。

如图4e所示,消息数据中介媒体i的同步消息队列读取锁定,三个消息数据中介媒体i-k依序将其暂存消息队列中数据内容写入至消息数据中介媒体i的同步消息队列,次序并不限定,能以环状、星状或其他分散式网络拓扑结构方式来进行,故与数据内容产出先后无关,举例来说,照着消息数据中介媒体i-k的顺序来进行数据复制,即消息数据中介媒体i将编号13、14、17一次写入消息数据中介媒体i的同步消息队列,接着才换消息数据中介媒体j,以此类推。

最终,如图4f所示,消息数据中介媒体i的同步消息队列已包含所有数据内容,即包含标号1、2、3、13、14、17、15、18、16、19顺序的数据内容,接着解除消息数据中介媒体i的读取锁定,并分别将消息数据中介媒体j、k进行读取锁定,之后分别将消息数据中介媒体i的同步消息队列的数据内容复制给其他的消息数据中介媒体j、k,即完成同步程序,最终如图4g所示,消息数据中介媒体i、j、k的同步消息队列的数据内容皆相同,消息订阅端d-f也能由消息数据中介媒体i、j、k任一个取得所需数据内容。

图5a-图5d说明本发明的消息队列发布与订阅方法有关同步机制的序列图。如图5a所示,消息发布端具有装置r,消息订阅端具有装置s,装置r任选一消息数据中介媒体发布数据,例如将数据发布至消息数据中介媒体y,即通过fifo将数据存入暂存消息队列。另外,装置s也任选一消息数据中介媒体订阅读取,例如订阅消息数据中介媒体y并发送数据读取的请求,即通过fifo由同步消息队列读取数据,接着由消息数据中介媒体y的得到数据消息的回复。

如果发生装置s读取消息数据中介媒体y的同步消息队列到最后,但仍无法取得所需数据内容时,则消息数据中介媒体y会向协调服务器要求数据同步。此时,协调服务器会择一消息数据中介媒体来做为数据同步暂存,如图为例,协调服务器选择消息数据中介媒体x,此时协调服务器会将消息数据中介媒体x的同步消息队列读取锁定,并将消息数据中介媒体x、y和z的暂存消息队列的数据内容复制到消息数据中介媒体x的同步消息队列中。

图5b和图5c则分别呈现依据消息数据中介媒体间的暂存消息队列内数据内容时间与序列以及依据消息数据中介媒体次序批次等两种方式进行数据同步的序列图。

如图5b所示,当发生装置s至消息数据中介媒体x的同步消息队列读取数据到同步消息队列最后时,但仍无法取得所需数据内容时,则消息数据中介媒体x会向协调服务器要求数据同步。此时,协调服务器会择一消息数据中介媒体来做为数据同步暂存,如图所示,协调服务器选择消息数据中介媒体x,此时协调服务器会将消息数据中介媒体x的同步消息队列读取锁定,接着通过fifo方式读取消息数据中介媒体x、y和z的暂存消息队列的数据内容,接着比对这些数据内容的时间或序列编号,借此知悉这些数据内容先后顺序,最后协调服务器再将所有数据内容复制到消息数据中介媒体x的同步消息队列中。

如图5c所示,一样是装置s无法由消息数据中介媒体x取得数据,消息数据中介媒体x向协调服务器要求数据同步。此时,协调服务器会择一消息数据中介媒体来做为数据同步暂存,如图所示,协调服务器选择消息数据中介媒体x,此时协调服务器会将消息数据中介媒体x的同步消息队列读取锁定,接着一样通过fifo方式读取消息数据中介媒体x、y和z的暂存消息队列的数据内容,即以固定时间批次复制每一暂存消息队列的数据内容,最后协调服务器再将所有数据内容复制到消息数据中介媒体x的同步消息队列中。

如图5d所示,协调服务器在消息数据中介媒体x请求数据同步,经消息数据中介媒体x的同步消息队列读取锁定,完成数据同步复制后,由协调服务器解除消息数据中介媒体x同步消息队列的锁定,接着,协调服务器分别向消息数据中介媒体y和z的同步消息队列读取锁定,接着,消息数据中介媒体x的同步消息队列的数据内容复制到消息数据中介媒体y和z的同步消息队列,使得消息数据中介媒体x、y和z的同步消息队列的数据内容一致,最后协调服务器再解除消息数据中介媒体y和z的同步消息队列的锁定。

本发明所述服务器、消息发布端、消息订阅端等组件包括微处理器及存储器,而算法、数据、程序等为存储于存储器或芯片内,微处理器可从存储器载入数据或算法或程序进行数据分析或计算等处理,在此不予赘述。

综上所述,本发明的消息队列发布与订阅的同步方法及其系统,主要是通过消息发布端与消息订阅端视状况任意选择一消息数据中介媒体进行数据发布与订阅,以提高数据传输的并行化与存取吞吐量,同时,为解决消息数据中介媒体之间的消息队列数据同步问题,本发明提出消息数据中介媒体中设有暂存消息队列与同步消息队列,借以执行消息数据中介媒体群组之间的数据内容同步交换,允许消息发布端与消息订阅端任意选择一消息数据中介媒体对主题消息数据的发布与订阅存取,消息发布端于数据同步时不需任何写入锁定,但数据订阅端于同步存取时,可能因消息数据中介媒体的同步因素,遭遇数据读取锁定的设定,据此以不影响其对其他消息数据中介媒体存取数据环境下,采用分次分批同步方式,降低同步所衍生的传输吞吐量效能问题,以进一步提升消息队列数据传输吞吐量与内容同步。

虽然本公开已以实施例公开如上,然其并非用以限定本公开,本领域技术人员,在不脱离本公开的精神和范围内,当可作些许的更动与润饰,故本公开的保护范围当视权利要求书所界定者为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1