基于中间件的抗辐射加固仿真云平台技术研究*
2020-07-22党佳乐刘刚刘锦辉
王 淳, 党佳乐,万 波,刘刚,刘锦辉
0 引 言
伴随着我国航空航天和微电子技术的迅猛发展,对航天类设备及飞行器器件和系统的跨学科协同仿真技术提出了更高的标准和要求,亟需在器件和设备的设计阶段就对其在外太空复杂环境中可能产生的问题进行预测与修正,以此来降低未知的风险并避免资源的浪费.因此,抗辐射加固仿真技术无论是对航空航天人员的生命安全还是航空航天设备的资源优化都有着非同一般的意义.
随着计算机技术、信息技术、云计算等相关技术的发展与进步,仿真应用的范围得到了极大的扩展,从单机、单系统到多机、多系统、异地同步仿真、云仿真,仿真的能力与规模正逐渐加大,仿真所研究的对象日趋复杂,仿真资源也趋于异构化,除了传统的计算机资源,DSP、FPGA等半实物资源也逐渐被引入到仿真系统中,使得建模与仿真技术面临着更高的挑战.尤其是在军事等复杂系统仿真领域,新军事变革的快速发展对仿真系统的实时性与互操作性也提出了更高的要求.
具体来说,近年来各类仿真系统和应用在求解的准确度、仿真的实时性、操作的交互性上的需求上越来越高,单机仿真的特性和缺陷导致其无法满足这些需求,用户需要效率更高、组合更灵活、重用更方便的仿真服务.为了解决此类问题,美国军方先后提出分布仿真技术(DIS)和高层体系架构(HLA)[1-3]以满足分布式仿真的标准.后来,高性能计算机通讯技术RIT逐渐成为HLA框架的核心[4].这些标准虽然使得分布式仿真中互操作性和重用性问题得到解决,但是由于军方系统的方案过于复杂和庞大,实施代价过于昂贵,不适用于一般用户.并且,随着各类新技术的发展,这种架构及其理念已经显得过于陈旧和臃肿,在应用过程中也逐渐暴露出一些问题,如效率、易用性、容错性、动态兼容性等[5].
由于各种仿真对仿真灵活性以及仿真效率的需求逐渐加大,分布式计算、软件中间件、基于组件的软件工程等技术为新需求逐渐提供了解决方案[6].面向服务体系结构(SOA)[7]的思想便是这方面技术智慧的体现.SOA作为一套用来构建复杂分布式系统的理论系统,可以此来构建互操作性强,耦合度低,可重用性高的大型系统.在这样的背景下,“微服务”的概念应运而生.可以说,微服务是SOA去掉ESB(Enterprise Service Bus)的情况下更细粒度的实现,通常使用HTTP、RESTFUL或者相关消息中间件进行通信.
另外,云计算作为一种利用互联网实现随时随地、按需、便捷地访问共享资源池的计算模式[8],其采用资源虚拟化的方式,提供动态易扩展的服务体系,为用户屏蔽了物理资源管理、应用软件部署、数据中心管理、大规模数据处理等问题[9].同时,其通用性好、易扩展和部署统一的特点[10]使其在仿真领域得到越来越多的应用.例如,平行云的“云雀”轻量级多用户仿真平台、AnyLogic云的仿真模型Web平台、华为云的云仿真解决方案等.除此以外,随着微服务理念与云计算技术相结合,形成了的概念,使得仿真性能有了更加显著的提升,成为近年来仿真技术的热门.云仿真平台能够利用网络和云仿真平台按需组织各种仿真资源,以提供用户各种建模与仿真服务[11].
目前,容器技术(docker)作为一种更轻量级的虚拟化技术,能够有效的将单个操作系统管理的资源利用namespace技术划分到不同的命名空间中,并采用cgroup技术限制单个docker的资源使用情况,以便更好地在多个命名空间之间平衡资源的使用需求.针对应用部署,使用docker技术可以带来系统资源利用率高、应用启动速度快、维护方便、任务迁移跨平台等优势.
但是,抗辐照加固设计作为一项多学科、跨领域的复杂系统工程,单一的仿真工具无法满足其仿真需求,需要多种不同工具的相互配合来完成.目前的云仿真方式只解决了用户终端资源匮乏、工作时间地点受限、成本高等问题,而没有解决另外一些问题,如工作流中各个环节孤立、存在信息孤岛、用户需要在不同工具中频繁切换、交叉学科不能无缝交互、仿真灵活性缺乏等.同时,为了实现仿真流程的定制化和仿真软件的可重用度,云仿真技术的发展也给仿真中间件的设计带来了新的挑战.因此,我们提出了一种基于可组合可重用中间件的抗辐照加固仿真云平台的方案,实现了复杂仿真流程的定制化,解决了不同领域多种仿真软件的自动化桥接,提高了仿真软件的利用率,优化了云平台软件部署的功耗问题.
1 抗辐射加固云计算平台架构设计
对于任务的仿真过程,传统云仿真环境一直采用单个虚拟机部署单种仿真软件的方式来进行.但是这种方式存在一定的不足之处,就仿真任务而言,如果任务流程需要的仿真软件种类较多,但仿真实际的计算量不大时,申请多台虚拟机进行仿真可能会导致仿真总耗时的急剧增高和平台能耗的急剧浪费.因此,我们基于传统云平台提出基于docker的仿真软件部署方案[12].
以Openstack为例,当前使用OpenStack创建并管理docker,有3种流行的使用方法,使用的分别是Nova Docker驱动,Heat Docker插件,以及Magnum,前两种方法较为成熟,而后一种还在开发当中.但是,对于目前的仿真任务而言,其仿真软件需要运行在Windows和Linux操作系统上.如果只是单纯的将docker运行在宿主机上同Openstack进行整合,将无法满足仿真软件所需要的windows操作系统环境,原因在于部署Openstack的物理机均采用的是linux操作系统.为了兼容仿真软件对底层操作系统的要求,同时为了解决能耗增高和浪费的问题,我们提出采用虚拟机+docker的方式进行仿真软件的部署和管理.在虚拟机中,同之前一样,用来打包和部署windows和linux的镜像,提供仿真软件需要的操作系统环境,而对于上层的仿真软件,如果需要的是Linux操作系统,则利用dockerfile将其打包成docker镜像,部署在虚拟机内部,并且在虚拟机内部实现docker的复杂调用逻辑,从而降低虚拟机内部软件管理的复杂度.具体的架构如图1所示.
图1 抗辐照仿真云平台基础架构Fig.1 Infrastructure of the anti-radiation simulation cloud platform
该架构的设计主要分为三层:基础设施服务层IaaS、平台服务层PaaS和软件服务层SaaS.
在基础设施服务层中,同传统云计算平台的结构基本一致,主要提供硬件资源的虚拟机化服务,如存储虚拟机化、网络虚拟机化等,同时,为了方便底层资源的管理,提供了虚拟化资源的基础服务,如高性能计算服务、数据存储、备份及资源管理,为云平台的稳定性和可靠性奠定基础.
在平台服务层中,一方面,基于B/S架构,向复杂用户群体提供统一的访问接口,使用户可以通过Web实现仿真过程的自动化管理,及相关用户数据和仿真数据的持久化管理,另外一方面,针对复杂的系统抗辐射加固仿真过程,系统提供了可组合可重用的仿真中间件,使得用户可以通过Web可视化实现仿真流程的自定义,进而实现不同场景下不同需求的仿真过程,避免了传统仿真流程固定、仿真软件调用次序不可变的短板.
在软件服务层,由于仿真软件对底层操作系统的要求不同,平台针对不同的操作系统实现不同的软件部署策略.对于Windows操作系统的虚拟机,其无法使用docker完成仿真软件的自动化部署,所以还是采用传统单镜像单仿真软件的方式进行镜像打包.而对于Linux操作系统的虚拟机,可以根据用户需求实时从docker中拉取镜像来完成多个仿真软件的部署,避免了传统仿真云平台上镜像体积庞大带来的存储浪费和仿真时需要开启多个虚拟机的功耗浪费.另外,在该层中包括了两种中间件,分别为消息中间件和仿真中间件.其中,消息中间件主要实现不同仿真软件间数据的控制和转换,使得不同仿真软件不同格式的数据实现自动化对接.而对于仿真中间件,其主要采用微服务的方式部署在不同的虚拟机中,可以实现抗辐照加固仿真服务的可重用可组合,来完成不同仿真任务的调度和数据转换,达到仿真服务自动化协同与任务同步的目的,为用户实现自定义的仿真流程起到关键作用.
对于仿真用户而言,其使用的仿真模式如图2所示,用户可以在web端实现仿真流程的定制化和数据的可视化管理,同时,云平台通过消息中间件实现不同仿真节点的数据交互.另外,对于仿真任务而言,云平台可以采用可重用可组合的仿真中间件,在不同的计算节点实现定制化仿真流程的调度和执行.
对于基于云架构的抗辐照加固仿真平台,其具备了云平台的特点,如计算能力强,可扩展性强,稳定性高,安全性有保证等等.另外,对于仿真系统而言,其还具备了以下优势:
1)统一的资源管理、用户管理、软件管理、数据管理、版本管理接口;
2)提供具备设计软件和仿真软件的虚拟机服务,减少软件部署工作量,提供资源共享效率,并通过docker的服务部署方式,进一步降低部署复杂度;
3)提供可定制化的仿真服务,用户可通过图形化的微服务组合,构成定制化的复杂仿真流程;
4)提供仿真服务扩展接口,用户只需通过微服务中间件发布服务接口即可将新的仿真服务加入到仿真平台.
图2 云仿真模式Fig.2 Cloud simulation mode
2 面向服务的抗辐射加固仿真中间件设计
在仿真技术不断发展和进步的现状下,在仿真领域对仿真中间件的需求主要体现在两个方面:一个是仿真中间件的在性能上的需求,具体体现在仿真中间件的设计需要满足模型的可重用性及仿真流程下的可组合性,这样设计出来的中间件会具有易用性强,可扩展性好,低耦合等诸多优点.另一方面,就是仿真中间件在功能上的需求,一个优秀的仿真中间件必然要很好地实现其本身所应该实现的功能,这一点也是中间件的根本和基础.为了规范仿真中间件的设计,本节提出了一种粒度适中的仿真中间件模型,并依照此模型针对抗辐射加固环境下对三维模型的前端显示与自动化仿真的脚本转换两大需求进行中间件的设计.
2.1 通用中间件模型的设计
为规范抗辐射加固环境下仿真中间件的设计标准,本节基于仿真中间件的功能对中间件的结构进行清晰的划分,从而设计出通用的仿真中间件模型.对其的定义如下:
1)对仿真中层次与结构具有共性的中间件做出的通用性规范.
2)根据其定义的结构和规范,仿真中间件可以完整实现其功能,运行其工作流程.
3)该结构规范可以支持中间件的交互.
通用仿真中间件模型架构如图3所示,每一层的具体功能划分如下:
1)输入层:负责该仿真中间件的输入,主要负责仿真中间件正常运行所必需的命令、脚本、参数、模型等各类输入.
2)运算处理层:主要负责对用户输入的文本、模型、参数等进行调度和加工处理,如复制、替换、改写、组合以及更多更加复杂的操作.
3)数据调度层:一些额外的数据.这些数据被用来帮助运算处理层处理用户的输入,主要以类似于字典、模板、小程序、脚本等一些相对固定的数据形式出现.
4)输出层:一种是作为给用户的最终结果或者效果展示,另一种则是作为下一步或者下一个仿真中间件的输入,继续推动下一步的仿真流程,有些中间件会同时出现两种形式共存的情况.
抗辐射加固环境下的仿真中间件通用模型的设计为接下来仿真中间件的设计提供了标准与规范,由于该模型具有可组合的特性,因此根据该模型设计的仿真中间件可以互相组合从而设计成不同的工作流,为之后中间件的可组合性与可重用性验证提供了基础.
图3 通用仿真中间件架构模型Fig.3 General simulation middleware architecture model
2.2 典型抗辐射加固仿真场景下的中间件设计
目前在抗辐射加固的设计中普遍使用的建模软件和仿真软件包括AutoCAD,OrCAD,ProE,MCNP,Ansys,SystemVision 等,一个完整的设计-仿真过程需要使用不同学科的多个软件协同完成.下面根据抗辐射加固仿真中的两种典型场景,在通用模型的基础上对两种中间件进行设计.
2.2.1 模型显示中间件
抗辐射加固仿真之前往往需要通过观察对模型有一个直观而全面的认知.通过现有的仿真建模软件导入模型文件虽然可以很容易地做到显示和观察的功能,但是无法与整个自动化仿真流程衔接在一起,需要在web前端显示模型文件的三维外观.综上所述,我们需要设计实现的模型显示中间件需要具备如下功能:
(1)对igs格式的实体模型文件进行WEB前端的三维显示,这一步又分为模型文件的转换和转换后文件的显示两个步骤.
(2)需要建立相关的三维场景如三维坐标系、坐标轴、坐标方向和名称等.
(3)需要根据用户给定的三维坐标和向量绘制出粒子源的位置和粒子辐射的方向.
根据通用中间件模型,本节设计的模型显示中间件的层次架构如图4所示.
图4 模型显示中间件架构Fig.4 model display middleware architecture
(1)输入层
模型显示中间件的输入层相对来说比较简单,主要是指igs格式模型的输入.一般来说输入层是这四层模型架构中最简单的一层,只需要符合该中间件的输入要求和格式即可.
(2)运算处理层
模型显示中间件的运算处理层主要负责对数据调度层的调用,即调用数据调度层的模型格式转换脚本进行文件格式转换工作;另外运算处理层还负责数据的跨层次传递,如模型的传递、参数的传递等;最后运算处理层负责对输出层中用户交互产生的数据进行接收.运算处理层确保在模型显示中间件中数据调度和传递的准确性和正确性,起着总控与中枢的作用.
(3)数据调度层
FreeCAD是由法国 Matra Datavision 公司基于Open CASCADE开发的开源 CAD/CAE工具,可运行于Windows、Linux 系统环境下[13].模型显示中间件的数据调度层是一个实现FreeCAD接口的Python脚本程序,它负责将igs格式的三维模型文件转换为前端可以显示的obj格式的模型文件.运算处理层可以通过调用数据调度的脚本程序,将用户输入的igs格式的三维模型文件转换成前端可显示的obj模型文件格式,然后交给运算处理层继续二次加工.在这里数据调度层以Python脚本程序的形式出现,以相对固定的数据形式或模板来供运算处理层调用,符合模型的定义标准.
(4)输出层
输出层是模型显示中间件核心功能所在的一层,不仅负责模型显示效果的展示,还负责与接下来仿真环节的对接与输出.主要包含如下三点功能:obj模型文件的三维显示、三维坐标环境的搭建及粒子源和辐射向量的绘制.
2.2.2 脚本转换中间件的设计
用户在不同条件下给出的物理三维仿真模型和仿真时不同的参数数值如何与对应仿真软件的相应仿真脚本进行结合,从而为用户提供需求条件下仿真软件的自动仿真化仿真脚本,是自动化仿真中不可避免的问题.因此脚本转换中间件便而应运而生.在许多仿真任务中,脚本转换中间件的作用都是类似的,接下来本文以抗辐射加固背景下的ANSYS软件为例,来设计脚本转换中间件.
通过上述对ANSYS与APDL的了解,脚本转换中间件的设计思路也即分为如下几步:
(1)设计对应仿真的模板APDL文件.利用Ansys Mechanical的日志特性,设计出所需进行仿真的一般流程下的模板文件.
(2)分别在对应模块的不同相关部分,将模板参数替换为本次仿真所需要的具体参数.
(3)在此基础上,添加其他所需的后处理操作至最终的APDL文件中,如新建文件夹进行结果归类,设置仿真结果类型及其输出方式等.
综上,根据第三章的脚本转换类中间件模型,设计出如下的脚本转换中间件架构,如图5所示.
图5 脚本转换中间件架构Fig.5 Script conversion middleware architecture
(1)输入层:输入层的设计比较简单.脚本转换中间件的输入层主要为用户所提供的三维仿真模型文件及其针对该模型仿真所需要的各类参数如泊松系数、弹性模量、模型厚度和集中里的大小等.本层相对来说构造功能比较简单,但是也是不可或缺的一部分.
(2)运算处理层:运算处理层分为三大功能.1、将模型与参数从输入层调入至数据调度层.2、将数据调度层的APDL结果脚本输出至输出层.3、调用数据调度层的功能.运算处理层在脚本转换中间件中起着统筹规划和调度全文的作用,是脚本转换功能顺利高效运行的关键.
(3)数据调度层:脚本转换中间件的数据调度层即以lgw为后缀的APDL脚本文件模板及其相关参数嵌入程序.运算处理层通过将用户参数嵌入到APDL仿真模板中来生成本次仿真的自动化APDL脚本文件.脚本转换中间件的数据调度层相当于资料库或者字典.作为一个比较固定的数据形式,数据调度层为整个中间件提供了脚本转换所必需的数据支持,也是不可或缺的.
(4)输出层:脚本转换中间件的输出层是运算处理层在数据调度层的协同下进行加工嵌入后生成了新的lgw格式的APDL仿真脚本.该脚本可以作为Ansys Mechanical自动化仿真的输入,从而得到本次仿真需要的结果.与模型显示中间件的输出层不同的是,脚本转换中间件的输出是用来当做仿真的下一环节或者相关的仿真中间件的输入的,是一个中间结果.脚本转换中间件的输出层至关重要,它决定在下一步仿真的正确性与容错性,只有输出层顺利正确地输出结果,后面的仿真进程才可以安全无误的进行下去.
3 基于Petri网的典型仿真工作流设计
起初,由于在自动机领域在物理学上对并发场景和事件描述的欠缺与空白,物理学家Carl Adam Petri提出Petri这一概念来解决物理上对并发的表达问题,后来在各个领域被逐渐广泛认同与应用.而Petri网最早是lesch,klaus于1996年率先提出的[14].可以说,它是流程定义语言的先祖.由于Petri网技术在并发场景领域表现优越以及对工作流各个情境下的表达能力强大,本文在此采用Petri网这一数学表示方法设计了抗辐射环境下两种典型的仿真场景.其中P符号代表的是库所,T符号代表的是变迁.具体来说,P类型元素代表仿真过程中系统处于的各种状态,T类型元素代表各类仿真中间件及其功能的运行.在此基础上,利用Petri网对仿真工作流进行设计,从而验证模型显示类中间件和脚本转换类中间件的可重用性及可组合性.
3.1 MCNP蒙卡分析的一般仿真流程
MCNP蒙卡分析的一般仿真流程具体步骤如下:
1.输入三维仿真模型文件(.igs).
2.对输入的模型文件进行前端显示处理,以便用户对所输入的模型有一个直观而准确的认识.如果显示的模型观察到有几何错误则转入对应的错误处理程序,进行反馈.
3.用户在模型显示界面输入辐射粒子源的坐标和辐射向量的位置.
4.在接下来的界面中输入仿真剩余所需要的参数.给不同栅元赋予材料,密度,重要性.再设置如关注点计数类型,根据计数类型(F1、F2、F5,也就是通过一个面的总计数,面通量、点通量)来筛选可选择项目(面,点.体栅元等).然后再设置如FM卡,剂量计算,是否要进行能谱分群等以及其他的一些设置,如截止能量,NPS等.
5.根据4中参数生成用于自动化仿真的inp脚本文件,调用进程进行自动化仿真.
6.输出后处理.输出后处理包括分析蒙卡检验数据和查找关注点计数输出两部分.一是分析蒙卡检验数据查找输出文件中蒙卡检验的数据,对蒙卡模拟中生成的随机数分布是否满足要求进行判断,确定各计数的计算输出数据是否有效.二是关注点计数输出,根据输出文件前部的输入文件内容,查找F1、F2、F4等计数关注点,在输出文件中查找对应数据,输出到中间件供辐射效应仿真使用.
以上为MCNP蒙特卡洛分析的一般仿真流程,具体流程如下图:
图6 MCNP蒙特卡洛分析的一般仿真流程Fig.6 General simulation process of MCNP Monte Carlo analysis
图7 MCNP蒙特卡洛分析petri网工作流Fig.7 MCNP Monte Carlo analysis petri net workflow
然而,在面向各种具体中间件进行Petri网建模的时候,会与上述流程略有不同.下面根据MCNP蒙特卡洛分析软件的一般仿真流程,设计出如下所示的Petri网工作流模型:
表1 MCNP仿真任务的元素-任务对应表Tab.1 Elements-task correspondence table of MCNP simulation tasks
3.2 ANSYS静力学仿真的一般仿真流程
具体步骤如下:
1.输入igs三维仿真模型文件.
2.对输入模型进行显示查看.
3.输入仿真所需要的参数:包括模型的泊松系数、弹性模量、作用力的大小,材料厚度等.
4.利用脚本转换中间件将用户的输入参数与模型转换为ANSYS的接口脚本,即APDL语言仿真脚本.APDL脚本以预处理、求解和后处理三个模块对仿真内容做了如下的几步的定义:①导入模型.②相关参数的设置.③网格划分.④施加载荷.⑤求解.⑥结果生成.
5.调用自动化仿真程序,启用新的进程调用ANSYS仿真软件进行仿真,同时将上一步的APDL脚本作为输入内容.
6.自动仿真运行完毕之后,会输出如下的仿真结果:物体受到作用力后的形变侧面变化图、物体受到作用力后的形变正面变化图、本次仿真的APDL脚本、官方的out输出文件以及可以被解析为形变动画、参数表格、分析图片的JavaScript文件.
以上为ANSYS静力学仿真的一般仿真流程,具体如图所示:
图8 ANSYS静力学分析一般仿真流程Fig.8 General simulation process of ANSYS static analysis
接下来需要面向各种具体中间件对这一流程进行Petri网建模,会与上述流程略有不同.下面根据ANSYS静力学仿真的一般仿真流程,设计出如下所示的Petri网工作流模型:
图9 ANSYS静力学分析petri网工作流Fig.9 ANSYS static analysis workflow of petri net
表2 ANSYS仿真任务的元素-任务对应表Tab.2 Element-task correspondence table of ANSYS simulation tasks
3.3 抗辐射仿真中间件的可重用性与可组合性
为了验证设计的仿真中间件的可组合性和可重用性,上一章对Petri网建模技术的概念及其经典路由结构进行了介绍,并且分别对MCNP蒙卡分析的仿真流程ANSYS静力学仿真流程进行了流程设计.在此基础上,利用Petri网的数学表示方法,以仿真中间件为核心关键元素,对以上两个工作流进行了Petri网建模.可以看到,模型显示类中间件和脚本转换类中间件都是可以被组合成为完整仿真工作流程的一部分的,尤其是在基于仿真中间件的Petri网建模方式下,这种特性更加明显.综上,本文所设计的两种仿真中间件的可组合性得到了理论上的验证.另外,由于两类中间件可以分别在不同的仿真流程中出现,因此这两类仿真中间件也具有可重用的特性,即验证了本文设计的仿真中间件的可重用性.
4 结 论
本文提出的云仿真平台利用docker实现仿真软件镜像的动态加载,并且通过可重用可组合的中间件实现了仿真的细粒度化,降低了软件设计的耦合性,提高了软件的可重用性和仿真平台的可扩展性.另外,该平台支持多用户下的协同仿真,特别是支持多用户通过网络随时随地按需获得各类建模仿真服务等方面的能力,建立了一种面向服务的定制化仿真模式.