CN116455972B - 基于消息中心通信的仿真中间件的实现方法及系统 - Google Patents
基于消息中心通信的仿真中间件的实现方法及系统 Download PDFInfo
- Publication number
- CN116455972B CN116455972B CN202310718253.1A CN202310718253A CN116455972B CN 116455972 B CN116455972 B CN 116455972B CN 202310718253 A CN202310718253 A CN 202310718253A CN 116455972 B CN116455972 B CN 116455972B
- Authority
- CN
- China
- Prior art keywords
- message
- file
- cache
- simulation
- index
- 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
- 238000004088 simulation Methods 0.000 title claims abstract description 111
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000006854 communication Effects 0.000 title claims abstract description 39
- 238000004891 communication Methods 0.000 title claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 62
- 230000002085 persistent effect Effects 0.000 claims description 43
- 230000005540 biological transmission Effects 0.000 claims description 41
- 238000012790 confirmation Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 14
- 230000001680 brushing effect Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims 4
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 238000004458 analytical method Methods 0.000 abstract description 3
- 238000011161 development Methods 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000012360 testing method Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于消息中心通信的仿真中间件的实现方法和系统。所述方法在分布式联合仿真运行过程中,采用消息中心为仿真服务系统提供网络接入及通信链路管理、消息报文解析及路由转发、发布订阅处理及QoS匹配等网络通信功能支撑。同时,消息中心提供仿真开发套件,屏蔽异构软硬件环境带来的差异性,为仿真服务系统提供统一的网络通信接口及功能支持,使其具有良好的可移植性和通用性。仿真单元通信过程中,消息中心依据仿真服务系统初始化时建立的配置,通过API或进程通信机制与仿真服务系统交互。减少仿真应用开发人员的工作量;提供仿真监控工具,方便开发人员对仿真应用进行测试或执行训练。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于消息中心通信的仿真中间件的实现方法及系统。
背景技术
分布式仿真技术应用场景的多样性使高层体系结构(HLA)在接入者增多、数据传输规模较大时,实时性较低,无法应用于虚实结合的仿真场景;同时HLA的仿真系统在不同软硬件平台间兼容性差,降低了其可移植性及可重用性。
发明内容
基于此,有必要针对上述技术问题,提供一种基于消息中心通信的仿真中间件的实现方法及系统。
一种基于消息中心通信的仿真中间件的实现方法,所述方法包括:
在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输。
消息中心提供请求应答服务,处理所有请求应答式消息传输数据。
将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取。
索引创建线程实时解析缓存或磁盘上存储的消息文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针。
读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取。
在其中一个实施例中,在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输,包括:
在分布式联合仿真运行过程中,作为消息生产者的仿真单元发布主题消息到消息中心,消息中心收取完整报文后,返回应答确认。
消息生产者通过通信域名和主题名向管理节点注册,并获取所述主题名下的工作节点路由信息。
客户端根据获取的所述工作节点路由信息在链路表中查找一次,若找不到相同的路由信息,则建立新的网络链路,并将所述工作节点路由信息添加到资源上下文管理的新的网络链路表中。
消息生产者与获取到的消息中心建立TCP链接,并向消息中心发起连接注册,连接注册成功后注册生产者实例;然后通过TCP链接发送消息到消息中心的主题中,消息中心对收到的消息返回确认应答。
在其中一个实施例中,消息中心提供请求应答服务,处理所有请求应答式消息传输数据,包括:
消息中心提供请求应答服务,所述请求应答服务包括:管理请求者和应答者注册信息,管理应答消息任务注册和注销,管理应答消息任务和应答者的绑定关系。
为每条请求应答式消息的请求消息分配唯一传输ID,根据唯一传输ID创建请求消息的路由索引表和超时处理表。
在其中一个实施例中,将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取,包括:
工作线程写入非持久消息到消息缓存后,及时返回非持久消息的确认应答。
工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答。
在其中一个实施例中,工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答,包括:
工作线程写入持久消息到消息缓存后,缓存处理线程检查内部队列是否有格式化的消息。
如果有格式化的消息,则判断是否有空闲缓存,如果有空闲缓存则判断缓存是否已满,如果缓存已满,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件;如果缓存未满,则复制消息到空闲缓存,判断缓存是否超时,如果超时则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件,如果未超时,则判断消息是否为持久消息,如果是持久消息,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件。
在其中一个实施例中,读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取,包括:
内存映射文件采用虚拟内存技术,将文件I/O作为常规内存访问,允许一部分虚拟内存与文件进行逻辑关联。
文件的页面大小部分从文件系统读取到物理页面,文件的读写按常规内存访问来处理。
一种基于消息中心通信的仿真中间件的实现系统,所述系统包括:
消息传输模块,用于在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输;消息中心提供请求应答服务,处理所有请求应答式消息传输数据。
消息写入模块,用于将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取。
索引建立模块,用于索引创建线程实时解析缓存或磁盘上存储的消息文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针。
消息读取模块,用于读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取。
上述一种基于消息中心通信的仿真中间件的实现方法及系统,所述方法在分布式联合仿真运行过程中,采用消息中心为仿真服务系统提供网络接入及通信链路管理、消息报文解析及路由转发、发布订阅处理及QoS匹配等网络通信功能支撑。同时,消息中心提供仿真开发套件,屏蔽异构软硬件环境(包括异构网络环境、多种操作系统等)带来的差异性,为仿真服务系统提供统一的网络通信接口及功能支持,使其具有良好的可移植性和通用性。仿真单元通信过程中,消息中心依据仿真服务系统初始化时建立的配置(发布订阅关系等),通过API或进程通信机制与仿真服务系统交互。减少仿真应用开发人员的工作量;提供仿真监控工具,方便开发人员对仿真应用进行测试或执行训练。
附图说明
图1为一个实施例中基于消息中心通信的仿真中间件的实现方法的流程示意图;
图2为另一个实施例中消息缓存处理流程示意图;
图3另为一个实施例中消息存储结构图示意图;
图4为另一个实施例中hash链表示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于消息中心通信的仿真中间件的实现方法,该方法包括以下步骤:
步骤100:在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输。
具体的,消息中心不仅能够覆盖HLA的核心特性,还能在保证仿真应用间的互操作性基础之上,进一步提高仿真系统的实时性、可重用性和移植性,消息中心将仿真服务中的公布订购关系通过主题进行映射,以异步方式接收仿真单元发送的消息,依据不同的消息类型,对消息进行高效路由转发,分别提交给仿真服务系统处理(参数配置和控制指令类消息)或提交给发布订阅处理模块(属性更新、交互类消息)。为仿真服务系统提供网络通信功能支撑,在使用过程中与仿真服务系统深度融合,并与仿真服务系统一起共同构成完整的中间件,可满足当下仿真接入者多且实时性要求高的需求。
由于仿真系统、消息中心均采用订阅发布模式,且其二者实体之间具有高度对应的映射关系,因而从概念而言,二者具有较强的相似性。仿真系统中的数据分发管理采用的是组播的方式实现数据传输,导致在大规模数据传输的情况下HLA的实时性表现差;而消息中心天然满足了复杂系统的实时、高效的数据交换要求,实时性表现优异。
步骤102:消息中心提供请求应答服务,处理所有请求应答式消息传输数据。
具体的,仿真推进分为时间驱动、事件驱动两种形式。以时间为驱动类似于现实世界中的自然时间流逝,仿真应用组件将会在对应时间点完成其自身的相关操作;以事件为驱动则是在监测到某件事情发生后,仿真应用组件采取相关操作。以时间为驱动的仿真流程,当仿真演练场景中所有仿真组件均进入就绪状态后,开发人员可以通过监控工具启动该仿真演练场景,进行仿真推进,时间驱动服务负责检查当前是否满足仿真组件的时间推进周期,如满足,则对仿真组件的时间进行推进,完成仿真业务的执行。若仿真服务对推进请求处理不及时,则严重阻碍仿真的运行。
消息中心提供请求应答服务,处理所有请求应答式消息传输数据,包括管理请求者和应答者注册信息,管理应答消息任务注册和注销,管理应答消息任务和应答者的绑定关系,为每条请求应答式消息的请求消息分配唯一传输id,根据唯一传输id创建请求消息的路由索引表和超时处理表。保证请求应答的高性能传输,减少多线程的竞争传输,统一管理公共资源,根据消息中心接收线程数量创建相应数量的消息接收缓存,减少锁的竞争,提高请求应答式消息传输效率。
步骤104:将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取。
具体的,数据存储处理是数据传输的基本要求,数据必须进行持久化存储。在客户端大并发访问的场景下,消息中心需要从磁盘上频繁的读写消息。消息中心收到消息后,消息需能够低延时、高性能的写入存储空间。海量的亿级消息存储在磁盘上,需要高效的组织存储空间,能够快速的在存储空间上检索和统计消息、读取消息内容。当消息不再需要时,消息中心能够回收存储空间。
单个实例下所有队列共用一个数据文件来存储。它的缺点是会存在较多的随机读操作,因此读的效率相对偏低。同时消费消息需要依赖消费者队列,构建该逻辑消费队列需要一定开销。但是随着业务增长,Topic的数据增多,集群负载增大,这种存储结构对性能却影响不大,延迟也较独立结构明显较低。消息存储结构图如图3所示。
为了提高消息的读写速度。发布到服务端的消息先放到消息缓存,然后批量写入消息文件。如果读取消息时,消息在当前上下文的缓存中,则从缓存中读取。
步骤106:索引创建线程实时解析缓存或磁盘上存储的消息文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针。
具体的,对存储的数据建立高性能索引,以支撑数据的快速检索定位,系统可让用户快速的从消息中心查询自己想要的消息。索引创建线程实时解析缓存或磁盘上存储的消息文件,按照消息的主题名批量创建主题索引文件。索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容。
具体的,索引文件可以通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息。索引文件的逻辑结构类似哈希地图(HashMap),哈希地图以键-值(Key-Value)形式存储数据,索引文件的存储格式也是键-值;其中:
键(Key):消息关键字。索引文件的键(Key)其实是消息关键字经过hash得到的一个整数(Integer)。
值(Value):物理偏移(physical offset)。索引文件的值(Value)主要是消息在CommitLog 中的绝对物理偏移量。
哈希(hash)冲突时,值(Value)以链表的方式存储,越新的消息在链表越前面。
消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针(在时间上是前一条,越晚到达的消息在链表越前面)。哈希链表示意图如图4所示。
步骤108:读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取。
上述基于消息中心通信的仿真中间件的实现方法中,所述方法在分布式联合仿真运行过程中,采用消息中心为仿真服务系统提供网络接入及通信链路管理、消息报文解析及路由转发、发布订阅处理及QoS匹配等网络通信功能支撑。同时,消息中心提供仿真开发套件,屏蔽异构软硬件环境(包括异构网络环境、多种操作系统等)带来的差异性,为仿真服务系统提供统一的网络通信接口及功能支持,使其具有良好的可移植性和通用性。仿真单元通信过程中,消息中心依据仿真服务系统初始化时建立的配置(发布订阅关系等),通过API或进程通信机制与仿真服务系统交互。减少仿真应用开发人员的工作量;提供仿真监控工具,方便开发人员对仿真应用进行测试或执行训练。
在其中一个实施例中,步骤100包括:在分布式联合仿真运行过程中,作为消息生产者的仿真单元发布主题消息到消息中心,消息中心收取完整报文后,返回应答确认;消息生产者通过通信域名和主题名向管理节点注册,并获取主题名下的工作节点路由信息;客户端根据获取的工作节点路由信息在链路表中查找一次,若找不到相同的路由信息,则建立新的网络链路,并将工作节点路由信息添加到资源上下文管理的新的网络链路表中;消息生产者与获取到的消息中心建立TCP链接,并向消息中心发起连接注册,连接注册成功后注册生产者实例;然后通过TCP链接发送消息到消息中心的主题中,消息中心对收到的消息返回确认应答。
在其中一个实施例中,步骤102包括:消息中心提供请求应答服务,请求应答服务包括:管理请求者和应答者注册信息,管理应答消息任务注册和注销,管理应答消息任务和应答者的绑定关系;为每条请求应答式消息的请求消息分配唯一传输ID,根据唯一传输ID创建请求消息的路由索引表和超时处理表。
在其中一个实施例中,步骤104包括:工作线程写入非持久消息到消息缓存后,及时返回非持久消息的确认应答;工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答。
具体的,工作线程写入非持久消息到缓存后,立刻返回非持久消息的确认应答。工作线程写入持久消息到缓存,不立刻返回确认应答,在刷盘后,才会返回持久消息的确认应答。一般情况下,非持久消息的确认应答比持久消息的确认应答更快的返回给客户端。
缓存处理线程检查内部队列是否有格式化的消息,如有消息,则将消息拷贝到缓存。缓存满,缓存超时,缓存超限制值,消息是持久类型消息时,通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件。消息缓存处理流程如图2所示。
在其中一个实施例中,工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答,包括:工作线程写入持久消息到消息缓存后,缓存处理线程检查内部队列是否有格式化的消息;如果有格式化的消息,则判断是否有空闲缓存,如果有空闲缓存则判断缓存是否已满,如果缓存已满,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件;如果缓存未满,则复制消息到空闲缓存,判断缓存是否超时,如果超时则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件,如果未超时,则判断消息是否为持久消息,如果是持久消息,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件。
在其中一个实施例中,步骤108包括:内存映射文件采用虚拟内存技术,将文件I/O作为常规内存访问,允许一部分虚拟内存与文件进行逻辑关联;文件的页面大小部分从文件系统读取到物理页面,文件的读写按常规内存访问来处理。
具体的,读取消息文件时,使用内存映射方式打开消息偏移位置所在的Commitlog文件,以提高文件的读取效率。内存映射文件采用虚拟内存技术,将文件I/O作为常规内存访问,允许一部分虚拟内存与文件进行逻辑关联。文件的页面大小部分从文件系统读取到物理页面(操作系统可以选择一次预读取多个页面大小的相邻数据块)。文件的读写就按常规内存访问来处理。通过内存的文件操作,没有采用系统调用read()和write()的开销,简化了文件的访问和使用。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种基于消息中心通信的仿真中间件的实现系统,包括:消息传输模块、消息写入模块、索引建立模块和消息读取模块,其中:
消息传输模块,用于在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输;消息中心提供请求应答服务,处理所有请求应答式消息传输数据。
消息写入模块,用于将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取。
索引建立模块,用于索引创建线程实时解析缓存或磁盘上存储的消息文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针。
消息读取模块,用于读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取。
在其中一个实施例中,消息传输模块,还用于在分布式联合仿真运行过程中,作为消息生产者的仿真单元发布主题消息到消息中心,消息中心收取完整报文后,返回应答确认;消息生产者通过通信域名和主题名向管理节点注册,并获取主题名下的工作节点路由信息;客户端根据获取的工作节点路由信息在链路表中查找一次,若找不到相同的路由信息,则建立新的网络链路,并将工作节点路由信息添加到资源上下文管理的新的网络链路表中;消息生产者与获取到的消息中心建立TCP链接,并向消息中心发起连接注册,连接注册成功后注册生产者实例;然后通过TCP链接发送消息到消息中心的主题中,消息中心对收到的消息返回确认应答。
在其中一个实施例中,消息传输模块,还用于消息中心提供请求应答服务,请求应答服务包括:管理请求者和应答者注册信息,管理应答消息任务注册和注销,管理应答消息任务和应答者的绑定关系;为每条请求应答式消息的请求消息分配唯一传输ID,根据唯一传输ID创建请求消息的路由索引表和超时处理表。
在其中一个实施例中,消息写入模块,还用于工作线程写入非持久消息到消息缓存后,及时返回非持久消息的确认应答;工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答。
在其中一个实施例中,消息写入模块,还用于工作线程写入持久消息到消息缓存后,缓存处理线程检查内部队列是否有格式化的消息;如果有格式化的消息,则判断是否有空闲缓存,如果有空闲缓存则判断缓存是否已满,如果缓存已满,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件;如果缓存未满,则复制消息到空闲缓存,判断缓存是否超时,如果超时则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件,如果未超时,则判断消息是否为持久消息,如果是持久消息,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件。
在其中一个实施例中,索引建立模块中索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针。
在其中一个实施例中,消息读取模块,还用于内存映射文件采用虚拟内存技术,将文件I/O作为常规内存访问,允许一部分虚拟内存与文件进行逻辑关联;文件的页面大小部分从文件系统读取到物理页面,文件的读写按常规内存访问来处理。
关于基于消息中心通信的仿真中间件的实现系统的具体限定可以参见上文中对于基于消息中心通信的仿真中间件的实现方法的限定,在此不再赘述。上述基于消息中心通信的仿真中间件的实现系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种基于消息中心通信的仿真中间件的实现方法,其特征在于,所述方法包括:
在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输;
消息中心提供请求应答服务,处理所有请求应答式消息传输数据;
将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取;
索引创建线程实时解析缓存或磁盘上的消息存储文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针;
读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取;
其中,在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输,包括:
在分布式联合仿真运行过程中,作为消息生产者的仿真单元发布主题消息到消息中心,消息中心收取完整报文后,返回应答确认;
消息生产者通过通信域名和主题名向管理节点注册,并获取所述主题名下的工作节点路由信息;
客户端根据获取的所述工作节点路由信息在链路表中查找一次,若找不到相同的路由信息,则建立新的网络链路,并将所述工作节点路由信息添加到资源上下文管理的新的网络链路表中;
消息生产者与获取到的消息中心建立TCP链接,并向消息中心发起连接注册,连接注册成功后注册生产者实例;然后通过TCP链接发送消息到消息中心的主题中,消息中心对收到的消息返回确认应答。
2.根据权利要求1所述的方法,其特征在于,消息中心提供请求应答服务,处理所有请求应答式消息传输数据,包括:
消息中心提供请求应答服务,所述请求应答服务包括:管理请求者和应答者注册信息,管理应答消息任务注册和注销,管理应答消息任务和应答者的绑定关系;
为每条请求应答式消息的请求消息分配唯一传输ID,根据唯一传输ID创建请求消息的路由索引表和超时处理表。
3.根据权利要求1所述的方法,其特征在于,将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取,包括:
工作线程写入非持久消息到消息缓存后,及时返回非持久消息的确认应答;
工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答。
4.根据权利要求3所述的方法,其特征在于,工作线程写入持久消息到消息缓存后,暂缓返回持久消息的确认应答,当刷盘后,才会返回持久信息的确认应答,包括:
工作线程写入持久消息到消息缓存后,缓存处理线程检查内部队列是否有格式化的消息;
如果有格式化的消息,则判断是否有空闲缓存,如果有空闲缓存则判断缓存是否已满,如果缓存已满,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件;如果缓存未满,则复制消息到空闲缓存,判断缓存是否超时,如果超时则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件,如果未超时,则判断消息是否为持久消息,如果是持久消息,则通知刷盘线程刷出缓存,批量顺序写入磁盘消息文件。
5.根据权利要求1所述的方法,其特征在于,读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取,包括:
内存映射文件采用虚拟内存技术,将文件I/O作为常规内存访问,允许一部分虚拟内存与文件进行逻辑关联;
文件的页面大小部分从文件系统读取到物理页面,文件的读写按常规内存访问来处理。
6.一种基于消息中心通信的仿真中间件的实现系统,其特征在于,所述系统包括:
消息传输模块,用于在分布式联合仿真运行过程中,作为消息生产者的仿真单元与作为消息消费者的仿真单元通过消息中心提供的主题直接建立订阅关系实现消息传输;消息中心提供请求应答服务,处理所有请求应答式消息传输数据;
消息写入模块,用于将发布到服务端的消息先放到消息缓存,如果读取消息时消息在当前上下文的缓存中,则从缓存中读取;
索引建立模块,用于索引创建线程实时解析缓存或磁盘上的消息存储文件,按照消息的主题名批量创建主题索引文件;所述索引文件用于主题消息消费的快速查找,使用索引项可快速定位消息在存储文件中的实际偏移位置,工作线程从消息存储文件中的实际偏移位置读取消息内容;所述索引文件通过消息关键字,查询到消息在CommitLog中的物理偏移量,进而从CommitLog中查询消息;消息保存时间与索引文件最早消息保存时间的差值,用于搜索时间范围内的消息,指向下一条消息位置的指针;
消息读取模块,用于读取消息文件时,采用内存映射方式打开消息偏移位置所在的Commitlog文件进行消息文件读取;
消息传输模块,还用于在分布式联合仿真运行过程中,作为消息生产者的仿真单元发布主题消息到消息中心,消息中心收取完整报文后,返回应答确认;消息生产者通过通信域名和主题名向管理节点注册,并获取所述主题名下的工作节点路由信息;客户端根据获取的所述工作节点路由信息在链路表中查找一次,若找不到相同的路由信息,则建立新的网络链路,并将所述工作节点路由信息添加到资源上下文管理的新的网络链路表中;消息生产者与获取到的消息中心建立TCP链接,并向消息中心发起连接注册,连接注册成功后注册生产者实例;然后通过TCP链接发送消息到消息中心的主题中,消息中心对收到的消息返回确认应答。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310718253.1A CN116455972B (zh) | 2023-06-16 | 2023-06-16 | 基于消息中心通信的仿真中间件的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310718253.1A CN116455972B (zh) | 2023-06-16 | 2023-06-16 | 基于消息中心通信的仿真中间件的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116455972A CN116455972A (zh) | 2023-07-18 |
CN116455972B true CN116455972B (zh) | 2023-08-29 |
Family
ID=87135997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310718253.1A Active CN116455972B (zh) | 2023-06-16 | 2023-06-16 | 基于消息中心通信的仿真中间件的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116455972B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435353B (zh) * | 2023-12-20 | 2024-03-29 | 北京遥感设备研究所 | 一种面向高频检查点操作的综合优化方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009112081A1 (en) * | 2008-03-14 | 2009-09-17 | Nokia Siemens Networks Oy | A publish/subscribe system for heterogeneous access management |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
WO2018149479A1 (en) * | 2017-02-14 | 2018-08-23 | Guan Wen | Distributed meta messaging computing |
CN109800053A (zh) * | 2018-12-19 | 2019-05-24 | 中国电子科技集团公司电子科学研究院 | 一种支持国产操作系统的网络信息体系仿真平台 |
CN110019001A (zh) * | 2017-08-17 | 2019-07-16 | 中国电信股份有限公司 | 提升消息中间件消息追踪能力的方法、系统和监控模块 |
CN112799858A (zh) * | 2021-01-08 | 2021-05-14 | 中国人民解放军63920部队 | 异构联合仿真环境下的异构仿真模型数据处理方法及系统 |
GB202110633D0 (en) * | 2020-05-08 | 2021-09-08 | Univ Harbin Eng | Time consistency synchronization method for distributed simulation |
CN115115344A (zh) * | 2022-07-22 | 2022-09-27 | 北京树优信息技术有限公司 | 多学科仿真优化业务服务管理方法及中台系统 |
CN115758668A (zh) * | 2022-10-14 | 2023-03-07 | 航天新长征大道科技有限公司 | 基于lvc的分布式仿真数据交互方法和相关设备 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
CN116010039A (zh) * | 2023-03-28 | 2023-04-25 | 交通运输部公路科学研究所 | 用于智能汽车多实体联合仿真的消息中间件集成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809790B2 (en) * | 2020-09-22 | 2023-11-07 | Beijing Voyager Technology Co., Ltd. | Architecture for distributed system simulation timing alignment |
-
2023
- 2023-06-16 CN CN202310718253.1A patent/CN116455972B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009112081A1 (en) * | 2008-03-14 | 2009-09-17 | Nokia Siemens Networks Oy | A publish/subscribe system for heterogeneous access management |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
WO2018149479A1 (en) * | 2017-02-14 | 2018-08-23 | Guan Wen | Distributed meta messaging computing |
CN110019001A (zh) * | 2017-08-17 | 2019-07-16 | 中国电信股份有限公司 | 提升消息中间件消息追踪能力的方法、系统和监控模块 |
CN109800053A (zh) * | 2018-12-19 | 2019-05-24 | 中国电子科技集团公司电子科学研究院 | 一种支持国产操作系统的网络信息体系仿真平台 |
GB202110633D0 (en) * | 2020-05-08 | 2021-09-08 | Univ Harbin Eng | Time consistency synchronization method for distributed simulation |
CN112799858A (zh) * | 2021-01-08 | 2021-05-14 | 中国人民解放军63920部队 | 异构联合仿真环境下的异构仿真模型数据处理方法及系统 |
CN115115344A (zh) * | 2022-07-22 | 2022-09-27 | 北京树优信息技术有限公司 | 多学科仿真优化业务服务管理方法及中台系统 |
CN115758668A (zh) * | 2022-10-14 | 2023-03-07 | 航天新长征大道科技有限公司 | 基于lvc的分布式仿真数据交互方法和相关设备 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
CN116010039A (zh) * | 2023-03-28 | 2023-04-25 | 交通运输部公路科学研究所 | 用于智能汽车多实体联合仿真的消息中间件集成方法 |
Non-Patent Citations (1)
Title |
---|
丁威,张登,周继锋著.《ROCKETMQ技术内幕 ROCKETMQ架构设计与实现原理 第2版》.2021,正文第90-106页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116455972A (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741053B2 (en) | Data management system, method, terminal and medium based on hybrid storage | |
US20200387405A1 (en) | Communication Method and Apparatus | |
US8799213B2 (en) | Combining capture and apply in a distributed information sharing system | |
JP5387757B2 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
JP2001514778A (ja) | メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法 | |
CN116455972B (zh) | 基于消息中心通信的仿真中间件的实现方法及系统 | |
CN111459418B (zh) | 一种基于rdma的键值存储系统传输方法 | |
US11080207B2 (en) | Caching framework for big-data engines in the cloud | |
CN111309266B (zh) | 一种基于ceph的分布式存储元数据系统日志优化系统与方法 | |
CN111881116A (zh) | 数据迁移方法、数据迁移系统、计算机系统和存储介质 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
US20220229688A1 (en) | Virtualized i/o | |
CN112579528B (zh) | 嵌入式网络文件系统服务器端高效率文件访问的方法 | |
EP0747813A2 (en) | Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment | |
CN112130976A (zh) | 一种基于rest的多引擎大数据任务管理方法 | |
CN116701387A (zh) | 数据分段写入方法、数据读取方法及装置 | |
US9052950B2 (en) | Selective constant complexity dismissal in task scheduling | |
US20100153605A1 (en) | Redispatching suspended tasks after completion of i/o operations absent i/o interrupts | |
CN110413689B (zh) | 一种内存数据库的多节点数据同步方法与装置 | |
US11726788B2 (en) | Tuple checkout with notify in coordination namespace system | |
CN112083914B (zh) | 实现对象模型嵌入式操作系统软总线的方法及系统 | |
Roush | The freeze free algorithm for process migration | |
US20190034249A1 (en) | Message processing | |
CN113704297B (zh) | 业务处理请求的处理方法、模块及计算机可读存储介质 | |
JP2953933B2 (ja) | 網管理システムにおける受信メッセージの多段階データベース作成方式 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |