CN117130758B - 仿真引擎的启停控制方法、装置及仿真系统 - Google Patents
仿真引擎的启停控制方法、装置及仿真系统 Download PDFInfo
- Publication number
- CN117130758B CN117130758B CN202311370400.7A CN202311370400A CN117130758B CN 117130758 B CN117130758 B CN 117130758B CN 202311370400 A CN202311370400 A CN 202311370400A CN 117130758 B CN117130758 B CN 117130758B
- Authority
- CN
- China
- Prior art keywords
- target
- engine
- simulation
- request
- equipment
- 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 411
- 238000000034 method Methods 0.000 title claims abstract description 165
- 230000008569 process Effects 0.000 claims abstract description 106
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 210000004899 c-terminal region Anatomy 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Testing And Monitoring For Control Systems (AREA)
Abstract
本申请公开了一种仿真引擎的启停控制方法、装置及仿真系统,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,第一设备按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
Description
技术领域
本申请涉及仿真技术领域,尤其涉及一种仿真引擎的启停控制方法、装置及仿真系统。
背景技术
建模工具在完成仿真模型的创作后,需要调用一个或多个仿真引擎来运行仿真模型,以验证仿真模型的运行状态或结果。例如,在局域网内开启一台电脑安装建模工具以实现仿真模型的创作,再通过其他电脑运行仿真引擎以模拟或验证仿真模型。
但是这种方案中,每次需要使用仿真引擎的时候,都需要用户手动核对仿真引擎的使用情况并按照各仿真引擎的使用情况针对仿真引擎的使用请求输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口。
可见,这种方案会导致为仿真模型分配仿真引擎的效率较低。
发明内容
有鉴于此,本申请提供一种仿真引擎的启停控制方法、装置及仿真系统,用以解决现有技术中为仿真模型分配仿真引擎的效率较低的技术问题,如下:
一种仿真引擎的启停控制方法,应用于第一设备,所述第一设备中至少配置有第一集合,所述方法包括:
获得第二设备的仿真请求,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量,以使得所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,以使得所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
上述方法,优选的,所述方法还包括:
接收所述第二设备发送的结束请求,所述结束请求表征所述仿真任务执行完成,所述结束请求至少包括:所述目标设备的设备地址、所述目标引擎在所述目标设备中的进程标识;
根据所述结束请求中所述目标设备的设备地址,向所述目标设备发送关闭请求,以使得所述目标设备按照所述目标引擎在所述目标设备中的进程标识关闭所述目标引擎;
更新所述第一集合中所述目标设备上配置的处于可用状态的仿真引擎的当前数量。
上述方法,优选的,在根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备之后,所述方法还包括:
判断所述目标引擎的数量是否达到所述目标数量;
如果所述目标引擎的数量没有达到所述目标数量,返回执行所述:在所述第一集合中,获得目标设备的设备地址,直到所述目标引擎的数量达到所述目标数量。
上述方法,优选的,所述方法还包括:
监测与每个所述第三设备之间的数据连接的连接状态;
在所述连接状态满足第一更新条件的情况下,更新所述第一集合中所述第三设备上配置的处于可用状态的仿真引擎的当前数量。
一种仿真引擎的启停控制方法,应用于多个第三设备中的目标设备,所述方法包括:
接收第一设备发送的索取请求,所述索取请求在所述第一设备接收到第二设备的仿真请求后根据在所述第一集合中获得的目标设备的设备地址构建得到;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;所述第一集合中包括所述多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址,以使得所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
一种仿真引擎的启停控制方法,应用于第二设备,所述方法包括:
发送仿真请求给第一设备,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量,以使得所述第一设备在第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;所述第一设备还根据所述目标设备的设备地址,向所述目标设备发送索取请求,以使得所述目标设备按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
其中,所述第一设备还接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
接收所述第一设备根据所述目标引擎对应的引擎信息发送的启动请求;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
一种仿真引擎的启停控制装置,配置在第一设备上,所述第一设备中至少配置有第一集合,所述装置包括:
请求获得单元,用于获得第二设备的仿真请求,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
地址获得单元,用于在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
索取发送单元,用于根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量,以使得所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
信息接收单元,用于接收所述目标设备发送的所述目标引擎对应的引擎信息,所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、启动时间、端口号、所述目标设备的设备地址;
启动发送单元,用于根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,以使得所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
集合更新单元,用于根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
一种仿真引擎的启停控制装置,配置在多个第三设备中的目标设备,所述装置包括:
请求接收单元,用于接收第一设备发送的索取请求,所述索取请求在所述第一设备接收到第二设备的仿真请求后根据在所述第一集合中获得的目标设备的设备地址构建得到;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;所述第一集合中包括所述多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
引擎启动单元,用于按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
信息发送单元,用于向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址,以使得所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
一种仿真引擎的启停控制装置,配置在第二设备上,所述装置包括:
请求发送单元,用于发送仿真请求给第一设备,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量,以使得所述第一设备在第一集合中获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;所述第一设备还根据所述目标设备的设备地址,向所述目标设备发送索取请求,以使得所述目标设备按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
其中,所述第一设备还接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
请求接收单元,用于接收所述第一设备根据所述目标引擎对应的引擎信息发送的启动请求;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
连接建立单元,用于至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
一种仿真系统,所述仿真系统包括:
第一设备、至少一个第二设备和多个第三设备,每个所述第三设备上配置有至少一个仿真引擎,所述第一设备上至少配置有第一集合;
其中:
所述第二设备发送仿真请求给所述第一设备;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
所述第一设备在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
所述第一设备根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量;
所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
所述目标设备向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
所述第一设备根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
从上述技术方案可以看出,本申请公开的一种仿真引擎的启停控制方法、装置及仿真系统中,在第一设备中配置第一集合,在第一集合中保存配置有仿真引擎的第三设备的设备地址和第三设备上配置的处于可用状态的仿真引擎的当前数量,这样,在第一设备上接收到第二设备的仿真请求之后,在第一集合中获得当前数量大于或等于1的目标设备的设备地址,然后根据目标设备的设备地址向目标设备发送索取请求,以使得目标设备按照索取请求中的目标数量启动至少一个处于可用状态的目标引擎,这样第一设备在接收到目标设备发送的目标引擎对应的引擎信息之后,就可以根据目标引擎对应的引擎信息发送启动请求给第二设备,这样第二设备根据启动请求中目标引擎对应的进程标识和端口号以及设备地址建立与目标引擎之间的数据连接,以使得目标引擎能够执行第二设备的仿真任务,之后第一设备根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量,以便于后续使用。可见,本申请在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种仿真引擎的启停控制方法的流程图;
图2为本申请实施例一中仿真系统的架构示意图;
图3及图4分别为本申请实施例一提供的一种仿真引擎的启停控制方法的另一流程图;
图5为本申请实施例一提供的一种仿真引擎的启停控制方法中进行异常监测的流程图;
图6为本申请实施例二提供的一种仿真引擎的启停控制方法的流程图;
图7为本申请实施例二提供的一种仿真引擎的启停控制方法中进行异常监测的流程图;
图8为本申请实施例三提供的一种仿真引擎的启停控制方法的流程图;
图9为本申请实施例三提供的一种仿真引擎的启停控制方法的另一流程图;
图10为本申请实施例四提供的一种仿真引擎的启停控制装置的结构示意图;
图11为本申请实施例四提供的一种仿真引擎的启停控制装置的另一结构示意图;
图12为本申请实施例五提供的一种仿真引擎的启停控制装置的结构示意图;
图13为本申请实施例六提供的一种仿真引擎的启停控制装置的结构示意图;
图14为本申请实施例十提供的一种仿真系统的系统架构图;
图15为本申请实施例十提供的一种仿真系统中第一设备1401、第二设备1402和第三设备1403之间的交互示意图;
图16为本申请适用于航天仿真场景中的仿真系统架构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1所示,为本申请实施例一提供的一种仿真引擎的启停控制方法的实现流程图,该方法可以应用于第一设备,第一设备为如图2所示的仿真系统中的中心控制设备,仿真系统中还包括至少一个第二设备和多个第三设备,其中,第一设备中可以配置有第一集合和第二集合,第二设备用于构建仿真模型并需要使用仿真引擎对仿真模型进行处理,第三设备中配置有一个或多个仿真引擎,仿真引擎处于可用状态(即关闭状态或待机状态)或处于占用状态。第一设备中可以配置有冗余设备,以保证可靠性。
其中,第一集合中包括仿真系统所包含的多个第三设备中每个第三设备的设备地址,以及每个第三设备上配置的处于可用状态的仿真引擎的当前数量。第二集合中包括:每个处于占用状态的仿真引擎对应的引擎状态,处于占用状态的仿真引擎对应的引擎状态包括:处于占用状态的仿真引擎所在的第三设备的设备地址、处于占用状态的仿真引擎在第三设备上的进程标识、启动时间和端口号等状态信息。启动时间为仿真引擎被启动的时间,端口号为仿真引擎在其所在的第三设备上使用的端口号。
基于此,本实施例中的方法可以包括以下步骤:
步骤101:获得第二设备的仿真请求,仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量。
例如,第二设备在构建仿真模型之后,按照所需要的仿真引擎的目标数量生成仿真请求,再将仿真请求通过与第一设备之间的数据连接发送给第一设备。
需要说明的是,仿真请求中还包括有认证信息如第二设备的授权码等信息,在第一设备获得第二设备的仿真请求之后,先根据仿真请求中的认证信息对第二设备进行合法性验证,如在第一设备的认证集合中查找是否包含该仿真请求中的认证信息,如果在第一设备的认证集合中包含该仿真请求中的认证信息,那么表征第二设备通过合法性验证,允许执行后续步骤,如果在第一设备的认证集合中没有查找到该仿真请求中的认证信息,那么表征第二设备没有通过合法性验证,此时不允许执行后续流程,即第一设备不再为第二设备分配仿真引擎。
步骤102:在第一集合中,获得目标设备的设备地址,目标设备为多个第三设备中当前数量大于或等于1的设备。
具体的,第一设备在第一集合中所对应的第三设备中,按照第三设备对应的当前数量,随机筛选或按照特定的顺序筛选对应的当前数量大于或等于1的第三设备,将筛选到的第一个当前数量大于或等于1的第三设备确定为目标设备。
其中,目标设备在第一集合中保存有:目标设备的设备地址、目标设备上配置的处于可用状态的仿真引擎的当前数量。
步骤103:根据目标设备的设备地址,向目标设备发送索取请求。
其中,索取请求包括仿真请求中的目标数量,以使得目标设备按照目标数量启动至少一个目标引擎。目标引擎为目标设备中处于可用状态的仿真引擎;目标引擎的数量小于或等于目标数量。例如,如果目标设备中处于可用状态的仿真引擎的数量大于或等于目标数量,那么在目标设备中启动目标数量的目标引擎;如果目标设备中处于可用状态的仿真引擎的数量小于目标数量,那么在目标设备中将所有处于可用状态的仿真引擎作为目标引擎进行启动,此时,目标引擎的数量小于目标数量。
基于此,目标设备在启动目标引擎后,将目标引擎对应的引擎信息返回给第一设备。目标引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、端口号、目标设备的设备地址,还可以包括:目标引擎在目标设备中的启动时间等信息。
具体的,仿真系统的每个第三设备均配置有自己的状态列表,状态列表中包括每个仿真引擎对应的引擎信息,仿真引擎对应的引擎信息包括:仿真引擎所在第三设备的设备地址、仿真引擎在第三设备上所使用的端口号、仿真引擎在第三设备上的启动时间、启动标识。
其中,如果仿真引擎在第三设备上已经被启动即处于占用状态,那么启动时间为仿真引擎实际被启动的时间,启动标识为仿真引擎在第三设备上的进程标识如进程id等;如果仿真引擎在第三设备上没有被启动即处于可用状态,那么启动时间为表征仿真引擎未被启动的第一标识如undefined,启动标识为表征仿真引擎未被启动的第二标识。
基于此,目标设备在接收到索取请求之后,通过状态列表查找启动标识为第二标识和/或启动时间为第一标识的仿真引擎,即目标引擎,然后启动目标引擎,之后根据目标引擎的启动时间更新状态列表中该目标引擎对应的启动时间,根据目标引擎的进程标识更新状态列表中该目标引擎对应的启动标识,再将状态列表中目标引擎对应的引擎信息发送给第一设备。
进一步的,目标设备在发送目标引擎对应的引擎信息时,可以携带目标设备的验证标识如token等信息,验证标识用于验证后续连接到目标引擎的第二设备的合法性。
步骤104:接收目标设备发送的目标引擎对应的引擎信息。
其中,目标设备在发送目标引擎对应的引擎信息时,还将目标设备中上配置的处于可用状态的仿真引擎的当前数量一起发送给第一设备,即在目标引擎对应的引擎信息中携带该当前数量。基于此,第一设备不仅能够获得目标设备中目标引擎对应的引擎信息,还能够获得目标设备中启动目标引擎后剩余的处于可用状态的仿真引擎的当前数量。
步骤105:根据目标引擎对应的引擎信息发送启动请求给所述第二设备,以使得第二设备至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务。
其中,启动请求包括:目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址。基于此,第一设备将启动请求发送给第二设备后,第二设备可以按照启动请求中的目标设备的设备地址,向启动请求中的进程标识和端口号在目标设备上对应的仿真引擎发起连接请求,以建立第二设备与目标设备上目标引擎之间的数据连接,由此通过目标引擎为第二设备执行仿真任务,如模拟运行第二设备上的仿真模型等。
需要说明的是,启动请求中还可以包含目标设备的验证标识。基于此,目标设备在接收到第二设备发送的连接请求之后,先验证连接请求中的验证标识,例如,将连接请求中验证标识与目标设备本地保存的验证标识进行比对,如果一致,第二设备与目标设备上目标引擎之间建立数据连接,如果不一致,结束当前流程,目标设备随即可以关闭目标引擎,并向第一设备发送目标引擎对应的验证异常信息,以表征第二设备连接异常,在第一设备上也不再执行后续流程。另外,第一设备按照被关闭的目标引擎,更新第一集合中目标设备对应的当前数量,在第二集合中删除目标引擎对应的引擎状态。
步骤106:根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量。
在一种实现方式中,目标设备在发送目标引擎对应的引擎信息时,在目标引擎对应的引擎信息中携带目标设备中上配置的处于可用状态的仿真引擎的当前数量。基于此,第一设备可以根据目标设备发送的当前数量更新第一集合中目标设备对应的当前数量,以便于后续使用。
在另一种实现方式中,第一设备可以根据目标引擎所在的目标设备以及目标引擎的数量,在第一集合中更新该目标设备对应的当前数量,即将第一集合中该目标设备对应的当前数量减去该目标设备上目标引擎的数量,将得到的差作为第一集合中该目标设备对应的当前数量。
进一步的,第一设备中还可以根据目标引擎对应的引擎信息,在第二集合中添加目标引擎对应的引擎状态,以使得第二集合中包括已经被第二设备占用的目标引擎对应的引擎状态,目标引擎对应的引擎状态可以包括:目标引擎所在的目标设备的设备地址、目标引擎在目标设备上的进程标识、启动时间和端口号等信息。
需要说明的是,初始状态下,第一集合和第二集合可以有不同的获取方式:
在一种方式中,第一设备可以向第三设备发送查询请求,以使得第三设备将设备地址、当前数量和处于可用状态的仿真引擎对应的引擎状态上传给第一设备,第一设备初始化第一集合和第二集合。之后,随着第二设备向第一设备请求分配仿真引擎的过程中各个仿真引擎的启停,第一设备上实时更新第一集合和第二集合。
在另一种方式中,第三设备主动向第一设备发送设备地址、当前数量和处于可用状态的仿真引擎对应的引擎状态,以使得第一设备初始化第一集合和第二集合。之后,随着第二设备向第一设备请求分配仿真引擎的过程中各个仿真引擎的启停,第一设备上实时更新第一集合和第二集合。
从上述技术方案可以看出,本申请实施例一提供的一种仿真引擎的启停控制方法中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
基于图1所示的实现方案中,在步骤106之后,在第一设备中还可以有如下处理步骤,如图3中所示:
步骤107:接收第二设备发送的结束请求。
其中,结束请求表征仿真任务执行完成。结束请求至少包括:目标设备的设备地址、目标引擎在目标设备中的进程标识。
需要说明的是,结束请求由第二设备在仿真任务被执行完成即不需要使用仿真引擎的情况下生成并发送给第一设备,以指示第一设备关闭执行该仿真任务的目标引擎。而结束请求中的设备地址和进程标识由第二设备在接收到目标引擎对应的启动请求时获得,或者,结束请求中的设备地址和进程标识由第二设备在使用目标引擎执行仿真任务时从目标引擎获得。
步骤108:根据结束请求中目标设备的设备地址,向目标设备发送关闭请求,以使得目标设备按照目标引擎在目标设备中的进程标识关闭目标引擎。
例如,第一设备按照结束请求中的设备地址向相应的目标设备发送关闭请求,以指示接收到关闭请求的目标设备按照关闭请求中的进程标识关闭相应的目标引擎。
步骤109:更新第一集合中目标设备上配置的处于可用状态的仿真引擎的当前数量。
在一种实现方式中,为了保证实时性,在第一设备向目标设备发送关闭请求之后,按照关闭请求对应的目标设备和关闭请求中的进程标识,将第一集合中与关闭请求对应的目标设备对应的当前数量增加目标引擎的数量,并在第二集合中删除关闭请求中的进程标识对应的引擎状态,即删除第二集合中目标引擎对应的引擎状态,由此第一设备及时更新第一集合和第二集合中的信息,进而提高第一集合和第二集合中的信息的更新实时性。
在另一种实现方式中,为了提高准确性,目标设备在关闭目标引擎之后向第一设备发送更新请求,更新请求包括:目标设备上配置的处于可用状态的仿真引擎的当前数量、目标设备的设备地址和目标引擎在目标设备中的进程标识。基于此,第一设备在接收到目标设备发送的更新请求之后,将第一集合中与更新请求中的设备地址对应的目标设备对应的当前数量为更新请求中的当前数量,并在第二集合中删除更新请求中的设备地址和进程标识对应的引擎状态,即删除第二集合中目标引擎对应的引擎状态,由此第一设备在接收到目标设备的更新请求之后按照更新请求更新第一集合和第二集合,进而提高第一集合和第一集合中的信息的准确性。
进一步的,第一设备在更新第一集合中目标设备上配置的处于可用状态的仿真引擎的当前数量之后,还可以向第二设备发送结束反馈信息,以表征目标引擎已经被关闭。
基于图1所示的实现方案,在步骤105根据目标引擎对应的引擎信息发送启动请求给第二设备之后,本实施例中的方法还可以包括以下步骤,如图4中所示:
步骤110:判断目标引擎的数量是否达到目标数量,如果目标引擎的数量没有达到目标数量,返回执行步骤102,以重新在第一集合中,获得新的目标设备的设备地址,直到目标引擎的数量达到目标数量,即第一设备已经为第二设备在第三设备中启动目标数量的目标引擎,此时可以结束当前流程。
例如,第一设备在接收到第二设备的仿真请求之后,仿真请求中包含目标数量:5,基于此,第一设备根据第一集合找到有处于可用状态的目标引擎的目标设备1,目标设备1中有处于可用状态的3个目标引擎,第一设备根据这3个目标引擎对应的引擎信息发送启动请求给第二设备之后,再次根据第一设备找到有处于可用状态的目标引擎的目标设备2,目标设备2中有处于可用状态的1个目标引擎,第一设备根据这1个目标引擎对应的引擎信息发送启动请求给第二设备之后,再次根据第一设备找到有处于可用状态的目标引擎的目标设备3,目标设备3中有处于可用状态的2个仿真引擎,将其中一个作为目标引擎,第一设备根据这1个目标引擎对应的引擎信息发送启动请求给第二设备,由此第一设备为第二设备在3个第三设备中启动总共5个目标引擎,这5个目标引擎为第二设备执行仿真任务,此时可以结束当前流程。而在第二设备上的仿真任务结束时,第二设备发送这5个目标引擎对应的结束请求给第一设备,第一设备按照结束请求中5个目标引擎各自对应的目标设备1、目标设备2、目标设备3的设备地址分别向目标设备1、目标设备2、目标设备3发送关闭请求,以使得目标设备1关闭3个目标引擎,目标设备2关闭1个目标引擎,目标设备3关闭1个目标引擎。
另外,在以上过程中,在每次启动或关闭目标引擎时,第一设备都更新第一集合中目标设备1、目标设备2和目标设备3各自对应的当前数量,还添加或删除第二集合中这5个目标引擎各自对应的引擎状态。
在具体实现中,第二设备上的仿真任务要求特定操作系统的仿真引擎,第二设备所发送的仿真请求中还包括系统标识,系统标识表征仿真任务所属的操作系统的类型,如Windows、Mac、Linux等。
其中,在第一设备中的第一集合有多个,每个第一集合对应于不同的系统标识,如Windows对应的第一集合、Linux对应的第一集合等。
基于此,在步骤102中在第一集合中获得目标设备的设备地址时,可以在第一设备中的多个第一集合中确定与仿真请求中的系统标识相匹配的第一集合,即目标集合,然后在该目标集合中获得目标设备的设备地址。
由此,本实施例中针对不同的操作系统配置不同的仿真引擎,并在第一设备中维护不同操作系统对应的第一集合,进而针对第二设备上不同的操作系统需求都能够及时准确的分配相应的仿真引擎,以提高效率。
基于图1所示的实现方案,在第一设备还可以有如下处理步骤,如图5中所示:
步骤111:监测与每个第三设备之间的数据连接的连接状态,在连接状态满足第一更新条件的情况下,执行步骤112,如果连接状态不满足第一更新条件的情况下,返回继续执行步骤111,直到连接状态满足更新条件。
具体的,第一设备每隔目标时长向第三设备发送一次第一消息,第三设备能够针对查询请求向第一设备反馈第二消息。第一更新条件可以为:在第一设备上,连续N次没有接收到第三设备针对查询请求反馈的第二消息,N为大于或等于1的正整数,如3。
其中,目标时长可以根据需求设置,如10秒。
步骤112:更新第一集合中第三设备上配置的处于可用状态的仿真引擎的当前数量,并在第二集合中删除第三设备上的仿真引擎对应的引擎状态。
例如,在第一集合中将连接状态满足第一更新条件的第三设备对应的当前数量设置为0,表征该第三设备上没有可用的仿真引擎;将第二集合中连接状态满足第一更新条件的第三设备对应的引擎状态均删除。
参考图6,为本申请实施例二提供的一种仿真引擎的启停控制方法的实现流程图,该方法可以应用于仿真系统中的多个第三设备中的目标设备,目标设备为多个第三设备中当前数量大于或等于1的设备,如图2中所示的任意一个第三设备都可以作为目标设备执行本实施例中的技术方案。
具体的,本实施例中的方法可以包括以下步骤:
步骤601:接收第一设备发送的索取请求。
其中,索取请求在第一设备接收到第二设备的仿真请求后根据在第一集合中获得的目标设备的设备地址构建得到。仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量。
步骤602:按照索取请求中的目标数量启动至少一个目标引擎。
其中,目标引擎为目标设备中处于可用状态的仿真引擎;目标引擎的数量小于或等于目标数量。
步骤603:向第一设备发送目标引擎对应的引擎信息。
具体的,仿真系统的每个第三设备均配置有自己的状态列表,状态列表中包括每个仿真引擎对应的引擎信息,仿真引擎对应的引擎信息包括:仿真引擎所在第三设备的设备地址、仿真引擎在第三设备上所使用的端口号、仿真引擎在第三设备上的启动时间、启动标识。
基于此,目标设备在接收到索取请求之后,通过状态列表查找启动标识为第二标识和/或启动时间为第一标识的仿真引擎,即目标引擎,然后启动目标引擎,之后根据目标引擎的启动时间更新状态列表中该目标引擎对应的启动时间,根据目标引擎的进程标识更新状态列表中该目标引擎对应的启动标识,再将状态列表中目标引擎对应的引擎信息发送给第一设备。
进一步的,目标设备在发送目标引擎对应的引擎信息时,可以携带目标设备的验证标识如token等信息,验证标识用于验证后续连接到目标引擎的第二设备的合法性。
步骤604:接收第二设备发送的连接请求。
其中,连接请求为:在第一设备发送启动请求给第二设备后,第二设备发送的请求。这里的启动请求由第一设备根据目标引擎对应的引擎信息生成。
具体的,在第一设备将根据目标引擎对应的引擎信息所生成的启动请求发送给第二设备后,第二设备可以按照启动请求中的目标设备的设备地址,向启动请求中的进程标识和端口号在目标设备上对应的仿真引擎发起连接请求。
步骤605:建立目标设备上目标引擎与第二设备之间建立数据连接。
其中,目标设备在接收到连接请求之后,可以先验证连接请求中的验证标识,例如,将连接请求中验证标识与目标设备本地保存的验证标识进行比对,如果一致,建立目标设备上目标引擎与第二设备之间建立数据连接。
其中,目标引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、端口号、启动时间、目标设备的设备地址,以使得第一设备根据目标引擎对应的引擎信息发送启动请求给第二设备,启动请求至少包括:目标引擎在目标设备中的进程标识、启动时间、端口号和目标设备的设备地址,基于此,第二设备至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务。
具体的,第一设备将启动请求发送给第二设备后,第二设备可以按照启动请求中的目标设备的设备地址,向启动请求中的进程标识和端口号在目标设备上对应的仿真引擎发起连接请求,目标设备在接收到连接请求之后,先验证连接请求中的验证标识,例如,将连接请求中验证标识与目标设备本地保存的验证标识进行比对,如果一致,建立目标设备上目标引擎与第二设备之间建立数据连接,由此通过目标引擎为第二设备执行仿真任务,如模拟运行第二设备上的仿真模型等;如果不一致,结束当前流程,目标设备随即可以关闭目标引擎,并向第一设备发送目标引擎对应的验证异常信息,以表征第二设备连接异常,在第一设备上也不再执行后续流程。
另外,目标设备在发送目标引擎对应的引擎信息时,还将目标设备中上配置的处于可用状态的仿真引擎的当前数量一起发送给第一设备,即在目标引擎对应的引擎信息中携带该当前数量。基于此,第一设备不仅能够获得目标设备中目标引擎对应的引擎信息,还能够获得目标设备中启动目标引擎后剩余的处于可用状态的仿真引擎的当前数量。基于此,第一设备还根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量,并在第二集合中添加目标引擎对应的引擎状态。
从上述技术方案可以看出,本申请实施例二提供的一种仿真引擎的启停控制方法中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
进一步的,目标设备还可以接收第一设备发送的关闭请求,关闭请求由第一设备在接收到第二设备发送的结束请求后根据结束请求中目标设备的设备地址生成,基于此,目标设备按照目标引擎在目标设备中的进程标识关闭目标引擎。进一步的,目标设备可以发送更新请求给第一设备,更新请求包括:目标设备上配置的处于可用状态的仿真引擎的当前数量、目标设备的设备地址和目标引擎在目标设备中的进程标识。基于此,第一设备在接收到目标设备发送的更新请求之后,将第一集合中与更新请求中的设备地址对应的目标设备对应的当前数量为更新请求中的当前数量,并在第二集合中删除更新请求中的设备地址和进程标识对应的引擎状态,即删除第二集合中目标引擎对应的引擎状态,由此第一设备在接收到目标设备的更新请求之后按照更新请求更新第一集合和第二集合,进而提高第一集合和第一集合中的信息的准确性。
基于图6所示的实现方案,在目标设备中的目标引擎建立与第二设备之间的数据连接之后,还可以有如下处理步骤,如图7中所示:
步骤606:监测与第二设备之间的数据连接的连接状态,在连接状态满足第二更新条件的情况下,执行步骤607,如果连接状态不满足第二更新条件的情况下,返回继续执行步骤606,直到连接状态满足第二更新条件。
具体的,目标设备按照第一周期定时检测与第二设备之间的数据连接的连接状态,如果连续M次连接状态表征第二设备断开连接,目标设备确定与第二设备之间的数据连接的连接状态满足第二更新条件,也就是说,第二更新条件可以为:在目标设备上,连续M次检测到连接状态表征第二设备断开连接,M为大于或等于1的正整数,如3。
步骤607:关闭第二设备在目标设备上对应的目标引擎,发送更新请求给第一设备,更新请求包括:目标设备上配置的处于可用状态的仿真引擎的当前数量、目标设备的设备地址和目标引擎在目标设备中的进程标识。以使得第一设备更新第一集合中目标设备上配置的处于可用状态的仿真引擎的当前数量,并在第二集合中删除目标设备上对应于第二设备的目标引擎对应的引擎状态。
例如,第一设备在第一集合中将目标设备对应的当前数量加上目标设备上对应于第二设备的目标引擎的数量;将第二集合中目标设备上对应于第二设备的目标引擎对应的引擎状态均删除。
参考图8,为本申请实施例三提供的一种仿真引擎的启停控制方法的实现流程图,该方法可以仿真系统中的第二设备,如图2所示的任意一个第二设备均可以执行本实施例中的技术方案。
具体的,本实施例中的方法可以包括以下步骤:
步骤801:发送仿真请求给第一设备。
其中,仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量,以使得第一设备在第一集合中,获得目标设备的设备地址;目标设备为多个第三设备中当前数量大于或等于1的设备;第一设备还根据目标设备的设备地址,向目标设备发送索取请求,以使得目标设备按照索取请求中的目标数量启动至少一个目标引擎;目标引擎为目标设备中处于可用状态的仿真引擎。
另外,第一设备还接收目标设备发送的目标引擎对应的引擎信息;引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、启动时间、端口号、目标设备的设备地址。
需要说明的是,仿真请求中还可以包含第二设备的认证信息,以便于第一设备对第二设备进行合法性验证。目标设备发送的目标引擎对应的引擎信息还可以携带有目标设备对应的当前数量和目标设备的验证标识,以便于第一设备更新第一集合和第二集合。
步骤802:接收第一设备根据目标引擎对应的引擎信息发送的启动请求。
其中,启动请求包括:目标引擎在目标设备中的进程标识、端口号和目标设备的设备地址。另外,启动请求中还可以携带目标设备的验证标识。
步骤803:至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务。
其中,第一设备还根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量,并在第二集合中添加目标引擎对应的引擎状态;
具体的,第二设备可以将目标设备的验证标识携带在连接请求中,将连接请求发送给目标设备,连接请求中还可以包括:目标引擎在目标设备中的进程标识、端口号和目标设备的设备地址等信息,目标设备在接收到连接请求之后,可以先根据连接请求中的验证标识对第二设备进行验证,如果连接请求中的验证标识与目标设备本地保存的验证标识相一致,那么建立目标设备上目标引擎与第二设备之间的数据连接,进而使得目标引擎为第二设备执行仿真任务。
从上述技术方案可以看出,本申请实施例三提供的一种仿真引擎的启停控制方法中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
进一步的,第二设备在仿真任务被执行完成即不需要使用仿真引擎的情况下生成并发送结束请求给第一设备,以指示第一设备关闭执行该仿真任务的目标引擎。而结束请求中的设备地址和进程标识由第二设备在接收到目标引擎对应的启动请求时获得,或者,结束请求中的设备地址和进程标识由第二设备在使用目标引擎执行仿真任务时从目标引擎获得。基于此,第一设备根据结束请求中目标设备的设备地址,向目标设备发送关闭请求,以使得目标设备按照目标引擎在目标设备中的进程标识关闭目标引擎。并更新第一集合中目标设备上配置的处于可用状态的仿真引擎的当前数量,在第二集合中删除第二集合中目标引擎即被关闭的仿真引擎对应的引擎状态。
基于图8所示的实现方案,在第二设备建立与目标设备中的目标引擎建立之间的数据连接之后,还可以有如下处理步骤,如图9中所示:
步骤804:监测与目标设备之间的数据连接的连接状态,在连接状态满足异常条件的情况下,返回执行步骤803,以重新根据启动请求建立与目标引擎之间的数据连接,执行步骤805;如果连接状态不满足异常条件的情况下,返回继续执行步骤804,直到连接状态满足异常条件。
具体的,第二设备按照第二周期定时检测与目标设备之间的数据连接的连接状态,如果连续L次连接状态表征目标设备断开连接,第二设备确定与目标设备之间的数据连接的连接状态满足异常条件,也就是说,异常条件可以为:在第二设备上,连续L次检测到连接状态表征目标设备断开连接,L为大于或等于1的正整数,如3。
步骤805:判断第二设备与目标引擎之间的数据连接是否重建成功,如果是,返回执行步骤804,如果否,返回执行步骤801,以重新发送仿真请求给第一设备,以使得第一设备重新为第二设备从第三设备中确定新的目标设备以及新的目标引擎,以保证第二设备中仿真任务被执行的可靠性。
参考图10,为本申请实施例四提供的一种仿真引擎的启停控制装置的结构示意图,该装置可以配置在仿真系统中的第一设备上,第一设备中至少配置有第一集合和第二集合。本实施例中的装置可以包括以下单元:
请求获得单元1001,用于获得第二设备的仿真请求,仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量;
地址获得单元1002,用于在第一集合中,获得目标设备的设备地址;第一集合中包括多个第三设备中每个第三设备的设备地址,以及每个第三设备上配置的处于可用状态的仿真引擎的当前数量;目标设备为多个第三设备中当前数量大于或等于1的设备;
索取发送单元1003,用于根据目标设备的设备地址,向目标设备发送索取请求,索取请求包括目标数量,以使得目标设备按照目标数量启动至少一个目标引擎;目标引擎为目标设备中处于可用状态的仿真引擎;
信息接收单元1004,用于接收目标设备发送的目标引擎对应的引擎信息,目标引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、启动时间、端口号、目标设备的设备地址;
启动发送单元1005,用于根据目标引擎对应的引擎信息发送启动请求给第二设备,启动请求包括:目标引擎在目标设备中的进程标识、端口号和目标设备的设备地址,以使得第二设备至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务;
集合更新单元1006,用于根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量。
从上述技术方案可以看出,本申请实施例四提供的一种仿真引擎的启停控制装置中,在第一设备中配置第一集合,在第一集合中保存配置有仿真引擎的第三设备的设备地址和第三设备上配置的处于可用状态的仿真引擎的当前数量,这样,在第一设备上接收到第二设备的仿真请求之后,在第一集合中获得当前数量大于或等于1的目标设备的设备地址,然后根据目标设备的设备地址向目标设备发送索取请求,以使得目标设备按照索取请求中的目标数量启动至少一个处于可用状态的目标引擎,这样第一设备在接收到目标设备发送的目标引擎对应的引擎信息之后,就可以根据目标引擎对应的引擎信息发送启动请求给第二设备,这样第二设备根据启动请求中目标引擎对应的进程标识和端口号以及设备地址建立与目标引擎之间的数据连接,以使得目标引擎能够执行第二设备的仿真任务,之后第一设备根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量,以便于后续使用。可见,本实施例在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
在一种实现方式中,请求获得单元1001还用于接收所述第二设备发送的结束请求,所述结束请求表征所述仿真任务执行完成,所述结束请求至少包括:所述目标设备的设备地址、所述目标引擎在所述目标设备中的进程标识;
基于此,索取发送单元1003还用于根据所述结束请求中所述目标设备的设备地址,向所述目标设备发送关闭请求,以使得所述目标设备按照所述目标引擎在所述目标设备中的进程标识关闭所述目标引擎;
且,集合更新单元1006还用于:更新所述第一集合中所述目标设备上配置的处于可用状态的仿真引擎的当前数量。
在一种实现方式中,启动发送单元1005,还用于:在根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备之后,判断所述目标引擎的数量是否达到所述目标数量;如果所述目标引擎的数量没有达到所述目标数量,触发地址获得单元1002,以在所述第一集合中,获得目标设备的设备地址,直到所述目标引擎的数量达到所述目标数量。
在一种实现方式中,本实施例中的装置还可以包括以下单元,如图11中所示:
异常处理单元1007,用于监测与每个所述第三设备之间的数据连接的连接状态;在所述连接状态满足第一更新条件的情况下,触发集合更新单元906更新所述第一集合中所述第三设备上配置的处于可用状态的仿真引擎的当前数量,并在所述第二集合中删除所述第三设备上的仿真引擎对应的引擎状态。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
参考图12,为本申请实施例五提供的一种仿真引擎的启停控制装置的结构示意图,该装置可以配置在仿真系统中多个第三设备中的目标设备,该装置可以包括以下单元:
请求接收单元1201,用于接收第一设备发送的索取请求,索取请求在第一设备接收到第二设备的仿真请求后根据在第一集合中获得的目标设备的设备地址构建得到;仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量;第一集合中包括多个第三设备中每个第三设备的设备地址,以及每个第三设备上配置的处于可用状态的仿真引擎的当前数量;目标设备为多个第三设备中当前数量大于或等于1的设备;
引擎启动单元1202,用于按照索取请求中的目标数量启动至少一个目标引擎;目标引擎为目标设备中处于可用状态的仿真引擎;目标引擎的数量小于或等于目标数量;
信息发送单元1203,用于向第一设备发送目标引擎对应的引擎信息;目标引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、端口号、目标设备的设备地址,以使得第一设备根据目标引擎对应的引擎信息发送启动请求给第二设备,启动请求包括:目标引擎在目标设备中的进程标识、端口号和目标设备的设备地址,第二设备至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务;
其中,第一设备还根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量。
可见,本申请实施例五提供的一种仿真引擎的启停控制装置中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
参考图13,为本申请实施例六提供的一种仿真引擎的启停控制装置的结构示意图,该装置可以配置在仿真系统中的任意一个第二设备上,该装置可以包括以下单元:
请求发送单元1301,用于发送仿真请求给第一设备,仿真请求中包括目标数量,目标数量表征第二设备所需要的仿真引擎的数量,以使得第一设备在第一集合中获得目标设备的设备地址;第一集合中包括多个第三设备中每个第三设备的设备地址,以及每个第三设备上配置的处于可用状态的仿真引擎的当前数量;目标设备为多个第三设备中当前数量大于或等于1的设备;第一设备还根据目标设备的设备地址,向目标设备发送索取请求,以使得目标设备按照索取请求中的目标数量启动至少一个目标引擎;目标引擎为目标设备中处于可用状态的仿真引擎;
其中,第一设备还接收目标设备发送的目标引擎对应的引擎信息;引擎对应的引擎信息至少包括:目标引擎在目标设备中的进程标识、端口号、目标设备的设备地址;
请求接收单元1302,用于接收第一设备根据目标引擎对应的引擎信息发送的启动请求;启动请求包括:目标引擎在目标设备中的进程标识、端口号和目标设备的设备地址;
连接建立单元1303,用于至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备的仿真任务;
其中,第一设备还根据目标引擎对应的引擎信息,更新第一集合中目标设备对应的当前数量。
可见,本申请实施例六提供的一种仿真引擎的启停控制装置中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
本申请实施例七还提供的一种电子设备,该电子设备作为仿真系统中的第一设备,可以包括以下结构:
存储器,用于存储计算机程序以及计算机程序运行所产生的数据;
处理器,用于执行计算机程序,以实现以下处理:
获得第二设备的仿真请求,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量,以使得所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,以使得所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
可见,本申请实施例七提供的一种电子设备,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
本申请实施例八还提供的一种电子设备,该电子设备作为仿真系统中多个第三设备中的目标设备,该电子设备可以包括以下结构:
存储器,用于存储计算机程序以及计算机程序运行所产生的数据;
处理器,用于执行计算机程序,以实现以下处理:
接收第一设备发送的索取请求,所述索取请求在所述第一设备接收到第二设备的仿真请求后根据在所述第一集合中获得的目标设备的设备地址构建得到;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;所述第一集合中包括所述多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址,以使得所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
可见,本申请实施例八提供的一种电子设备,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
本申请实施例九还提供的一种电子设备,该电子设备作为仿真系统中的第二设备,该电子设备可以包括以下结构:
存储器,用于存储计算机程序以及计算机程序运行所产生的数据;
处理器,用于执行计算机程序,以实现以下处理:
发送仿真请求给第一设备,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量,以使得所述第一设备在第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;所述第一设备还根据所述目标设备的设备地址,向所述目标设备发送索取请求,以使得所述目标设备按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
其中,所述第一设备还接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
接收所述第一设备根据所述目标引擎对应的引擎信息发送的启动请求;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
可见,本申请实施例九提供的一种电子设备,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
参考图14,为本申请实施例十提供的一种仿真系统的系统架构图,该仿真系统可以包括以下架构:
第一设备1401、至少一个第二设备1402和多个第三设备1403,每个第三设备1403上配置有至少一个仿真引擎,第一设备1401上至少配置有第一集合;
其中,第一设备1401、第二设备1402和第三设备1403之间的交互如图15中所示:
第二设备1402发送仿真请求给第一设备1401;仿真请求中包括目标数量,目标数量表征第二设备1402所需要的仿真引擎的数量;
第一设备1401在第一集合中,获得目标设备1431的设备地址;第一集合中包括多个第三设备1403中每个第三设备1403的设备地址,以及每个第三设备1403上配置的处于可用状态的仿真引擎的当前数量;目标设备1431为多个第三设备1403中当前数量大于或等于1的设备;
第一设备1401根据目标设备1431的设备地址,向目标设备1431发送索取请求,索取请求包括目标数量;
目标设备1431按照目标数量启动至少一个目标引擎;目标引擎为目标设备1431中处于可用状态的仿真引擎;目标引擎的数量小于或等于目标数量;
目标设备1431向第一设备1401发送目标引擎对应的引擎信息;目标引擎对应的引擎信息至少包括:目标引擎在目标设备1431中的进程标识、端口号、目标设备1431的设备地址;
第一设备1401根据目标引擎对应的引擎信息发送启动请求给第二设备1402;启动请求包括:目标引擎在目标设备1431中的进程标识、端口号和目标设备1431的设备地址;
第二设备1402至少根据启动请求建立与目标引擎之间的数据连接,目标引擎用于执行第二设备1402的仿真任务;
第一设备1401根据目标引擎对应的引擎信息,更新第一集合中目标设备1431对应的当前数量。
可见,本申请实施例十提供的一种仿真系统中,在仿真系统中配置第一设备并在第一设备中维护第一集合,以便于在第二设备需要仿真引擎时,按照第一集合中所包含的每个第三设备上的当前数量和设备地址在第三设备上为第二设备配置目标引擎,以执行第二设备的仿真任务,这一过程中通过第一设备实现自动化的仿真引擎的启停控制,无需用户手动核对仿真引擎的使用情况也不需要用户进行输入未使用的仿真引擎的地址和仿真引擎在电脑上使用的端口等操作,由此,本申请能够降低分配仿真引擎的操作复杂度,进而提高为仿真模型分配仿真引擎的效率。
具体实现中,本申请可以使用一台服务器做为调度,其内部同时维护调度的具体内容;并使用多台服务器做为SE仿真服务器,但每台服务器中都一直开启一个子服务,且同时维护本台服务器的SE信息,而且调度服务器与各个子服务器之间保持强关联和心跳,使用者需要使用SE时,先通过调度服务器,调度服务器再通知子服务器,子服务再启动SE,再将SE返回给调度服务器,调度服务器再返回给使用者。在调度服务器与子服务器的操作过程中都需要维护自身的操作过程。这种方案,拓扑结构简单,占用硬件少。
以航天仿真场景为例,仿真系统中包括:建模工具所在的服务器G1-G2(即第二设备)、中央服务器S(即第一设备或其集群)以及仿真引擎SE1-SE6所在的电脑C,如图16中所示,据此对本申请的技术方案进行举例说明:
一、在中央服务器S内部维护了4个数据池(即对应于Windows的第一集合和第二集合,以及,对应于Linux的第一集合和第二集合):
1.1、对应于Windows的第一集合windowsIdleIpList:
windowsIdleIpList=[{“192.168.1.2”:-1},{“192.168.1.3”:2},...]中,括号中的内容是从预设的配置文件中读取出来的,包括:Windows版本可使用SE的电脑的ip列表(这个ip列表可以是提前手动输入到配置文件中的)。其中,后面的-1指的是可使用数未知(后面会讲这个值的变化);后面的值为0,代表没有闲置SE可使用;如果这个值是正数X,则代表在这个ip的电脑上有X个SE可用。
1.2、对应于Windows的第二集合windowsEngagedInstanceList:
windowsEngagedInstanceList=[{pid:1,startTime:'1231241435234',ip:'192.16
8.1.2',port: [1,2,3,4] }],该第二集合指的是windows版本已使用的SE列表。其中pid指的是SE的进程id号(每台电脑的pid唯一),startTime指的是这个SE的启动时的时间(它是一个时间戳,例如,指的是从1970年1月1日0时区到当前时间差额的毫秒数),ip就是SE所在电脑的ip,port指的是这个SE所使用的端口号。
1.3、对应于Linux的第一集合linuxIdleIpList。
1.4、对应于Linux的第二集合linuxEngagedInstanceList。
linuxIdleIpList和linuxEngagedInstanceList这两个分别指的是linux下的SE所在的ip列表和SE的使用信息,linuxIdleIpList的内容与windowsIdleIpList同理,linuxEngagedInstanceList的内容和windowsEngagedInstanceList同理,此处不再详述。
二、在C中运行SE:
2.1、在每台电脑开启时,启动C服务,服务中维护张当前电脑运行SE的情况的状态列表pool:
如:[{ip:’192.168.1.2’,ports:[10001,10002,10003,10004],process:undefined,startTime:undefined},{ip:’192.168.1.2’,ports:[10005,10006,10007,10008],process:{pid:9,others...},startTime:1243526215}]。其中的ip为本机ip,是自动从本机中获取的,ports指的是SE使用的端口,是随机指定的未被系统占用的可用端口,startTime指的是SE开启时间的时间戳。undefined指的是当前这个SE未被开启,process(即启动标识)如果是undefined指的是未开启SE,如果开启了SE,process中会存入SE的系统进程信息,进程信息有很多,里面有一个非常重要的信息是pid,pid指的是SE进程在本电脑中的唯一id号,通过这个id号可对该SE做各种操作,比如输出SE的运行状态或者关闭SE。
2.2、SE的启动数量是根据当前电脑CPU核心数和内存大小来确定的,假如电脑配置为2核2G,就启动2个SE,2核1G就启动1个SE,2核4G就启动2个SE,这个可以根据SE的需求来动态配置所需要的最小内存和CPU内核。
基于以上方案,在G上通过S连接SE的过程如下:
3.1、当G需要使用SE时,向S发出HTTP加密请求,请求体明文大致为:{os:win,amount:6,license:”123456看起来很随机的很多字符”},os:win指的是GCAir需要windows版本的SE,amount:6指的是需要6个SE,如果是万维网版的,这里还会有license:”123456看起来很随机的很多字符”这个认证信息license可以为用户从仿真服务提供商购买的G的授权信息,将这个信息导入G后才可以使用G中的相应功能。S收到这个license会到仿真服务提供商对应的数据库中去查询是否存在这个认证信息,如果不存在则认为本次访问非法,会拒绝接下来的服务。
3.2、S验证通过后,S从windowsIdleIpList列表中找到值为-1和值大于0的数,依次向列表中的某个ip(即目标设备)发出请求,以请求获取该ip上的SE,请求体为{amount:6},意为向这个ip索取6个SE。
3.3、C收到请求后,查询自己的pool列表,找到其中startTime为undefined的项,将端口号做为SE的参数并启动SE,将启动的当前时间和启动SE的进程状态分别写入startTime和process两个变量中,并把下列信息返回给S:{result:[{pid:123,startTime:2323423132,ip:192.168.1.5,ports:[10005,10006,10007,10008]},{pid:125,startTime:2323423133,ip:192.168.1.5,ports:[10001,10002,10003,10004]}],available:0},其中available是0,指的是当前ip的机器中的SE已经全部使用,可用数变为了0。
3.4、S收到上述信息后,将{pid:123,startTime:2323423132,ip:192.168.1.5,ports:[10005,10006,10007,10008]},{pid:125,startTime:2323423133,ip:192.168.1.5,ports:[10001,10002,10003,10004]}写入到windowsEngagedInstanceList列表中,并把available的值写入到windowsIdleIpList对应ip的后面.表示该ip上还有0个可用SE。
3.5、S判断收到的信息,计算出刚才的ip只能开启2个SE,还差4个,再次向其它ip做上述请求动作,直到完全得到6个SE为止,如果本次得到的SE之和只有5个,则仅给G返回5个SE并提示数量不足,G可以只使用5个或返还部分或全部SE。其中,在S给G返回信息时,如果SE是万维网版,会在返回的信息中添加一个token,G会使用这个Token来连接开启的SE,如果没有这个Token则SE认为当前连接的G不合法,拒绝提供服务。
3.6、G在收到SE后,直接访问SE,来实现正常的仿真模拟,至此G获取SE的部分结束。
以下为G归还SE的过程:
4.1、G在不需要使用SE后,需要向S归还SE.GCAir向S发出http请求即结束请求,请求体为:{os:windows,ipids:[{ip:’192.168.1.2’,pid:123},{ip:’192.168.1.3’,pid:125}]}。
4.2、S收到后,通过os:windows得知,本次要关闭windows版的SE,所以查找列表:windowsEngagedInstanceList,从中找到ip是192.168.1.2且pid是123的和ip是192.168.1.3的且pid是125的这几项,分别向这两个ip的C端发送归还操作,C接收到请求,通过pid关闭这个SE,同时将C中自己维护的pool中的process下的pid是123或125的那一项的startTime重置成undefined,process也重置成undefined代表pool中有空闲可用的SE了。
4.3、各个C端在完成步骤4.2中的操作后,返回包含当前可用SE个数(available)的成功信息给S,S从windowsEngagedInstanceList中删除匹配项,在windowsIdleIpList中将与ip匹配的那一项的值改为C返回来的available值。
4.4、S在完成操作后,向G返回归还成功信息,至此,G完成归还SE的操作。
以下为G-S-C三者之间的部分异常处理流程:
5.1、G突然断开,并未向S发送归还信息的场景:
G-SE之间在仿真时会建立一个TCP连接(即前文中的数据连接),C会每隔一定时间(比如10秒)来查看TCP的状态,如果连续3次是状态异常那么判定G已经下线,C会主动归还该连接的SE,并将SE返回到池中,C还会主动将自身SE的可用数告知S,S将在自己的几个列表中修改可用数。
5.2、C突然中断或下线的场景:
5.2.1、C可能会因为某些人为原因掉线或中断,如果G感知到C有问题,仿真会出错,G会尝试两次重新连接,如果均出现错误会放弃连接,重新向S请求。
5.2.2、在S内部,存在一个计时器,它每分钟向所有C查询状态,如果连续3次出现异常,会将windowsIdleIpList中对应ip的值改为0,将windowsEngagedInstanceList中相关值删除.在非人为介入的情况下,永远不会再次尝试连接这台机器。
综上,本申请在仿真系统中添加了一个中央服务器,G需要使用SE时,告诉中央服务器需要用X台SE,中央服务器从自己维护的SE池中取出X台闲置SE,并将SE启动,再返回给G,G得到这些SE的地址后,直接连接已为其启动好的SE进行正常仿真。
由此,本申请能够节省硬件、电力、带宽占用,且按需启用SE,充分利用闲置资源。另外,本申请可返回指定数量的空闲SE,实时查询SE占用及运行状态。而且,本申请可以直接写入G配置文件,不需要手动查询和填写,同时解决冲突问题,而SE的各种异常状态实时检测,主服务实时感知并调整SE状态。基于此,将本申请中的仿真系统部署到公有云服务中,可以最大限度突出它的价值。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种仿真引擎的启停控制方法,其特征在于,应用于第一设备,所述第一设备中至少配置有第一集合,所述方法包括:
获得第二设备的仿真请求,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量,以使得所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,以使得所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第二设备发送的结束请求,所述结束请求表征所述仿真任务执行完成,所述结束请求至少包括:所述目标设备的设备地址、所述目标引擎在所述目标设备中的进程标识;
根据所述结束请求中所述目标设备的设备地址,向所述目标设备发送关闭请求,以使得所述目标设备按照所述目标引擎在所述目标设备中的进程标识关闭所述目标引擎;
更新所述第一集合中所述目标设备上配置的处于可用状态的仿真引擎的当前数量。
3.根据权利要求1或2所述的方法,其特征在于,在根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备之后,所述方法还包括:
判断所述目标引擎的数量是否达到所述目标数量;
如果所述目标引擎的数量没有达到所述目标数量,返回执行所述:在所述第一集合中,获得目标设备的设备地址,直到所述目标引擎的数量达到所述目标数量。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
监测与每个所述第三设备之间的数据连接的连接状态;
在所述连接状态满足第一更新条件的情况下,更新所述第一集合中所述第三设备上配置的处于可用状态的仿真引擎的当前数量。
5.一种仿真引擎的启停控制方法,其特征在于,应用于多个第三设备中的目标设备,所述方法包括:
接收第一设备发送的索取请求,所述索取请求在所述第一设备接收到第二设备的仿真请求后根据在第一集合中获得的目标设备的设备地址构建得到;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;所述第一集合中包括所述多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址,以使得所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
6.一种仿真引擎的启停控制方法,其特征在于,应用于第二设备,所述方法包括:
发送仿真请求给第一设备,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量,以使得所述第一设备在第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;所述第一设备还根据所述目标设备的设备地址,向所述目标设备发送索取请求,以使得所述目标设备按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
其中,所述第一设备还接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
接收所述第一设备根据所述目标引擎对应的引擎信息发送的启动请求;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
7.一种仿真引擎的启停控制装置,其特征在于,配置在第一设备上,所述第一设备中至少配置有第一集合,所述装置包括:
请求获得单元,用于获得第二设备的仿真请求,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
地址获得单元,用于在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
索取发送单元,用于根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量,以使得所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
信息接收单元,用于接收所述目标设备发送的所述目标引擎对应的引擎信息,所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、启动时间、端口号、所述目标设备的设备地址;
启动发送单元,用于根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,以使得所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
集合更新单元,用于根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
8.一种仿真引擎的启停控制装置,其特征在于,配置在多个第三设备中的目标设备,所述装置包括:
请求接收单元,用于接收第一设备发送的索取请求,所述索取请求在所述第一设备接收到第二设备的仿真请求后根据在第一集合中获得的目标设备的设备地址构建得到;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;所述第一集合中包括所述多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
引擎启动单元,用于按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
信息发送单元,用于向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址,以使得所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备,所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址,所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
9.一种仿真引擎的启停控制装置,其特征在于,配置在第二设备上,所述装置包括:
请求发送单元,用于发送仿真请求给第一设备,所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量,以使得所述第一设备在第一集合中获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;所述第一设备还根据所述目标设备的设备地址,向所述目标设备发送索取请求,以使得所述目标设备按照所述索取请求中的所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;
其中,所述第一设备还接收所述目标设备发送的所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
请求接收单元,用于接收所述第一设备根据所述目标引擎对应的引擎信息发送的启动请求;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
连接建立单元,用于至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
其中,所述第一设备还根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
10.一种仿真系统,其特征在于,所述仿真系统包括:
第一设备、至少一个第二设备和多个第三设备,每个所述第三设备上配置有至少一个仿真引擎,所述第一设备上至少配置有第一集合;
其中:
所述第二设备发送仿真请求给所述第一设备;所述仿真请求中包括目标数量,所述目标数量表征所述第二设备所需要的仿真引擎的数量;
所述第一设备在所述第一集合中,获得目标设备的设备地址;所述第一集合中包括多个第三设备中每个所述第三设备的设备地址,以及每个所述第三设备上配置的处于可用状态的仿真引擎的当前数量;所述目标设备为所述多个第三设备中所述当前数量大于或等于1的设备;
所述第一设备根据所述目标设备的设备地址,向所述目标设备发送索取请求,所述索取请求包括所述目标数量;
所述目标设备按照所述目标数量启动至少一个目标引擎;所述目标引擎为所述目标设备中处于可用状态的仿真引擎;所述目标引擎的数量小于或等于所述目标数量;
所述目标设备向所述第一设备发送所述目标引擎对应的引擎信息;所述目标引擎对应的引擎信息至少包括:所述目标引擎在所述目标设备中的进程标识、端口号、所述目标设备的设备地址;
所述第一设备根据所述目标引擎对应的引擎信息发送启动请求给所述第二设备;所述启动请求包括:所述目标引擎在所述目标设备中的进程标识、端口号和所述目标设备的设备地址;
所述第二设备至少根据所述启动请求建立与所述目标引擎之间的数据连接,所述目标引擎用于执行所述第二设备的仿真任务;
所述第一设备根据所述目标引擎对应的引擎信息,更新所述第一集合中所述目标设备对应的当前数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311370400.7A CN117130758B (zh) | 2023-10-23 | 2023-10-23 | 仿真引擎的启停控制方法、装置及仿真系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311370400.7A CN117130758B (zh) | 2023-10-23 | 2023-10-23 | 仿真引擎的启停控制方法、装置及仿真系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117130758A CN117130758A (zh) | 2023-11-28 |
CN117130758B true CN117130758B (zh) | 2024-01-16 |
Family
ID=88854814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311370400.7A Active CN117130758B (zh) | 2023-10-23 | 2023-10-23 | 仿真引擎的启停控制方法、装置及仿真系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130758B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101080734A (zh) * | 2004-10-22 | 2007-11-28 | 99有限公司 | 使用推理逻辑的协同处理 |
CN105955833A (zh) * | 2016-06-06 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 引擎调用方法和装置 |
CN112988350A (zh) * | 2021-03-01 | 2021-06-18 | 网易(杭州)网络有限公司 | 数据任务的处理方法、装置及电子设备 |
CN114884750A (zh) * | 2022-07-07 | 2022-08-09 | 杭州筋斗腾云科技有限公司 | 访问的处理方法、访问处理系统及计算机系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8289960B2 (en) * | 2009-06-22 | 2012-10-16 | Citrix Systems, Inc. | Systems and methods for N-core tracing |
-
2023
- 2023-10-23 CN CN202311370400.7A patent/CN117130758B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101080734A (zh) * | 2004-10-22 | 2007-11-28 | 99有限公司 | 使用推理逻辑的协同处理 |
CN105955833A (zh) * | 2016-06-06 | 2016-09-21 | 腾讯科技(深圳)有限公司 | 引擎调用方法和装置 |
CN112988350A (zh) * | 2021-03-01 | 2021-06-18 | 网易(杭州)网络有限公司 | 数据任务的处理方法、装置及电子设备 |
CN114884750A (zh) * | 2022-07-07 | 2022-08-09 | 杭州筋斗腾云科技有限公司 | 访问的处理方法、访问处理系统及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117130758A (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220179646A1 (en) | Detecting anomalies online using controller processing activity | |
CN112738805B (zh) | 设备控制方法和装置、存储介质及电子设备 | |
US20130325939A1 (en) | Terminal management system and method for managing a terminal | |
CN105376257A (zh) | 智能家居应用程序的登录方法、智能家居系统和云服务器 | |
CN109361542A (zh) | 客户端的故障处理方法、装置、系统、终端和服务器 | |
CN102508734A (zh) | 操作系统恢复方法及智能设备 | |
CN111585801A (zh) | 一种ZigBee设备升级方法及相关设备 | |
CN114362983A (zh) | 一种防火墙策略管理方法、装置、计算机设备和存储介质 | |
CN110865819A (zh) | 一种os的安装方法、服务器和系统 | |
CN105162769A (zh) | 一种网关权限转移的方法及装置 | |
CN117130758B (zh) | 仿真引擎的启停控制方法、装置及仿真系统 | |
CN104104701A (zh) | 在线服务的配置更新的方法和系统 | |
CN110602732B (zh) | 无线配置参数同步方法、装置、网络设备和计算机可读存储介质 | |
US7350065B2 (en) | Method, apparatus and program storage device for providing a remote power reset at a remote server through a network connection | |
US20090083747A1 (en) | Method for managing application programs by utilizing redundancy and load balance | |
CN109213572A (zh) | 一种基于虚拟机的可信度确定方法及服务器 | |
CN117130759B (zh) | 仿真引擎的启停控制方法、装置及仿真系统 | |
CN113721938A (zh) | 适应电力物联网的边边协同任务处理方法、装置及系统 | |
CN108964989B (zh) | 与业务平台连接的方法、装置及计算机可读存储介质 | |
CN117112185B (zh) | 仿真引擎的调用控制方法、装置及仿真系统 | |
CN112367386A (zh) | 基于Ignite的自动化运维方法、装置及计算机设备 | |
CN113472599B (zh) | 网络节点的数据通信方法及系统 | |
CN115905271B (zh) | 一种病毒库更新方法、装置及多引擎检测系统 | |
CN116302009B (zh) | 一种基于无线路由器的软件更新方法及装置 | |
CN116662938B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |