CN106020995B - 一种分布式应用系统之间的消息传递方法和消息中间件系统 - Google Patents
一种分布式应用系统之间的消息传递方法和消息中间件系统 Download PDFInfo
- Publication number
- CN106020995B CN106020995B CN201610300555.7A CN201610300555A CN106020995B CN 106020995 B CN106020995 B CN 106020995B CN 201610300555 A CN201610300555 A CN 201610300555A CN 106020995 B CN106020995 B CN 106020995B
- Authority
- CN
- China
- Prior art keywords
- group
- data
- members
- computing board
- main member
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
一种分布式应用程序之间的消息中间件系统及传递消息的方法,该系统包括,发送方,接收方,组,接口函数,其特征在于,所述组里面的节点由一个主成员与一个及以上个从成员构成,所述主成员使用全局唯一的名称建立组,在建组的同时设定该组共有包括主成员在内的N个成员,从成员使用唯一的名称加入某个已经建立好的组,并在加入的时候为自己指定一个不会重复的序号。
Description
技术领域
本发明涉及网络通信技术,尤其涉及一种分布式应用系统之间的消息传递方法和消息中间件系统。
背景技术
消息中间件(message oriented middleware)是指支持与保障分布式应用程序之间同步/异步收发消息的中间件。消息是分布式应用之间进行数据交换的基本信息单位,分布式应用程序之间的通信接口由消息中间件提供。具体的说,消息中间件就是进程或线程之间的数据通信中间件,提供任务(进程或线程)间数据传输的统一服务,无论任务在什么物理位置,无论通信载体是什么。
目前,消息中间件已经广泛应用于各类分布式应用系统之中。例如,在采用多DSP阵列结构的并行信号处理系统中,消息中间件就发挥了巨大作用。并行信号处理系统的应用开发主要是多处理器开发,并行任务的分配方法。在以往的多处理器开发调试中,软硬件结合紧密,支撑软件功能简单,系统开放性不够,通信不够灵活等问题,最终导致系统功能和性能受限,开发周期和开发费用上升。为满足新时期阵列信号处理系统对网络化、一体化的需求,阵列信号处理系统内部应配置消息中间件,用于屏蔽内部数据网络和网络协议的细节与异构,将复杂的底层处理工作和具体的工程应用分开,通过简单的接口函数建立信息和控制通道,从而使工程技术人员可以专心应用层的设计实现,摆脱不得不对底层硬件系统进行深入研究的困境。
发明内容
(1)要解决的技术问题
本发明的主要目的在于提供一种基于组的消息传递方法和消息中间件,以屏蔽内部数据网络和网络协议的细节与异构。
(2)技术方案
本发明提供一种分布式应用程序之间的消息中间件系统,包括,发送方,接收方,组,接口函数,其特征在于,所述组里面的节点由一个主成员与一个及以上个从成员构成,所述主成员使用全局唯一的名称建立组,在建组的同时设定该组共有包括主成员在内的N个成员,从成员使用唯一的名称加入某个已经建立好的组,并在加入的时候为自己指定一个不会重复的序号。
本发明还提供一种利用上述消息中间件系统进行分布式应用程序之间消息传递的方法,包括以下步骤:
1)首先人为设定一个主成员,由主成员创建一个组,并设定包括主成员在内的组成员个数;
2)主成员在线程内部创建了一个栅障(Barrier)以确保在从成员在加入组时成员间的同步,然后调用栅障等待的API函数挂起本线程,直到所有的成员都创建或加入组;
3)从成员加入已经创建好的组,在加入的同时在内部获取已创建的栅障的标识符,获取栅障标识符成功后调用栅障等待的API函数挂起本线程,直到所有的成员都创建或加入组时,释放本线程;
4)接收方发起数据传输过程,向发送方发送消息,内容为接收方设备的ID、数据接收首地址、接收数据长度;
5)发送方成功接收到消息后,根据报文内容向接收方的接收首地址发送指定长度的数据,该数据长度取各个接收数据长度与发送数据长度的最小值;
6)数据发送完成后接收方进入SRIO门铃中断,在中断服务程序内部发送事件给接收线程;
7)接收线程接收到发送方对应事件后返回,结束接收过程。
针对系统对消息中间件点对点、一对多、多对一的数据通信要求,该消息中间件引入了组的概念。将两个及以上节点之间的数据传输组成的数据链路网定义为一个组,并将一向多发的数据通信形式称为组播,多向一发称为会集。在一个组里面的节点由一个主成员与一个及以上个从成员构成。主成员负责使用全局唯一的名称建立一个组,在建组的同时设定该组共有N个成员(含主成员)。从成员使用唯一的名称加入某个已经建立好的组,并在加入的时候为自己指定一个不会重复的序号(1~N-1)。该消息中间件组的概念存在一个限制条件,即一个组内只有一个主成员,只允许主成员与从成员之间进行数据传输,从成员与从成员之间不能进行直接的数据传输。
组的创建过程为:首先人为设定一个主成员,由主成员创建一个组,并设定组成员个数(含主成员),在内部创建了一个栅障(Barrier)以确保在从成员在加入组时成员间的同步,然后调用栅障等待的API函数挂起本线程,直到所有的成员都创建或加入组时即可释放;从成员加入已经创建好的组,在加入的同时在内部获取已创建的栅障的标识符,获取栅障标识符成功后调用栅障等待的API函数即可挂起本线程,直到所有的成员都创建或加入组即可释放。创建、加入组时的同步机制框图参见图1。
在该消息中间件的设计中,点对点通信是组通信的一个特例,即一个通信组中只包含两个节点,其中一个是组的主成员,另一个是从成员。在这里组播通信以及数据会集通信天然地退化为点对点通信。
同时,消息中间件对三种物理链路(RapidIO、千兆以太网、共享存储区)进行了抽象和统一,使用一套相同的数据收发函数实现不同类型的数据通信业务,而不像MPI(Message Passing Interface)那样需要为点对点、组播以及数据会集设计不同类型的收发函数。
(3)有益效果
在用户在调用消息中间件的接口函数创建组时,既可以指定物理链路(SRIO、千兆以太网、共享存储器以及自动链路选择),也可以选择传输模式(大数据、短消息以及缺省模式)。采用统一的接口函数支持点对点、一对多的组播以及多对一的会集三种不同通信模式,在中间件的API函数内部判断选择正确的传输模式,支持跨核、跨芯片以及跨机箱的操作。
附图说明
图1为组创建过程的程序框图;
图2为SRIO点对点数据收发过程示意图;
图3为SRIO组播数据收发示意图;
图4为会集数据收发示意图;
图5为范例一数据通信拓扑结构图;
图6为范例二数据通信拓扑结构图;
图7为双向通信拓扑结构图。
具体实施方式
该消息中间件支持三种物理通信链路(SRIO、千兆以太网、共享存储器),下面以SRIO链路为例讲述点对点、一对多的组播及多对一的会集三种通信方式,千兆以太网及共享存储器链路下的这三种通信方式类似,不再赘述。
点对点的数据传输过程由接收方发起,接收方先向发送方发送一条SRIO短消息,内容为接收方的SRIO设备ID号、接收首地址、接收数据长度。发送方成功接收到短消息后根据报文内容即可向接收方的接收首地址发送指定长度的数据,该数据长度取接收数据长度与发送数据长度的最小值。数据发送完成后接收方会进入SRIO门铃中断,在中断内部发送事件给接收线程,接收线程接收到了事件后返回,结束接收过程。面向SRIO的点对点数据发送、接收同步机制框图参见图2。
一对多的组播方式下,数据传输过程由多个接收方发起,首先各个接收方向发送方分别发送一条SRIO短消息,报文内容为接收方SRIO设备的ID、数据接收首地址、接收数据长度。发送方在成功接收到所有接收方发出的短消息后,根据各自报文内容向各个接收方定的接收首地址发送指定长度的数据,该数据长度取各个接收数据长度与发送数据长度的最小值。所有数据都发送完成后各个接收方会进入SRIO门铃中断,在中断服务程序内部发送事件给接收线程,接收线程接收到事件后返回,结束接收过程。面向SRIO的一对多数据发送、接收同步机制框图参见图3。
多对一的数据会集方式下,数据传输过程由接收方发起,先向各个发送方分别发送一条SRIO短消息,报文内容为接收方SRIO设备的ID、数据接收首地址、接收数据长度。各个发送方成功接收到短消息后,根据报文内容向接收方的接收首地址发送指定长度的数据,该数据长度取各个接收数据长度与发送数据长度的最小值。数据发送完成后接收方会进入SRIO门铃中断,在中断服务程序内部发送事件给接收线程,接收线程只有接收到了各个发送方对应的所有事件后才会返回,结束接收过程。面向SRIO的多对一数据发送、接收同步机制框图参见图4。
下面举两个例子说明使用该消息中间件进行组通信的情况,例子中的节点指的是计算板上的一片DSP芯片,每块计算板上有4片多核(Multi-core)DSP芯片。
范例一由4个节点组成,其拓扑结构参见图5。4个节点的名称分别为DSP0、DSP1、DSP2和DSP3。在此案例中,DSP0分别向DSP1和DSP2发送相同的数据,而DSP1和DSP2接收到数据并完成计算后分别向DSP3发送不同数据,DSP3收到两部分数据后启动计算过程,生成输出数据后发送给DSP0,DSP0完成计算后再向DSP1和DSP2发送数据,如此循环往复。
针对案例需求,使用一块计算板即可完成功能要求。在使用中需建立3个通信组,组名称分别为Group1、Group2和Group3。Group1由DSP0、DSP1和DSP2三个成员组成,其中DSP0是通信组的主成员,采用数据组播的形式由DSP0向其余两个成员发送数据。Group2由DSP1、DSP2和DSP3三个成员组成,其中DSP3是通信组的主成员,采用数据会集的形式由DSP3接收其余两个成员发送的数据。Group3由DSP0和DSP3两个成员组成,其中DSP0是通信组的主成员,采用点对点的形式由DSP3向DSP0发送数据。
范例二由8个节点组成,其拓扑结构参见图6。该系统包括8个节点,本别位于计算板1和计算板2上,分别为计算板1上的DSP0-1、DSP1-1、DSP2-1和DSP3-1计算板2上的DSP0-2、DSP1-2、DSP2-2和DSP3-2,所述DSP0-1分别向计算板1的DSP1-1、DSP2-1和DSP3-1发送相同的数据,而后者接收到数据并完成计算后分别向计算板2的DSP1-2、DSP2-2和DSP3-2发送数据,随后计算板2的DSP1-2、DSP2-2和DSP3-2完成计算任务后再向计算板2的DSP3-2发送不同数据,后者接收到三部分数据后进行计算生成输出数据后发送给计算板1的DSP0-1,后者完成计算后再向计算板1的DSP1-1、DSP2-1和DSP3-1发送数据,如此循环往复。
针对案例需求,使用两块计算板可完成系统功能要求。在使用中需建立6个通信组,组名称分别为Group1、Group2、Group3、Group4、Group5和Group6。Group1由DSP0-1、DSP1-1、DSP2-1和DSP3-1四个节点组成,其中DSP0-1节点为该组的主成员,采用数据组播的形式向其余三个成员发送数据。Group2由DSP1-1、DSP1-2节点组成,其中DSP1-2为该组的主成员,采用点对点的形式向DSP1-1节点发送数据。Group3由DSP2-1、DSP2-2节点组成,其中DSP2-2为该组的主成员,采用点对点的形式向DSP2-1节点发送数据。Group4由DSP3-1、DSP3-2节点组成,其中DSP3-2为该组的主成员,采用点对点的形式向DSP3-1节点发送数据。Group5由DSP0-2、DSP1-2、DSP2-2和DSP3-2四个节点组成,其中DSP3-2节点为主成员,采用数据会集的形式接收其余三个成员发送来的数据。Group6由DSP0-1、DSP0-2两个节点组成,其中DSP0-2节点为该组的主成员,采用点对点的形式向DSP0-1节点发送数据。
以上两种系统的通信组构成方式基本上包含了各种建组的情况,从点对点通信到组播通信,再到数据会集通信,从板内通信到板间通信均有所体现。以DSP核(core)为通信基本节点的情况也与此一致。
在该消息中间件的设计中并没有对通信组的主成员是接收方还是发送方进行限制,另一方面在一个通信组中主成员与从成员确实可以实现双向通信,如图7所示,左侧数据组播和数据会集的两个组可以合并为双向数据收发的一个通信组,而右侧点对点的两个通信组也可以合并为双向数据通信的一个组。
Claims (3)
1.一种分布式应用系统之间的消息中间件系统,包括,发送方,接收方,组,接口函数,
其特征在于,
所述组里面的节点由一个主成员与一个及以上个从成员构成,所述主成员使用全局唯一的名称建立组,在建组的同时设定该组共有包括主成员在内的N个成员,从成员使用唯一的名称加入某个已经建立好的组,并在加入的时候为自己指定一个不会重复的序号;
消息中间件系统对RapidIO、千兆以太网、共享存储区三种物理链路进行了抽象和统一,采用统一的接口函数支持点对点、一对多的组播以及多对一的会集三种不同通信模式,在API函数内部判断选择正确的传输模式,包括大数据、短消息以及缺省模式;
所述消息中间件系统安装于计算板上,所述节点为DSP芯片;
所述消息中间件系统包括8个节点,分别位于计算板1和计算板2上,分别为计算板1上的DSP0-1、DSP1-1、DSP2-1和DSP3-1计算板2上的DSP0-2、DSP1-2、DSP2-2和DSP3-2;
建立六个组,组名称分别为Group1、Group2、Group3、Group4、Group5和Group6,Group1由计算板1的DSP0-1、DSP1-1、DSP2-1和DSP3-1四个成员组成,其中DSP0-1是通信组的主成员,采用数据组播的形式由DSP0-1向其余三个成员发送数据,Group2、Group3和Group4分别由两块计算板的DSP1-1、DSP1-2,DSP2-1、DSP2-2,DSP3-1、DSP3-2组成,其中计算板2的三个节点是通信组的主成员,采用点对点的形式由计算板1的节点向计算板2的相应节点发送数据,Group5由计算板2的DSP0-2、DSP1-2、DSP2-2和DSP3-2四个成员组成,其中DSP3-2是通信组的主成员,采用数据会集的形式由DSP3-2接收其余三个成员发送的数据,Group6由两块计算板的DSP0两个成员组成,其中计算板1的DSP0-1是通信组的主成员,采用点对点的形式由计算板2的DSP0-2向计算板1的相应节点发送数据;所述DSP0-1分别向计算板1的DSP1-1、DSP2-1和DSP3-1发送相同的数据,而后者接收到数据并完成计算后分别向计算板2的DSP1-2、DSP2-2和DSP3-2发送数据,随后计算板2的DSP1-2、DSP2-2和DSP3-2完成计算任务后再向计算板2的DSP3-2发送不同数据,后者接收到三部分数据后进行计算生成输出数据后发送给计算板1的DSP0-1,后者完成计算后再向计算板1的DSP1-1、DSP2-1和DSP3-1发送数据,如此循环往复。
2.一种应用消息中间件系统在分布式应用系统之间传递消息的方法,其中所述消息中间件系统包括,发送方,接收方,组,接口函数,所述组里面的节点由一个主成员与一个及以上个从成员构成,所述主成员使用全局唯一的名称建立组,在建组的同时设定该组共有包括主成员在内的N个成员,从成员使用唯一的名称加入某个已经建立好的组,并在加入的时候为自己指定一个不会重复的序号;所述消息中间件系统对RapidIO、千兆以太网、共享存储区三种物理链路进行了抽象和统一,采用统一的接口函数支持点对点、一对多的组播以及多对一的会集三种不同通信模式,在API函数内部判断选择正确的传输模式,包括大数据、短消息以及缺省模式;
所述方法包括以下步骤:
步骤1)首先人为设定一个主成员,由主成员创建一个组,并设定包括主成员在内的组成员个数;
步骤2)主成员在线程内部创建一个栅障,确保在从成员在加入组时成员间的同步,然后调用栅障等待的API函数挂起本线程,直到所有的成员都创建或加入组;
步骤3)从成员加入已经创建好的组,在加入的同时在内部获取已创建的栅障的标识符,获取栅障标识符成功后调用栅障等待的API函数挂起本线程,直到所有的成员都创建或加入组时,释放本线程;
步骤4)接收方发起数据传输过程,向发送方发送消息,内容为接收方设备的ID、数据接收首地址、接收数据长度;
步骤5)发送方成功接收到消息后,根据报文内容向接收方的接收首地址发送指定长度的数据,该数据长度取各个接收数据长度与发送数据长度的最小值;
步骤6)数据发送完成后接收方进入SRIO门铃中断,在中断服务程序内部发送事件给接收线程;
步骤7)接收线程接收到发送方对应事件后返回,结束接收过程。
3.如权利要求2所述一种在分布式应用系统之间传递消息的方法,其特征在于,所述步骤1)中创建组的同时指定物理链路,选择传输模式,包括大数据、短消息以及缺省模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610300555.7A CN106020995B (zh) | 2016-05-09 | 2016-05-09 | 一种分布式应用系统之间的消息传递方法和消息中间件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610300555.7A CN106020995B (zh) | 2016-05-09 | 2016-05-09 | 一种分布式应用系统之间的消息传递方法和消息中间件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106020995A CN106020995A (zh) | 2016-10-12 |
CN106020995B true CN106020995B (zh) | 2022-09-20 |
Family
ID=57099137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610300555.7A Active CN106020995B (zh) | 2016-05-09 | 2016-05-09 | 一种分布式应用系统之间的消息传递方法和消息中间件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106020995B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247631B (zh) * | 2017-07-04 | 2020-07-28 | 无锡雷华网络技术有限公司 | 通用的gpon-olt系统板间通信中间件系统 |
CN108108627B (zh) * | 2017-11-30 | 2020-07-28 | 中国联合网络通信集团有限公司 | 消息处理方法和装置 |
CN109379432B (zh) * | 2018-10-31 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、服务器及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353596B1 (en) * | 1996-04-12 | 2002-03-05 | Lucent Technologies Inc. | System and method for multipoint-to-multipoint multicasting |
CN102055653A (zh) * | 2009-11-10 | 2011-05-11 | 中兴通讯股份有限公司 | 高速互联系统中的抓包方法及装置 |
CN103631527A (zh) * | 2012-08-20 | 2014-03-12 | 中国人民解放军信息工程大学 | 基于两级交换架构的dsp处理器阵列实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677853A (zh) * | 2013-12-30 | 2014-03-26 | 哈尔滨工业大学 | 一种在dm642型dsp内实现hit-tena中间件的方法 |
-
2016
- 2016-05-09 CN CN201610300555.7A patent/CN106020995B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353596B1 (en) * | 1996-04-12 | 2002-03-05 | Lucent Technologies Inc. | System and method for multipoint-to-multipoint multicasting |
CN102055653A (zh) * | 2009-11-10 | 2011-05-11 | 中兴通讯股份有限公司 | 高速互联系统中的抓包方法及装置 |
CN103631527A (zh) * | 2012-08-20 | 2014-03-12 | 中国人民解放军信息工程大学 | 基于两级交换架构的dsp处理器阵列实现方法 |
Non-Patent Citations (1)
Title |
---|
基于C6000 DSP NDK的组播网络设计与实现;董博宇 等;《现代电子技术》;20130315;第36卷(第6期);第122-124页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106020995A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen | Technical report | |
CN106020995B (zh) | 一种分布式应用系统之间的消息传递方法和消息中间件系统 | |
CN109561022B (zh) | 一种组播转发方法及组播路由器 | |
WO2020253538A1 (zh) | 虚拟网络群组的广播方法、装置、设备及系统 | |
CN104184828A (zh) | 混合网络系统、通信方法和网络节点 | |
WO2020001842A1 (en) | Communication system core network and method for providing heart-beat messages | |
WO2020107691A1 (zh) | 蓝牙连接方法及装置 | |
WO2019075863A1 (zh) | 一种服务响应方法及其终端 | |
WO2022152089A1 (zh) | 一种信息传输方法及其装置 | |
CN112527523A (zh) | 面向高性能计算多云的分布式消息传递方法及系统 | |
CN104184687A (zh) | 一种通信基带处理的流程控制方法和硬件加速器电路 | |
CN1925386A (zh) | 时钟同步方法以及应用该方法的第一部件和第二部件 | |
CN108566294B (zh) | 一种支持计算平面的通信网络系统 | |
CN110740182B (zh) | 一种基于dds技术的动态数据通信方法及设备 | |
WO2012174838A1 (zh) | 一种网元消息并发处理方法及系统 | |
US20200296552A1 (en) | Method, device and system for transmitting multicast group information | |
CN109669788A (zh) | 面向直接内存访问互连通信的多核芯片的mpi实现方法 | |
WO2020147081A1 (zh) | 一种数据传输方法、相关设备及计算机存储介质 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
WO2013000231A1 (zh) | 批量业务处理的方法和装置 | |
WO2022151970A1 (zh) | 一种数据传输方法、系统以及计算节点 | |
CN114884805A (zh) | 数据传输方法、装置、终端及存储介质 | |
CN112995095B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN110855540B (zh) | 一种基于单环网的485多主通信方法和系统 | |
CN115278548A (zh) | 一种数据传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |