CN114500417A - 一种通讯消息传输方法、消息处理硬件及存储介质 - Google Patents
一种通讯消息传输方法、消息处理硬件及存储介质 Download PDFInfo
- Publication number
- CN114500417A CN114500417A CN202111676393.4A CN202111676393A CN114500417A CN 114500417 A CN114500417 A CN 114500417A CN 202111676393 A CN202111676393 A CN 202111676393A CN 114500417 A CN114500417 A CN 114500417A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- address
- descriptor table
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000012545 processing Methods 0.000 title claims abstract description 52
- 238000004891 communication Methods 0.000 title claims abstract description 44
- 230000005540 biological transmission Effects 0.000 title claims abstract description 19
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 230000008569 process Effects 0.000 claims description 36
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000003993 interaction Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种通讯消息传输方法,应用于消息服务器,所述消息服务器包括消息处理软件和消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎,所述方法包括:利用所述消息处理软件在内存中初始化数据结构;利用所述消息处理软件将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中。本申请能够提高消息服务器的处理器使用率和消息通讯性能。本申请还公开了一种消息转发引擎及存储介质,具有以上有益效果。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种通讯消息传输方法、消息转发引擎及存储介质。
背景技术
随着人口老龄化、企业生产效率低下、人力成本逐年增高等问题日益突出,以及大数据、云计算、人工智能等信息技术发展,各种用于企业生产自动化或者提高生活便利性的信息***呈现***性增长趋势,信息***越来越复杂,功能模块越来越多,模块之间交互协作也变得越来越频繁,使得模块交互协作能力成为提升***性能的关键因素。
相关技术中,***模块交互方案为:搭建消息服务集群,在消息服务器上运行特定消息通讯协议(如发布订阅协议等)中间件,***各模块在初始化阶段设置订阅的消息类型,当某个模块在***运行阶段需要发送消息时,先将消息发送到消息服务器,再由消息服务器将消息转发给所有订阅了该消息的目标模块,目标模块收到消息并执行相应的处理流程。但是上述过程中消息通讯协议全部由软件实现,导致处理器使用率和消息通讯性能较低。
因此,如何提高消息服务器的处理器使用率和消息通讯性能是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供种通讯消息传输方法、消息处理硬件及存储介质,能够提高消息服务器的处理器使用率和消息通讯性能。
为解决上述技术问题,本申请提供一种通讯消息传输方法,应用于消息服务器,所述消息服务器包括消息处理软件和消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎,所述方法包括:
利用所述消息处理软件在内存中初始化数据结构;其中,所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址;
利用所述消息处理软件将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;其中,地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;
利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中。
可选的,所述利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中之后,还包括:
所述消息转发引擎通过中断信号通知所述消息处理软件消息转发完成;
所述消息处理软件以处理器核间中断方式通知其他业务进程消息转发完成。
可选的,所述利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中,包括:
利用多个所述消息转发引擎轮询多个所述发布者描述符表,以确定发布者模块标识;
基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址,基于所述模块消息发布队列描述符表地址从对应的模块消息发布队列描述符表中确定消息发布队列地址,从所述消息发布队列地址对应的消息发布队列中读取目标消息;
基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识;
基于所述订阅者模块标识在所述模块描述符表中确定对应的模块消息订阅队列描述符表地址,基于所述模块消息订阅队列描述符表地址从对应的模块消息订阅队列描述符表中确定消息订阅队列地址,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中。
可选的,从所述消息发布队列地址对应的消息发布队列中读取目标消息,包括:
从所述消息发布队列地址对应的消息发布队列中获取目标消息的消息标识和消息源地址,从所述消息源地址处读取目标消息;
相应的,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中,包括:
将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址,执行从所述消息源地址到所述消息目标地址的DMA操作。
可选的,所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址之前,还包括:
查询消息发布队列缓存中是否存在所述发布者模块标识对应的第一缓存项;
若存在,则从所述第一缓存项中获取消息发布队列地址和目标消息的消息标识,将所述消息发布队列地址对应的消息发布队列的读指针确定为消息源地址;
若不存在,则进入所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址的步骤。
可选的,所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识之前,还包括:
查询消息订阅队列缓存中是否存在所述目标消息的消息标识对应的第二缓存项;
若存在,则从所述第二缓存项中获取消息订阅队列地址,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址;
若不存在,则进入所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识的步骤。
可选的,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址之前,还包括:
从所述消息订阅队列地址对应的消息订阅队列中获取待验证消息标识,判断所述待验证消息标识与所述目标消息的消息标识是否一致;
若是,则进入将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址的步骤。
可选的,还包括:
在所述消息处理软件修改所述数据结构时,控制所述消息发布队列缓存和所述消息订阅队列缓存无效。
本申请还提供了一种消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎;
所述地址寄存器,用于存储消息处理软件配置的所述数据结构的地址;其中,所述地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;
所述消息转发引擎,用于从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中;
其中,所述消息处理硬件为消息服务器中的硬件,所述消息处理软件为所述消息服务器中的软件,所述消息处理软件用于在内存中初始化数据结构;所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址。
本申请还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,至少实现:在内存中初始化数据结构;其中,所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址;将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;其中,地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器。
本申请提供了一种通讯消息传输方法,应用于消息服务器,所述消息服务器包括消息处理软件和消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎,所述方法包括:利用所述消息处理软件在内存中初始化数据结构;其中,所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址;利用所述消息处理软件将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;其中,地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中。
本申请提供的消息服务器包括消息处理软件和消息处理硬件,消息处理软件用于在内存中初始化数据结构并将数据结构的地址配置到消息处理硬件中对应的地址寄存器中。消息处理硬件利用消息转发引擎从模块消息发布队列中读取目标消息并将目标消息传输至对应的模块消息订阅队列,以便完成消息的发布和订阅过程。本实施例的通讯消息传输过程基于消息处理软件和消息处理硬件协同处理实现,消息处理软件只参与内存初始化数据结构和为地址寄存器配置数据结构的地址的操作,具体的消息传输过程由消息处理硬件,因此本申请能够提高消息服务器的处理器使用率和消息通讯性能。本申请同时还提供了一种消息处理硬件和一种存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种通讯消息传输方法的流程图;
图2为本申请实施例所提供的一种软硬件交互流程图;
图3为本申请实施例所提供的一种消息通讯协议的软硬件模块实现原理示意图;
图4为本申请实施例所提供的一种硬件消息转发引擎的工作流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种通讯消息传输方法的流程图。
具体步骤可以包括:
S101:利用所述消息处理软件在内存中初始化数据结构;
其中,本实施例可以应用于消息服务器,所述消息服务器包括消息处理软件和消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎。
上述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址。描述符表是一种类似数组的线性存储数据结构,用于连续存储多个相同种类的配置项,通过配置项索引可快速定位到某一配置项,在明确索引值的情况下的数据查询效率较高。消息是一种模块互相通信的方法,发送方将某一消息发送到接收方,接收方接收消息并进行特殊处理,与中断服务程序类似,虚拟化技术中即用消息机制模拟虚拟机中断。
S102:利用所述消息处理软件将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;
其中,消息处理硬件的地址寄存器可以包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器。发布者描述符表地址寄存器,用于存储发布者描述符表的地址;订阅者描述符表地址寄存器用于存储订阅者描述符表的地址;模块描述符表地址寄存器用于存储模块描述符表的地址。
作为一种可行的实施方式,在所述消息处理软件修改所述数据结构时,本实施还可以控制所述消息发布队列缓存和所述消息订阅队列缓存无效,以使缓存和内存数据保持一致。队列是一种读写分离的数据存储结构,采用生产者消费者原理工作,写者作为生产者连续不断地向队列写入数据,读者作为消费者连续不断地从队列读取数据,读写可同时进行。
S103:利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中。
具体的,本实施例可以利用多个所述消息转发引擎轮询多个所述发布者描述符表,以确定发布者模块标识;基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址,基于所述模块消息发布队列描述符表地址从对应的模块消息发布队列描述符表中确定消息发布队列地址,从所述消息发布队列地址对应的消息发布队列中读取目标消息;基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识;基于所述订阅者模块标识在所述模块描述符表中确定对应的模块消息订阅队列描述符表地址,基于所述模块消息订阅队列描述符表地址从对应的模块消息订阅队列描述符表中确定消息订阅队列地址,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中。
作为一种可行的实施方式,所在读取并传输目标消息之后,所述消息转发引擎通还可以过中断信号通知所述消息处理软件消息转发完成;所述消息处理软件以处理器核间中断方式通知其他业务进程消息转发完成。
本实施例提供的消息服务器包括消息处理软件和消息处理硬件,消息处理软件用于在内存中初始化数据结构并将数据结构的地址配置到消息处理硬件中对应的地址寄存器中。消息处理硬件利用消息转发引擎从模块消息发布队列中读取目标消息并将目标消息传输至对应的模块消息订阅队列,以便完成消息的发布和订阅过程。本实施例的通讯消息传输过程基于消息处理软件和消息处理硬件协同处理实现,消息处理软件只参与内存初始化数据结构和为地址寄存器配置数据结构的地址的操作,具体的消息传输过程由消息处理硬件,因此本实施例能够提高消息服务器的处理器使用率和消息通讯性能。
作为对于图1对应实施例的进一步介绍,S103可以通过以下方式从所述消息发布队列地址对应的消息发布队列中读取目标消息:从所述消息发布队列地址对应的消息发布队列中获取目标消息的消息标识和消息源地址,从所述消息源地址处读取目标消息。相应的,S103可以通过以下方式将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中:将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址,执行从所述消息源地址到所述消息目标地址的DMA操作。
进一步的,在基于发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址之前,还可以查询消息发布队列缓存中是否存在所述发布者模块标识对应的第一缓存项;若存在,则从所述第一缓存项中获取消息发布队列地址和目标消息的消息标识,将所述消息发布队列地址对应的消息发布队列的读指针确定为消息源地址;若不存在,则进入所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址的步骤。
进一步的,在基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识之前,还可以查询消息订阅队列缓存中是否存在所述目标消息的消息标识对应的第二缓存项;若存在,则从所述第二缓存项中获取消息订阅队列地址,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址;若不存在,则进入所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识的步骤。
进一步的,在将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址之前,还可以从所述消息订阅队列地址对应的消息订阅队列中获取待验证消息标识,判断所述待验证消息标识与所述目标消息的消息标识是否一致;若是,则进入将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址的步骤。
下面通过在实际应用中的实施例说明上述实施例描述的流程。
在相关技术中,消息服务器完全通过软件完成模块之间的消息发布和订阅,但是这种消息通讯交互存下以下问题:(1)由于消息通讯协议全部由软件实现,当模块之间消息通讯交互过于频繁时,将占用消息服务器大量处理器资源,从而导致处理器使用率较高。(2)处理器使用率的升高,进一步限制了消息通讯中间件的数据传输性能,并可能导致其他需要处理器资源的模块如网络通讯或者存储器读写性能下降。(3)消息通讯协议仅能用于软件模块通讯,当***包含较多硬件模块时,需要为硬件模块通讯单独开发另外一套硬件通讯协议如请求响应队列机制等。
为解决上述相关技术中存在的缺陷,本申请实施例提供一种软硬件协同的多模块异步消息通讯方案。软硬件协同是一种综合考虑软硬件功能特性的***设计方法,通过合理划分软硬件功能模块,将与业务基本无关或者执行流程固定的***模块交给硬件实现,将在不同用户需求场景下执行流程差异较大的***模块交给软件实现,从而既能充分利用硬件数字逻辑电路并行执行特性,又能充分利用软件代码灵活性,综合软硬件优势提高***性能和灵活性。
请参见图2,图2为本申请实施例所提供的一种软硬件交互流程图,如图2所示,本申请将消息通讯协议分为软硬件两部分共同实现。软件(即,消息处理软件)部分功能是通过初始化内存数据结构如消息发布者描述符表(又称发布者描述符表)、消息订阅者描述符表(又称订阅者描述符表)等,将各软硬件模块分别设置为消息发布者或订阅者,并将描述符表地址配置到硬件地址寄存器。消息发布者描述符表中包括软硬件模块消息队列,消息订阅者描述符表中包括软硬件模块消息队列。硬件(即,消息处理硬件)部分功能是执行消息发布订阅协议,按照内存描述符表配置,轮询发布者在其消息队列中发布的消息,并将消息转发到所有订阅了该消息的目标软硬件模块消息队列当中。硬件部分还包括发布者描述符表地址寄存器和订阅者描述符表地址寄存器。
请参见图3,图3为本申请实施例所提供的一种消息通讯协议的软硬件模块实现原理示意图,软件中包括管理进程和软件发布订阅者集合,软件发布订阅者集合包括业务进程1~n,内存包括模块描述符表、发布者描述符表和消息描述符表,模块描述符表包括消息发布队列描述符表和消息订阅队列描述符表,消息描述符表包括订阅者描述符表。硬件包括消息转发引擎、硬件发布订阅者集合,硬件发布订阅者集合包括业务引擎1~n,硬件还包括中断标志、状态标志、发布者描述符表地址寄存器、模块描述符表地址寄存器和消息描述符表地址寄存器。图3所示各模块执行流程如下:
步骤A1):软件管理进程初始化内存消息转发数据结构并将各数据结构地址配置到硬件寄存器当中,包括如下数据结构:①表示消息发布者模块集合的发布者描述符表;②表示每个消息的订阅者模块集合(订阅者描述符表)的消息描述符表;③表示模块其他信息如模块消息发布队列(用于模块发布消息)描述符表、模块消息订阅队列(用于模块接收消息)描述符表的模块描述符表。
步骤A2):软件业务进程或者硬件业务引擎将本模块待发布消息写入模块描述符表项指向的模块消息发布队列当中,即图3中的步骤A2)a和步骤A2)b。
步骤A3):消息转发引擎执行如下描述符表定位过程:多个硬件消息转发引擎按照某种负载均衡算法(如一致性哈希算法)轮询多个发布者描述符表,即每个消息转发引擎轮询并转发一组发布者发布的消息,从而实现多组发布者待发布消息的并行轮询和转发;根据发布者模块标识定位模块描述符表项从而找到消息发布队列描述符表,然后从模块消息发布队列中取出消息数据;根据消息标识定位消息描述符表项从而找到订阅者描述符表;根据订阅者模块标识定位模块描述符表项从而找到消息订阅队列描述符表,然后将消息数据传输到消息订阅者的消息订阅队列当中,即图3中的步骤A3)a、步骤A3)b、步骤A3)c、步骤A3)d。
步骤A4):硬件通过中断信号通知软件管理进程或者其他业务引擎消息已转发完毕,并通过中断和状态标志寄存器提供本次消息传输状态;
步骤A5):软件管理进程以处理器核间中断方式通知其他业务进程消息已转发完毕;
步骤A6):作为订阅者的软硬件模块根据模块标识定位模块描述符表项从而找到消息订阅队列描述符表,进而从消息订阅队列取出转发完毕的消息,即图3中的步骤A6)a、步骤A6)b。
请参见图4,图4为本申请实施例所提供的一种硬件消息转发引擎的工作流程图,如图4所示,消息转发引擎连续不断地轮询所有发布者是否有待发布的消息数据,每轮询到一个待发布消息即将消息数据转发到所有订阅了该消息的目标模块,整个转发过程包括消息发布过程和消息订阅过程两部分。
消息发布过程的执行流程如下:
步骤B1):“发布者描述符表查询”模块通过发布者描述符表查找有效的发布者模块标识。
步骤B 2):“消息发布队列缓存查询”模块查询消息发布队列缓存中是否存在与发布者模块标识一致的缓存项,如果缓存项存在,则从该缓存项中获取模块消息队列地址并将该消息队列的读指针作为消息源地址,然后执行消息订阅过程,否则执行步骤B3)。
步骤B 3):执行如下与消息发布过程相关的多级描述符表查找过程,并在查找的每一阶段通过“消息发布队列缓存生成”模块将查找结果保存到消息发布队列缓存当中:步骤B 3)a:“模块消息发布描述符表地址查询”模块通过发布者模块标识定位模块描述符表项并从中取出模块消息发布队列描述符表地址;步骤B 3)b):“模块消息发布队列描述符表查询”和“模块消息发布队列查询”模块从模块消息发布队列描述符表获取模块所有消息发布队列地址并从队列获取待发布消息标识和消息源地址,每获取一个消息数据即执行一次消息订阅过程。
消息订阅过程的执行流程如下:
步骤B 4):“消息订阅队列缓存查询”模块查询消息订阅队列缓存中是否存在与待发布消息标识一致的缓存项,如果缓存项存在,则从该缓存项中获取模块消息订阅队列地址并将该队列的写指针作为消息目标地址,然后在执行一次从消息源地址到消息目标地址的DMA操作后完成消息订阅过程,否则执行步骤B5);
步骤B 5):执行如下与消息订阅过程相关的多级描述符表查找过程,并在查找的每一阶段通过“消息订阅队列缓存生成”模块将查找结果保存到消息订阅队列缓存当中。步骤B 5)a:“消息描述符表查询”模块通过消息标识定位消息描述符表项并从中取出消息订阅者描述符表地址;
步骤B 5)b:“订阅者描述符表查询”模块从订阅者描述符表中查找已订阅该消息的所有订阅者模块的模块标识;
步骤B 5)c:“模块消息订阅队列描述符表地址查询”模块通过模块标识定位模块描述符表项并从中取出模块消息订阅队列描述符表地址;
步骤B 5)d:“模块消息订阅队列描述符表查询”和“模块消息订阅队列查询”模块从模块消息订阅队列描述符表获取模块所有消息订阅队列地址并检查队列消息标识是否与待发布消息标识一致,如果一致则将队列写指针作为消息目标地址并在执行一次从消息源地址到消息目标地址的DMA操作后完成消息订阅过程;
步骤B6):当软件修改内存消息转发数据结构时,可通过“消息发布/订阅队列缓存刷新”模块使消息发布/订阅队列缓存无效,从而使缓存和内存数据一致,如图4中的步骤B6)a和步骤B6)b。
上述各执行步骤可通过合理安排数字逻辑电路时序实现以流水线方式并行执行。
以上实施例设计了基于发布订阅协议的硬件消息转发流程,通过引入内存多级描述符表、消息队列和中断信号通知方法,完成了消息数据的硬件转发。本实施例还将消息转发引擎细分为多个子模块以流水线机制并行执行并引入了描述符表缓存和缓存刷新技术,进一步提高了硬件消息转发引擎执行性能。由于消息通讯协议大部分处理过程都由硬件实现,软件仅需要初始化内存消息转发数据结构,后续消息转发过程不需要软件参与,当各模块之间消息通讯操作频繁时可极大地降低***处理器使用率。消息通讯处理器使用率的降低,可进一步让出更多处理器资源给其他***模块如网络传输或者磁盘读写等模块从而提升相应模块性能,同时基于消息队列形式的异步消息提交流程,使得各模块可一次性提交多个消息,结合硬件数字逻辑电路流水线技术,消息转发过程各阶段可并行执行,从而***消息通讯性能。本实施例增强了消息通讯协议通用性。软件模块之间、软件模块与硬件模块之间、硬件模块之间均可通过该方案实现点对点、点对多、多对多地转发消息数据,避免了为软硬件分别开发两套消息通讯协议,消息通讯协议通用性更强,应用场景更加广泛。
本申请实施例还提供的一种消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎;
所述地址寄存器,用于存储消息处理软件配置的所述数据结构的地址;其中,所述地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;
所述消息转发引擎,用于从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中;
其中,所述消息处理硬件为消息服务器中的硬件,所述消息处理软件为所述消息服务器中的软件,所述消息处理软件用于在内存中初始化数据结构;所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址。
本实施例提供的消息服务器包括消息处理软件和消息处理硬件,消息处理软件用于在内存中初始化数据结构并将数据结构的地址配置到消息处理硬件中对应的地址寄存器中。消息处理硬件利用消息转发引擎从模块消息发布队列中读取目标消息并将目标消息传输至对应的模块消息订阅队列,以便完成消息的发布和订阅过程。本实施例的通讯消息传输过程基于消息处理软件和消息处理硬件协同处理实现,消息处理软件只参与内存初始化数据结构和为地址寄存器配置数据结构的地址的操作,具体的消息传输过程由消息处理硬件,因此本实施例能够提高消息服务器的处理器使用率和消息通讯性能。
进一步的,所述消息转发引擎还用于通过中断信号通知所述消息处理软件消息转发完成;所述消息处理软件还用于以处理器核间中断方式通知其他业务进程消息转发完成。
进一步的,消息转发引擎用于转发引擎轮询多个所述发布者描述符表,以确定发布者模块标识;还用于基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址,基于所述模块消息发布队列描述符表地址从对应的模块消息发布队列描述符表中确定消息发布队列地址,从所述消息发布队列地址对应的消息发布队列中读取目标消息;还用于基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识;还用于基于所述订阅者模块标识在所述模块描述符表中确定对应的模块消息订阅队列描述符表地址,基于所述模块消息订阅队列描述符表地址从对应的模块消息订阅队列描述符表中确定消息订阅队列地址,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中。
进一步的,消息转发引擎用于从所述消息发布队列地址对应的消息发布队列中获取目标消息的消息标识和消息源地址,从所述消息源地址处读取目标消息;还用于将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址,执行从所述消息源地址到所述消息目标地址的DMA操作。
进一步的,所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址之前,消息转发引擎还用于查询消息发布队列缓存中是否存在所述发布者模块标识对应的第一缓存项;若存在,则从所述第一缓存项中获取消息发布队列地址和目标消息的消息标识,将所述消息发布队列地址对应的消息发布队列的读指针确定为消息源地址;若不存在,则进入所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址的步骤。
进一步的,所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识之前,消息转发引擎还用于查询消息订阅队列缓存中是否存在所述目标消息的消息标识对应的第二缓存项;若存在,则从所述第二缓存项中获取消息订阅队列地址,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址;若不存在,则进入所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识的步骤。
进一步的,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址之前,消息转发引擎还用于从所述消息订阅队列地址对应的消息订阅队列中获取待验证消息标识,判断所述待验证消息标识与所述目标消息的消息标识是否一致;若是,则进入将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址的步骤。
进一步的,消息转发引擎还用于在所述消息处理软件修改所述数据结构时,控制所述消息发布队列缓存和所述消息订阅队列缓存无效。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。本发明技术方案提出了一种软硬件协同的多模块异步消息通讯机制设计方法,该方法定义了软件业务进程、硬件业务引擎、消息转发引擎、模块描述符表、发布者描述符表、订阅者描述符表等,仅是为了理解本发明的具体实施方式,并非用以限定本发明,任何在不脱离本发明精神和范围下所做的优化,特别是对软硬件交互流程、多级描述符表结构定义、消息转发引擎缓存结构设计、流水线机制的优化,均在本发明的保护范围之内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种通讯消息传输方法,其特征在于,应用于消息服务器,所述消息服务器包括消息处理软件和消息处理硬件,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎,所述方法包括:
利用所述消息处理软件在内存中初始化数据结构;其中,所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址;
利用所述消息处理软件将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;其中,地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;
利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中。
2.根据权利要求1所述通讯消息传输方法,其特征在于,所述利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中之后,还包括:
所述消息转发引擎通过中断信号通知所述消息处理软件消息转发完成;
所述消息处理软件以处理器核间中断方式通知其他业务进程消息转发完成。
3.根据权利要求1所述通讯消息传输方法,其特征在于,所述利用所述消息转发引擎从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中,包括:
利用多个所述消息转发引擎轮询多个所述发布者描述符表,以确定发布者模块标识;
基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址,基于所述模块消息发布队列描述符表地址从对应的模块消息发布队列描述符表中确定消息发布队列地址,从所述消息发布队列地址对应的消息发布队列中读取目标消息;
基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识;
基于所述订阅者模块标识在所述模块描述符表中确定对应的模块消息订阅队列描述符表地址,基于所述模块消息订阅队列描述符表地址从对应的模块消息订阅队列描述符表中确定消息订阅队列地址,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中。
4.根据权利要求3所述通讯消息传输方法,其特征在于,从所述消息发布队列地址对应的消息发布队列中读取目标消息,包括:
从所述消息发布队列地址对应的消息发布队列中获取目标消息的消息标识和消息源地址,从所述消息源地址处读取目标消息;
相应的,将所述目标消息传输至所述消息订阅队列地址对应的消息订阅队列中,包括:
将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址,执行从所述消息源地址到所述消息目标地址的DMA操作。
5.根据权利要求4所述通讯消息传输方法,其特征在于,所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址之前,还包括:
查询消息发布队列缓存中是否存在所述发布者模块标识对应的第一缓存项;
若存在,则从所述第一缓存项中获取消息发布队列地址和目标消息的消息标识,将所述消息发布队列地址对应的消息发布队列的读指针确定为消息源地址;
若不存在,则进入所述基于所述发布者模块标识在所述模块描述符表中确定对应的模块消息发布队列描述符表地址的步骤。
6.根据权利要求4所述通讯消息传输方法,其特征在于,所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识之前,还包括:
查询消息订阅队列缓存中是否存在所述目标消息的消息标识对应的第二缓存项;
若存在,则从所述第二缓存项中获取消息订阅队列地址,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址;
若不存在,则进入所述基于所述目标消息的消息标识确定所述目标消息对应的订阅者描述符表,并在所述订阅者描述符表中确定订阅者模块标识的步骤。
7.根据权利要求6所述通讯消息传输方法,其特征在于,将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址之前,还包括:
从所述消息订阅队列地址对应的消息订阅队列中获取待验证消息标识,判断所述待验证消息标识与所述目标消息的消息标识是否一致;
若是,则进入将所述消息订阅队列地址对应的消息订阅队列的写指针确定为消息目标地址的步骤。
8.根据权利要求1所述通讯消息传输方法,其特征在于,还包括:
在所述消息处理软件修改所述数据结构时,控制所述消息发布队列缓存和所述消息订阅队列缓存无效。
9.一种消息处理硬件,其特征在于,所述消息处理硬件包括多个地址寄存器和多个消息转发引擎;
所述地址寄存器,用于存储消息处理软件配置的所述数据结构的地址;其中,所述地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器;
所述消息转发引擎,用于从模块消息发布队列中读取目标消息,并将所述目标消息传输至对应的模块消息订阅队列中;
其中,所述消息处理硬件为消息服务器中的硬件,所述消息处理软件为所述消息服务器中的软件,所述消息处理软件用于在内存中初始化数据结构;所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,至少实现:在内存中初始化数据结构;其中,所述数据结构包括发布者描述符表、消息描述符表和模块描述符表,所述发布者描述符表用于描述发布者模块集合,所述消息描述符表包括多个订阅者描述符表,每个所述订阅者描述符表用于描述对应的消息的订阅者模块集合,所述模块描述符表用于描述消息发布队列描述符表和消息订阅队列描述符表的地址;将所述数据结构的地址配置到所述消息处理硬件中对应的地址寄存器中;其中,地址寄存器包括发布者描述符表地址寄存器、订阅者描述符表地址寄存器和模块描述符表地址寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111676393.4A CN114500417A (zh) | 2021-12-31 | 2021-12-31 | 一种通讯消息传输方法、消息处理硬件及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111676393.4A CN114500417A (zh) | 2021-12-31 | 2021-12-31 | 一种通讯消息传输方法、消息处理硬件及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114500417A true CN114500417A (zh) | 2022-05-13 |
Family
ID=81510830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111676393.4A Pending CN114500417A (zh) | 2021-12-31 | 2021-12-31 | 一种通讯消息传输方法、消息处理硬件及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114500417A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009109510A1 (en) * | 2008-03-03 | 2009-09-11 | International Business Machines Corporation | Method and system for message delivery |
CN113572782A (zh) * | 2021-07-30 | 2021-10-29 | 广东机电职业技术学院 | 一种支持多种传感网的物联网网关及其实现方法 |
CN113596150A (zh) * | 2021-07-28 | 2021-11-02 | 南方电网数字电网研究院有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
-
2021
- 2021-12-31 CN CN202111676393.4A patent/CN114500417A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009109510A1 (en) * | 2008-03-03 | 2009-09-11 | International Business Machines Corporation | Method and system for message delivery |
CN113596150A (zh) * | 2021-07-28 | 2021-11-02 | 南方电网数字电网研究院有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
CN113572782A (zh) * | 2021-07-30 | 2021-10-29 | 广东机电职业技术学院 | 一种支持多种传感网的物联网网关及其实现方法 |
Non-Patent Citations (1)
Title |
---|
沙胜华;李欣;郭大权;: "基于发布/订阅的消息队列在工作流引擎中的应用研究", 计算机与现代化, no. 10, 15 October 2012 (2012-10-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110830581B (zh) | 提升区块链响应速度的方法、区块链应用***及相关设备 | |
CN108196961B (zh) | 一种异步消息处理方法、终端、***及存储介质 | |
CN108449410B (zh) | 一种云平台中消息管理方法、***及相关装置 | |
TW202025685A (zh) | 跨鏈存證方法及接取方法、裝置、電子設備 | |
US10873518B1 (en) | Transmission of subscription-based messages to internet of things (IoT) devices | |
CN101986271B (zh) | 调度tcam查询和刷新消息的方法和装置 | |
CN112988423A (zh) | 消息消费、消息分发方法、装置、服务器及存储介质 | |
CN102947799A (zh) | 将消息从消息源传送至订阅接收者 | |
CN107835203B (zh) | 消息分组投递的方法、装置、存储介质及终端 | |
CN110968586A (zh) | 分布式事务处理方法及装置 | |
CN110955857A (zh) | 一种用于高并发环境的业务处理方法及装置 | |
CN110912814A (zh) | 一种接口数据的分发方法及装置 | |
CN114064328A (zh) | 一种消息队列集群迁移方法及装置 | |
AU2020203282B2 (en) | Method and system for matching multi-dimensional data units in electronic information system | |
CN114500417A (zh) | 一种通讯消息传输方法、消息处理硬件及存储介质 | |
CN115391053B (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
US20230336510A1 (en) | Efficiently adding capabilities across multiple bridged message brokers | |
CN113691466A (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN114238183B (zh) | 实现Virtio设备的***、方法和介质 | |
US20210383469A1 (en) | Currency trading method based on blockchain and electronic device | |
US9172729B2 (en) | Managing message distribution in a networked environment | |
CN106776815B (zh) | 基于多模式切换的rdma友好的sparql查询方法 | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN112422670A (zh) | 一种基于中间消息设计和异步推送模型设计方法 | |
CN113315839B (zh) | 消息处理方法、***、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |