首页> 中国专利> 一种基于分布式黑板机制的仿真平台

一种基于分布式黑板机制的仿真平台

摘要

本申请涉及一种基于分布式黑板机制的仿真平台,所述平台包括:多个仿真模块;仿真模块之间通过分布式本地黑板机制进行数据交互;分布式本地黑板机制包括:环状数据交互机制、数据路由并行检索机制、多策略数据同步分发机制、差异化数据更新机制和实体状态‑更新逻辑分离机制,环状数据交互机制是通过队列实现仿真模块之间的环状数据交互,数据路由并行检索机制实现仿真模块之间数据路由的并行检索,多策略数据同步分发机制实现仿真模块之间的数据同步分发,差异化数据更新机制实现实体最新状态的接收存储,实体状态‑更新逻辑分离机制实现实体状态与更新逻辑解耦。采用本仿真平台能够提高数据同步分发效率。

著录项

  • 公开/公告号CN113821940A

    专利类型发明专利

  • 公开/公告日2021-12-21

    原文格式PDF

  • 申请/专利权人 湖南高至科技有限公司;

    申请/专利号CN202111384300.0

  • 发明设计人 张翼;张聪;张荣;

    申请日2021-11-22

  • 分类号G06F30/20(20200101);G06F16/27(20190101);G06F16/25(20190101);G06F9/54(20060101);

  • 代理机构43225 长沙国科天河知识产权代理有限公司;

  • 代理人赵杰

  • 地址 410000 湖南省长沙市长沙高新开发区岳麓西大道588号芯城科技园6栋8楼

  • 入库时间 2023-06-19 13:46:35

说明书

技术领域

本申请涉及数据处理与仿真领域,特别是涉及一种基于分布式黑板机制的仿真平台。

背景技术

随着仿真技术的发展,出现了黑板机制,黑板机制适用于大型分布式仿真系统的基础内核和底层支撑框架。采用这一技术,可以非常方便的实现分布式仿真计算,将大量的复杂模型根据计算量的大小合理配置到不同的仿真节点,充分发挥计算机网络中的硬件计算资源,大大提高了仿真模型的计算效率;采用黑板机制,实现了本地黑板数据的快速读写,以及网络数据的高速共享;同时也方便实现复杂仿真系统的分布式集成与部署。

然而,目前有多种黑板机制的实现方案和软件系统,仿真模块的元数据结构与数据黑板耦合较强,主流的黑板系统在应用前需要将元数据结构固化在共享内存中,无法在应用时动态构建需要交互的数据结构,因此在面向多领域、数据结构变化较多的仿真场景下支持不足,目前的黑板系统数据分发以黑板数据写入-黑板数据读取为主,模式单一,无法满足即时数据触发、数据同步拉取等多种分发模式,同时在分布式环境下,大部分黑板体制为全局黑板,即每个单机节点均维护一个全数据拷贝,每次更新均需要进行广播更新,影响分布式数据更新同步效率,数据同步分发效率低下等问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高数据同步分发效率的一种基于分布式黑板机制的仿真平台。

一种基于分布式黑板机制的仿真平台,所述平台包括:多个仿真模块;

仿真模块之间通过分布式本地黑板机制进行数据交互;分布式本地黑板机制包括:环状数据交互机制、数据路由并行检索机制、多策略数据同步分发机制、差异化数据更新机制和实体状态-更新逻辑分离机制;

环状数据交互机制是通过队列实现仿真模块之间的环状数据交互,分布式本地黑板机制的共享内存包括环状配置的实体状态区、实体缓存区与消息发布区;

数据路由并行检索机制是通过在仿真模块之间设置发布/订阅机制,实现仿真模块之间数据路由的并行检索;

多策略数据同步分发机制是通过API发布数据交互接口进行仿真模块之间的数据同步分发;

差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态差异信息,更新实体缓存区;

实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,实现实体状态与更新逻辑解耦。

在其中一个实施例中,环状数据交互机制是通过队列实现仿真模块之间的环状数据交互,包括:环状数据交互机制通过将仿真模块中的元数据设计为数据包的队列结构进行环状存储,将数据存储与数据结构定义分离,实现仿真模块之间的环状数据交互;元数据为仿真中需要交互的数据结构;环状存储指将数据包的写入区与读取区首尾相连。

在其中一个实施例中,数据路由并行检索机制是通过在仿真模块之间设置发布/订阅机制,实现仿真模块之间数据路由的并行检索,包括:数据路由并行检索机制将仿真模块中实体数据交互关系以发布/订阅的方式进行配置和描述,得到多张数据路由表;对数据路由表采用并行检索的方式,实现仿真模块之间数据路由的并行检索;并行检索为多节点、多线程和多进程的三级并行检索。

在其中一个实施例中,多策略数据同步分发机制是通过API发布数据交互接口进行仿真模块之间的数据同步分发,包括:多策略数据同步分发机制通过基于互斥锁的同步机制、触发式的事件机制对本地黑板机制的写入读取策略进行扩展,得到多种数据分发策略;数据分发策略包括主动推送、主动拉取和RPC服务;数据分发策略通过API发布数据交互接口调用callservice函数,实现仿真模块之间的数据同步分发。

在其中一个实施例中,数据分发策略通过API发布数据交互接口调用callservice函数,实现仿真模块之间的数据同步分发,包括:数据分发策略通过API发布数据交互接口调用callservice函数,将需要分发的数据写入仿真模块的共享内存中,调用方进行等待,写入完成后,通过仿真模块的单机总控从共享内存中读取分发数据并分发给另一仿真模块的单机总控,然后将分发数据写入该仿真模块的共享内存中,这个过程中发送方等待读取回复,当分发数据读取后,发送读取回复,调用方接收读取回复后,完成callservice函数调用,调用方继续运行,实现仿真模块之间的数据同步分发。

在其中一个实施例中,差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态差异信息,更新实体缓存区,包括:差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态进行对比,若一致则直接从实体缓存区获取实体状态,若不一致则根据接收到仿真实体的实体状态,更新实体缓存区。

在其中一个实施例中,实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,实现实体状态与更新逻辑解耦,包括:实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,通过无状态服务实例读取实体状态,实体之间通过无状态服务实例进行信息交互,实现实体状态的更新,同时,实现实体状态的读取和实体状态的更新之间的解耦。

上述一种基于分布式黑板机制的仿真平台,通过在分布式黑板机制中建立环状数据交互机制、数据路由并行检索机制、多策略数据同步分发机制、差异化数据更新机制和实体状态-更新逻辑分离机制,将仿真模块中的元数据设计为数据包的队列结构进行环状存储,实现元数据的灵活、动态注入,支持面向多领域、数据结构变化较多的仿真场景,对基于传统黑板机制的写入读取策略进行扩展,通过标准的API发布数据交互接口,在面向仿真的数据服务中首次实现了多策略数据同步分发,利用设定的差异化信息判断机制和将实体状态与更新逻辑解耦,使得能够快速读取仿真模块中实体的最新状态,进而提高了实体的数据同步分发效率。

附图说明

图1为一个实施例中基于分布式黑板机制的仿真平台的仿真模块之间数据交互图;

图2为一个实施例中分布式环状数据交互架构示意图;

图3为一个实施例中数据交互关系的配置示意图;

图4为一个实施例中实体状态与更新逻辑解耦示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种基于分布式黑板机制的仿真平台,平台包括:多个仿真模块;仿真模块之间通过分布式本地黑板机制进行数据交互;分布式本地黑板机制包括以下机制:环状数据交互机制、数据路由并行检索机制、多策略数据同步分发机制、差异化数据更新机制和实体状态-更新逻辑分离机制。

步骤1,建立环状数据交互机制,环状数据交互机制是通过队列实现仿真模块之间的环状数据交互,分布式本地黑板机制的共享内存包括环状配置的实体状态区、实体缓存区与消息发布区。

本申请通过引入“NoSQL”思想,将仿真模块中的数据设计为数据包的队列结构进行环状存储,将数据存储与数据结构定义分离,实现元数据的灵活、动态注入。

分布式本地黑板机制的共享内存包括环状配置的实体状态区、实体缓存区与消息发布区,其中,实体状态区主要存储参与仿真的模型实例状态,该区域的特点是数据结构相对固定,但数据内容动态变化,且数据消费的周期可长可短,需要在仿真周期内持久化保持。实体缓存区主要存储动态建立的临时实体信息,并在实体任务完成后销毁,释放内存空间。消息发布区为数据交互的主区域,主要存储每一tick步进时,仿真模型发布的大量消息数据,该数据具有即时消费的特点,无需持久化保持,因此该区域可环状循环使用。

步骤2,建立数据路由并行检索机制,数据路由并行检索机制是通过在仿真模块之间设置发布/订阅机制,实现仿真模块之间数据路由的并行检索。

设置发布/订阅机制是指将仿真模块的所有实体的数据交互关系以发布/订阅的方式进行配置和描述,形成多张数据路由表,仿真模块根据数据路由表进行路由。本申请中的并行检索是指多节点、多线程和多进程的三级并行检索模式。

步骤3,建立多策略数据同步分发机制,多策略数据同步分发机制是通过API发布数据交互接口进行仿真模块之间的数据同步分发。

多策略是指多个数据分发策略,包括:主动推送、主动拉取和RPC服务。API接口包括senddata、setstate、getstate、callservice等,实现不同的功能,本申请通过调用callservice函数进行仿真模块之间的数据同步分发。

步骤4,建立差异化数据更新机制,差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态差异信息,更新实体缓存区。

实体是指仿真模块中的仿真对象,比如飞机、车辆、人员等。实体状态差异信息是指将仿真模块接收到仿真实体的状态信息与仿真模块中存储的实体的最新状态信息进行对比产生的差异信息。

步骤5,建立实体状态-更新逻辑分离机制,实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,实现实体状态与更新逻辑解耦。

服务实例指服务代理,本身无程序实现,基于同一服务的服务实例拥有唯一共同的服务实现。由于服务是无状态的,在服务被调用或激活时,需要获知自身的服务实例ID,采取回调参数的方式传入服务内部逻辑,并最终加入自身服务实例ID,通过服务实例ID获取实体当前状态。

上述一种基于分布式黑板机制的仿真平台,通过在分布式黑板机制中建立环状数据交互机制、数据路由并行检索机制、多策略数据同步分发机制、差异化数据更新机制和实体状态-更新逻辑分离机制,将仿真模块中的元数据设计为数据包的队列结构进行环状存储,实现元数据的灵活、动态注入,支持面向多领域、数据结构变化较多的仿真场景,对基于传统黑板机制的写入读取策略进行扩展,通过标准的API发布数据交互接口,在面向仿真的数据服务中首次实现了多策略数据同步分发,利用设定的差异化信息判断机制和将实体状态与更新逻辑解耦,使得能够快速读取仿真模块中实体的最新状态,进而提高了实体的数据同步分发效率。

在其中一个实施例中,环状数据交互机制是通过队列实现仿真模块之间的环状数据交互,包括:环状数据交互机制通过将仿真模块中的元数据设计为数据包的队列结构进行环状存储,将数据存储与数据结构定义分离,实现仿真模块之间的环状数据交互;元数据为仿真中需要交互的数据结构;环状存储指将数据包的写入区与读取区首尾相连。

将仿真模块中的数据设计为数据包的队列结构进行环状存储,将数据包的写入区与读取区首尾相连,将数据存储与数据结构定义分离,数据存储为无结构的二进制数据,数据结构定义可以在交互设计时灵活定义,在交互运行时,由序列化/反序列化机制将结构化的数据转换为无结构的二进制数据,实现元数据的灵活、动态注入,从而在仿真应用时可以动态构建需要交互的数据结构,本实施例支持多种序列化、反序列化协议,比如Protobuffer、Json、Xml、MessagePack等,并且具备良好的可扩展性和可适配性。通过本申请的数据结构设计,支持仿真实体数大于50000个,超越同类数据分发服务数量指标,更加适用于大规模的复杂大系统仿真。

如图2所示,分布式黑板之间采取点对点互联的无中心架构。由于共享内存开辟空间的大小限制,传统的线性设计为堆栈式,不断积累存储数据,并不断消费,共享内存容易占满出现溢出的情况,本申请将实体状态区、实体缓存区与消息发布区采取环状结构设计,将写入区与读取区首尾相连,不断覆盖已经消费的数据,只要写入数据的速度大于消费速度,就不会存在溢出的情况,从而最大效率利用共享内存。随着实体状态、实体缓存与消息的不断写入与消费,实现环状数据更新,从而最大程度利用有限的共享内存资源,提升了数据的吞吐率,提升了单次发送的数据大小提升。

在其中一个实施例中,数据路由并行检索机制是通过在仿真模块之间设置发布/订阅机制,实现仿真模块之间数据路由的并行检索,包括:数据路由并行检索机制将仿真模块中实体数据交互关系以发布/订阅的方式进行配置和描述,得到多张数据路由表;对数据路由表采用并行检索的方式,实现仿真模块之间数据路由的并行检索;并行检索为多节点、多线程和多进程的三级并行检索。

本实施例中,如图3所示,将所有实体的数据交互关系以发布/订阅的方式进行下发配置,形成多张数据路由表,将与仿真节点对应的数据路由表下发给相应的计算节点。在仿真运行时,基于分布式黑板机制,由于分布式系统中的每个节点仅需要维护本节点内模型路由,且在节点之间并发查询,减少数据路由的检索时间,本申请能够采取多节点、多线程、多进程的三级并行检索模式进行并行检索,能够充分利用多核CPU的计算能力,提升了仿真模块之间数据路由的并行检索效率,性能比串行检索模式提升45%,同时能够提高仿真模块之间数据读取的效率,进而提高数据分发效率。

在其中一个实施例中,多策略数据同步分发机制是通过API发布数据交互接口进行仿真模块之间的数据同步分发,包括:多策略数据同步分发机制通过基于互斥锁的同步机制、触发式的事件机制对本地黑板机制的写入读取策略进行扩展,得到多种数据分发策略;数据分发策略包括主动推送、主动拉取和RPC服务;数据分发策略通过API发布数据交互接口调用callservice函数,实现仿真模块之间的数据同步分发。

通过API发布数据交互接口进行仿真模块之间的数据同步分发,包括:多策略数据同步分发机制通过基于互斥锁的同步机制、触发式的事件机制对本地黑板机制的写入读取策略进行扩展,使得扩展后的数据分发策略更加满足多样化的数据分发需求场景,目前支持的分发策略包括主动推送、主动拉取和RPC服务,其中,主动推送即消息模式,由消息发布者发布消息,消息订阅者接收消息并触发内部函数进行消息响应,消息读区和消息写区共用一块黑板,主动推送的数据均为即时数据,即本拍数据。主动拉取是传统的黑板读取模式,通过主题名称、数据名称、数据ID等多种仿真平台,从数据黑板中获取数据包。由于黑板分为读区和写区两块区域,主动拉取的数据均为上一拍数据。RPC服务:Remote ProcedureCallback,即远程仿真平台服务,适用于服务化的仿真数据交互,模型服务为无状态服务,服务申请者申请服务,传入服务输入数据,同步等待模型服务的输出数据返回,是一种即时、中断式的数据交互。

在其中一个实施例中,数据分发策略通过API发布数据交互接口调用CallService函数,实现仿真模块之间的数据同步分发,包括:数据分发策略通过API发布数据交互接口调用CallService函数,将需要分发的数据写入仿真模块的共享内存中,调用方进行等待,写入完成后,通过仿真模块的单机总控从共享内存中读取分发数据并分发给另一仿真模块的单机总控,然后将分发数据写入该仿真模块的共享内存中,这个过程中发送方等待读取回复,当分发数据读取后,发送读取回复,调用方接收读取回复后,完成CallService函数调用,调用方继续运行,实现仿真模块之间的分布式数据同步分发。

同时,本申请通过数据头标识实现,将需要持久化的实体数据头存储有持久/临时的枚举字段和数据长度,当写入到改数据区域时,读取数据长度,写入指针直接跨到该数据区域尾部,避免写入覆盖,能够实现实体状态持久化保存。

在其中一个实施例中,差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态差异信息,更新实体缓存区,包括:差异化数据更新机制是仿真模块接收到仿真实体的实体状态时,通过与仿真模块中存储的实体状态进行对比,若一致则直接从实体缓存区获取实体状态,若不一致则根据接收到仿真实体的实体状态,更新实体缓存区。

实体缓存区存储本仿真模块内部的实体状态,维护本仿真模块内部实体的状态更新以及缓存其他仿真模块的实体状态,包括数据黑板与操作缓存两部分,

当本仿真模块的实体通过GET仿真平台获取其他仿真模块的实体状态时,首先检查数据更新表,需求数据是否得到最新更新,而后检查是否缓存了其他仿真模块的实体的最新状态,若有则直接从实体缓存区获取。若没有或者实体缓存区的实体状态已经过期,则重新从该实体所在的仿真模块获取实体状态的最新状态,通过差异化信息判断机制,仿真模块不用对所有实体的状态进行更新,减少实体状态的更新次数,缩短实体的状态数据更新时间,使得仿真模块能够快速进行数据分发,提高了数据分发效率。同时,采取差异化数据更新机制,结合无中心交互架构,大大减轻了网络的数据流量和传递层级,为仿真快速高效的运行提供了可靠支撑,支持的最小步长不大于1毫秒,具备支持实时、超实时仿真的能力。

在其中一个实施例中,实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,实现实体状态与更新逻辑解耦,包括:实体状态-更新逻辑分离机制是无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,以及无状态服务实例之间进行消息关联,通过无状态服务实例读取实体状态,实体之间通过无状态服务实例进行信息交互,实现实体状态的更新,同时,实现实体状态的读取和实体状态的更新之间的解耦。

仿真模块中的实体的状态属性与时间高度相关,且随着仿真时间的推进而不断被读取与更新,如图4所示,本申请通过构建无状态的模型服务与基于共享内存的状态池,将无状态服务实例与实体状态组成的实体状态空间之间进行状态关联,无状态服务实例之间进行消息关联,实体与实体之间的消息交互通过无状态服务实例来传递,并且各个服务实例与实体状态空间通过状态端口进行关联,采用基于共享内存的交互方式,可获得与本进程内存同样的高速访问,利用双缓存区,实现的状态读取和实体状态写入更新解耦,仿真模块能够直接获取当前实体的状态,不用等待实体更新后获取实体状态,从而通过快速读取实体状态来提高各个实体之间进行数据交互的数据分发效率。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号