CN102662770B - 分布式虚拟试验系统中的节点同步方法 - Google Patents
分布式虚拟试验系统中的节点同步方法 Download PDFInfo
- Publication number
- CN102662770B CN102662770B CN201210130065.9A CN201210130065A CN102662770B CN 102662770 B CN102662770 B CN 102662770B CN 201210130065 A CN201210130065 A CN 201210130065A CN 102662770 B CN102662770 B CN 102662770B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- thread
- logical time
- synchronous
- 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
Images
Landscapes
- Small-Scale Networks (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Multi Processors (AREA)
Abstract
一种分布式虚拟试验系统中的节点同步方法,包括以下步骤:(1)配置节点:在虚拟试验系统中设置通过网络互联的一控制节点和一个以上的运算节点;启动虚拟试验系统并初始化;(2)分级同步:第一级同步:在各节点内,数据发送线程通过在共享内存区读取工作线程提供的数据实现逻辑时间同步;第二级同步:在节点间,控制线程通过网络统一控制并协调各运算节点内的工作线程,实现节点间的逻辑时间和步长推进的同步;第三级同步:在各节点内,数据接收线程通过共享内存区将数据交给工作线程实现逻辑时间的同步。本发明具有原理简单、操作简便、能保证节点时间同步、简化系统设计、提高整个系统运行效率等优点。
Description
技术领域
本发明主要涉及到虚拟试验系统领域,特指一种适用于分布式虚拟试验系统中的节点同步方法。
背景技术
虚拟试验系统由于其耗费小、可重复且无破坏的特点,逐渐成为一种重要的评价手段和试验手段,在国民经济的各领域得到快速发展。在分布式虚拟试验系统中,多个分布在不同位置的节点共同完成试验任务,各节点一般是通过局域网相连,通过计算机网络完成相互间的通信和数据交互。由于各节点分布在不同的地理位置,相互间需要实时交互数据,如何保证各个节点的数据以及与时间有关的事件在时间逻辑上的一致性是虚拟试验系统需要解决的一个关键问题。
目前常用的方法有两种:一是采用时间同步算法实现各节点时钟的精确同步,在时间触发机制下实现数据同步;二是是采用高层体系结构(HLA,High Level Architecture),在HLA的时间管理机制下实现各节点的同步推进。
方法一要实现较好同步效果的前提是能实现较精确的时钟同步,但是,一方面时间同步算法的执行会增加系统的开销,降低系统运行效率,另一方面,网络传输延时的不确定性使得时钟同步的精度很难得到保证。
方法二中,在基于HLA的时间同步方式下,需要运行支撑环境(RTI)的支持,在系统运行全过程,需要维持一个联邦执行的存在,每个参与运算的节点作为一个联邦成员加入联邦。联邦时间推进采用步长推进的方式,在每个执行步长内,联邦成员完成模型计算、结果输出和数据发送等任务。当所有联邦成员均完成当前步长内的计算任务时,联邦向下一步推进;如果有一个成员未完成当前步长的任务,联邦将继续等待直到满足推进条件。在HLA的时间管理机制下,由于各节点步长推进时存在互相控制和约束的关系,系统各节点的数据能保持严格的同步。但是这种以成员间的相互控制和约束实现的严格同步也带来了由于某个节点的延迟导致整个系统延迟的危险。另一方面,由于HLA本身的机制复杂,对虚拟试验系统而言存在较多的冗余,会在一定程度上降低系统的效率和实时性。
在虚拟试验系统中,可将时间划分为墙上时间和逻辑时间两大类。墙上时间就是真实世界的时间,逻辑时间是虚拟试验系统中从虚拟试验起始点开始计算的各节点约定步长推进的时间值。因此,虚拟试验系统中的节点同步又可分为基于真实时间的同步和基于逻辑时间的同步。
发明内容
本发明所要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、操作简便、能保证节点时间同步、简化系统设计、提高整个系统运行效率的分布式虚拟试验系统中的节点同步方法。
为解决上述技术问题,本发明采用以下技术方案:
一种分布式虚拟试验系统中的节点同步方法,步骤为:
(1)配置节点并启动虚拟试验系统进行初始化:在虚拟试验系统中设置通过网络互联的一控制节点和一个以上的运算节点,所述控制节点和运算节点中均设置有用于完成节点数据处理和模型计算任务的工作线程、数据发送线程、数据接收线程以及共享内存区;所述控制节点的工作线程为控制线程;
(2)分级同步:
(2.1)第一级同步:在所述控制节点和运算节点中,所述数据发送线程通过在所述共享内存区读取所述工作线程提供的数据实现逻辑时间同步;
(2.2)第二级同步:在上述节点之间,所述控制线程通过网络统一控制并协调各运算节点内的工作线程,实现节点间的逻辑时间和步长推进的同步;
(2.3)第三级同步:在所述控制节点和运算节点中,所述数据接收线程通过所述共享内存区将数据交给工作线程实现逻辑时间的同步。
作为本发明的进一步改进:
所述共享内存区包括数据发送区和数据接收区,所述数据发送区和数据接收区中分别设有用于标示当前数据是否更新的数据更新标志。
所述步骤(2.1)的具体步骤为:在各节点内,均维持着一个本地逻辑时钟,其逻辑时间以虚拟试验开始为起算节点并在控制线程协调下逐步递增;新的步长开始后,所述工作线程保持检测数据接收区的数据更新标志;若数据已更新,则读取数据、进行计算并将需要发送的计算结果保存在数据发送区中,更新数据发送区的数据更新标志;数据发送线程检测到数据发送区的数据更新标志为有效后,将数据读取、封装并加上逻辑时戳,通过网络发送给其他节点,向控制节点请求推进到下一步长。
所述工作线程检测所述数据接收区的数据更新标志时,工作线程在经过n0次查询等待仍未收到新数据时,则放弃等待,向所述控制节点请求推进至下一步长,其中n0为根据虚拟试验对步长的要求而设置的阀值。
所述步骤(2.2)的具体步骤为:在所述各节点之间,所述控制线程在收到所有节点发送的步长推进请求后,综合判断系统当前状况,向各节点发送步长推进命令,各节点在控制线程的统一协调下实现同步向前推进;所述控制线程还负责维护虚拟试验系统的逻辑时间,并定期向所有节点广播更新的逻辑时间。
所述步骤(2.3)在虚拟试验系统运行期间,所述数据接收线程保持对端口的侦听,收到数据后进行以下三种情况的处理:
a. 所述数据接收线程接收到所述节点之间的交互数据后,根据本地逻辑时间和所述交互数据所附带的逻辑时戳的大小对比判断数据的有效性,若数据有效则存入共享内存区中的数据接收区、更新数据接收区的更新标志并通知工作线程;若数据无效则丢弃数据,继续侦听;
b. 所述数据接收线程接收到来自控制节点的逻辑时间广播后,校正本地逻辑时间值;
c. 所述数据接收线程接收到来自控制节点的控制命令后,解读控制命令,并采取相应动作。
所述虚拟试验系统中分设控制网和运行网,所述控制命令、逻辑时间广播和所述步长推进请求通过所述控制网传送;所述节点之间的交互数据通过运行网传送。
与现有技术相比,本发明的优点在于:
1、本发明的分布式虚拟试验系统中的节点同步方法,通过分级同步实现节点间的同步过程,优先保证了各个节点的工作线程的运行效率,可避免两个同步节点由于相互制约、限制引起的死锁、冲突等现象,进而提高了整个系统运行效率。本发明的方法实施简单,运行可靠,实现了高效、简洁、实用,系统资源占用率低,以较小的代价实现了分布式系统的同步。
2、本发明的分布式虚拟试验系统中的节点同步方法,无需运行支撑环境的支持、不需要维护一个联邦执行的存在,在一定程度上节约了系统资源;在实现时间同步时,不需要增加额外的时钟源,简化了系统。
3、本发明的分布式虚拟试验系统中的节点同步方法,运行网和控制网分离,可避免由于数据交互繁忙造成控制命令传达不及时的问题,保证了控制端所发出的命令和逻辑时间广播值能及时准确的传送至系统各节点,且保证了系统运行期间节点间的数据交互不会影响控制命令的快速有效传输。
附图说明
图1是本发明的节点同步方法的总流程示意图。
图2是本发明具体实施例中的同步系统结构示意图。
图3是本发明具体实施例中的节点内工作线程与数据发送线程同步流程示意图。
图4是本发明具体实施例中的节点内数据发送线程与控制线程同步流程示意图。
图5是本发明具体实施例中的数据接收线程工作流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明的分布式虚拟试验系统中的节点同步方法,包括以下步骤:
1、 配置节点:参见图2所示,在虚拟试验系统中设置通过网络互联的一控制节点和二个以上的运算节点,在各节点内设置用于完成节点的数据处理和模型计算任务的工作线程、用于输出数据的数据发送线程、用于输入数据的数据接收线程以及供前述三者共享的共享内存区(视实际交互数据大小而定)。控制节点的工作线程为控制线程。控制线程的一个重要功能是维护系统的逻辑时间,并定期向系统内的所有节点发布更新的逻辑时间。共享内存区包括数据发送区和数据接收区,数据发送区和数据接收区中分别设有用于标示当前数据是否更新的数据更新标志。
本实施例中,参见图2所示,虚拟试验系统中包含n(n≥2)个运算节点和一个控制节点,节点间通过计算机网络连接。虚拟试验系统中分设控制网和运行网。控制命令、逻辑时间广播、步长推进请求和节点状态报告通过控制网传送;节点间的交互数据通过运行网传送。运行网和控制网是相互分离、相互独立的,能保证系统运行期间节点间的数据交互不会影响控制命令的快速有效传输。
在各节点内,均维持着一个本地逻辑时钟,该本地逻辑时钟所示的逻辑时间即为系统当前的逻辑时间,系统所有节点的逻辑时间以控制节点的逻辑时间为准。一方面,逻辑时间以虚拟试验开始为起算节点并在控制线程协调下逐步递增(系统各节点的逻辑时间的维护有两种途径,一是各节点根据控制节点的步长推进命令递增逻辑时间,二是控制节点定期向系统内所有节点广播逻辑时间值,以便各节点校正本地逻辑时间); 另一方面,控制线程定期向系统内所有节点广播当前逻辑时间值,各节点以控制线程广播的逻辑时钟来修正本地时钟。
虚拟试验系统启动后,先进行初始化,流程如下:
1)首先启动控制端程序;
2)通过控制端程序启动运算节点程序,并通过控制端程序读取配置文件,配置文件包含了节点间数据的发送和接收关系;
3)初始化参数配置,系统逻辑时钟归零。
2、分级同步:在本发明实施例中,节点间的多线程分级同步过程实际上是节点间工作线程所发送和接收的数据,通过数据发送线程、数据接收线程的分级同步,在控制线程的统一协调下,在逻辑时序上实现同步一致的过程。本发明将两个节点间的同步过程将被划分为多个中间过程,通过分级同步实现最终的同步。分级同步的好处是可以避免两个同步点由于相互制约、限制引起的死锁、冲突等现象,可以提高系统运行效率。在分布式虚拟试验系统中,各节点的数据运算和处理是由各节点的线程完成的。因此,节点的同步实际上可归结为线程的同步。在多线程机制下的分级同步方法,就是在线程同步过程中创建新的线程,通过多个线程同步过程实现最终的同步。因此,本发明分布式虚拟试验系统各节点的同步是在控制线程的统一协调下,通过多级线程的同步,最终实现各节点工作线程的同步。第一级同步是在各节点内部,工作线程和数据发送线程通过共享内存方式实现的同步;第二级同步是在控制线程统一协调下实现的各分布节点基于步长推进方式实现的同步;第三级同步是数据接收线程通过比较所收到数据的逻辑时戳和本地逻辑时间值判断数据的有效性,并通过共享内存方式将数据交给工作线程实现的同步。在上述三级同步机制下,可实现各节点数据在时间逻辑上的一致性。
本实施例中,分级同步的详细步骤为:
2.1 第一级同步:在各节点内,数据发送线程通过在共享内存区读取工作线程提供的数据实现逻辑时间同步。
新的步长开始后,工作线程保持检测数据接收区的更新标志,若数据已更新,则读取数据、进行计算(进行模型计算,若是第一次执行则根据初始化参数计算,否则根据接收到的数据计算)并将需要发送的计算结果保存在数据发送区中,更新数据发送区的更新标志。如图3所示,数据发送线程的工作流程如下:
1) 向控制线程发送消息,报告本地节点状态;
2) 读取数据发送区的数据更新标志,判断数据是否更新;
3) 如果数据已更新转到4),否则转到5);
4) 将数据发送区的数据读取、封装并加上逻辑时戳,按照节点间的数据交互关系,通过计算机网络发送给系统内的其他节点;其中,逻辑时戳值为当前本地逻辑时间大小加1;
5) 若工作线程允许推进,则转到6),否则转到2);
6) 向控制线程报告状态,并请求推进;
7) 等待推进命令;
8)收到推进命令,转到(1),收到退出命令后退出。
工作线程检测数据接收区的更新标志时,工作线程在经过n0次查询等待仍未收到新数据,则放弃等待,向控制节点请求推进至下一步长,n0为根据虚拟试验对步长的要求而设置的阀值。
2.2 第二级同步:在节点间,控制线程通过网络统一控制并协调各运算节点内的工作线程,实现节点间的逻辑时间和步长推进的同步。
如图4所示,在节点间,每个节点的一个步长工作结束后,数据发送线程向控制线程发送步长推进请求。控制线程负责接收系统内所有节点的状态报告,根据各节点的状态报告判断节点的工作状况以及当前系统逻辑时间的推进情况。控制线程在收到所有节点发送的步长推进请求后,综合判断系统当前状况,向各节点发送步长推进命令,各节点在控制线程的统一协调下实现同步向前推进。
控制线程还负责维护虚拟试验系统的逻辑时间,并定期向所有节点广播更新的逻辑时间。
2.3 第三级同步:在各节点内,数据接收线程通过共享内存区将数据交给工作线程实现逻辑时间的同步。
如图5所示,在虚拟试验系统运行期间,数据接收线程保持对端口的侦听,收到数据后进行以下三种情况的处理:
a. 数据接收线程接收到节点间的交互数据后,根据本地逻辑时间和交互数据所附带的逻辑时戳的大小对比判断数据的有效性,若数据有效则存入共享内存区中的数据接收区、更新数据接收区的更新标志并通知工作线程;若数据无效则丢弃数据继续侦听。
b. 数据接收线程接收到来自控制节点的逻辑时间广播后,校正本地逻辑时间值。
c. 数据接收线程接收到来自控制节点的控制命令后,解读控制命令,并采取相应动作。
通过以上分级同步步骤,最终实现所有节点的工作线程的逻辑时间和步长推进的同步。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (6)
1.一种分布式虚拟试验系统中的节点同步方法,其特征在于,步骤为:
(1)配置节点并启动虚拟试验系统进行初始化:在虚拟试验系统中设置通过网络互联的一控制节点和一个以上的运算节点,所述控制节点和运算节点中均设置有用于完成节点数据处理和模型计算任务的工作线程、数据发送线程、数据接收线程以及共享内存区;所述控制节点的工作线程为控制线程;
(2)分级同步:
(2.1)第一级同步:在所述控制节点和运算节点中,所述数据发送线程通过在所述共享内存区读取所述工作线程提供的数据实现逻辑时间同步;
(2.2)第二级同步:在上述节点之间,所述控制线程通过网络统一控制并协调各运算节点内的工作线程,实现节点间的逻辑时间和步长推进的同步;
(2.3)第三级同步:在所述控制节点和运算节点中,所述数据接收线程通过所述共享内存区将数据交给工作线程实现逻辑时间的同步;
所述步骤(2.1)的具体步骤为:在各节点内,均维持着一个本地逻辑时钟,其逻辑时间以虚拟试验开始为起算节点并在控制线程协调下逐步递增;新的步长开始后,所述工作线程保持检测数据接收区的数据更新标志;若数据已更新,则读取数据、进行计算并将需要发送的计算结果保存在数据发送区中,更新数据发送区的数据更新标志;数据发送线程检测到数据发送区的数据更新标志为有效后,将数据读取、封装并加上逻辑时戳,通过网络发送给其他节点,向控制节点请求推进到下一步长。
2.根据权利要求1所述的分布式虚拟试验系统中的节点同步方法,其特征在于:所述共享内存区包括数据发送区和数据接收区,所述数据发送区和数据接收区中分别设有用于标示当前数据是否更新的数据更新标志。
3.根据权利要求1所述的分布式虚拟试验系统中的节点同步方法,其特征在于,所述工作线程检测所述数据接收区的数据更新标志时,工作线程在经过n0次查询等待仍未收到新数据时,则放弃等待,向所述控制节点请求推进至下一步长,其中n0为根据虚拟试验对步长的要求而设置的阀值。
4.根据权利要求3所述的分布式虚拟试验系统中的节点同步方法,其特征在于,所述步骤(2.2)的具体步骤为:在所述各节点之间,所述控制线程在收到所有节点发送的步长推进请求后,综合判断系统当前状况,向各节点发送步长推进命令,各节点在控制线程的统一协调下实现同步向前推进;所述控制线程还负责维护虚拟试验系统的逻辑时间,并定期向所有节点广播更新的逻辑时间。
5.根据权利要求4所述的分布式虚拟试验系统中的节点同步方法,其特征在于,所述步骤(2.3)在虚拟试验系统运行期间,所述数据接收线程保持对端口的侦听,收到数据后进行以下三种情况的处理:
a. 所述数据接收线程接收到所述节点之间的交互数据后,根据本地逻辑时间和所述交互数据所附带的逻辑时戳的大小对比判断数据的有效性,若数据有效则存入共享内存区中的数据接收区、更新数据接收区的更新标志并通知工作线程;若数据无效则丢弃数据,继续侦听;
b. 所述数据接收线程接收到来自控制节点的逻辑时间广播后,校正本地逻辑时间值;
c. 所述数据接收线程接收到来自控制节点的控制命令后,解读控制命令,并采取相应动作。
6.根据权利要求5所述的分布式虚拟试验系统中的节点同步方法,其特征在于,所述虚拟试验系统中分设控制网和运行网,所述控制命令、逻辑时间广播和所述步长推进请求通过所述控制网传送;所述节点之间的交互数据通过运行网传送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130065.9A CN102662770B (zh) | 2012-04-28 | 2012-04-28 | 分布式虚拟试验系统中的节点同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130065.9A CN102662770B (zh) | 2012-04-28 | 2012-04-28 | 分布式虚拟试验系统中的节点同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662770A CN102662770A (zh) | 2012-09-12 |
CN102662770B true CN102662770B (zh) | 2014-02-19 |
Family
ID=46772269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210130065.9A Active CN102662770B (zh) | 2012-04-28 | 2012-04-28 | 分布式虚拟试验系统中的节点同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662770B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678485B (zh) * | 2013-12-26 | 2017-05-10 | 中国运载火箭技术研究院 | 虚拟试验流程节点驱动与活动封装系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488606B (zh) | 2013-09-10 | 2016-08-17 | 华为技术有限公司 | 基于节点控制器的请求响应方法和装置 |
CN107153567B (zh) * | 2016-12-12 | 2020-03-17 | 北京航天长征飞行器研究所 | 一种基于数据驱动的仿真模块 |
CN106971077B (zh) * | 2017-03-30 | 2021-01-19 | 中国人民解放军国防科学技术大学 | 一种基于时间片段参数辨识的动态仿真模型验证方法 |
CN116915676B (zh) * | 2023-07-13 | 2024-09-06 | 南方电网科学研究院有限责任公司 | 一种电磁暂态实时仿真通信组件的评测方法、装置和设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527608B (zh) * | 2009-04-22 | 2012-01-11 | 哈尔滨工业大学 | 基于网络化测控lxi系统的ieee1588同步精度测试装置 |
CN101697502B (zh) * | 2009-09-22 | 2013-06-05 | 哈尔滨工业大学 | 一种煤矿井下无线传感器网络的精密同步方法 |
CN102201907B (zh) * | 2011-03-04 | 2014-05-21 | 于辉 | 一种分布式仿真同步的实现方法 |
-
2012
- 2012-04-28 CN CN201210130065.9A patent/CN102662770B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678485B (zh) * | 2013-12-26 | 2017-05-10 | 中国运载火箭技术研究院 | 虚拟试验流程节点驱动与活动封装系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102662770A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662770B (zh) | 分布式虚拟试验系统中的节点同步方法 | |
CN107025205B (zh) | 一种分布式系统中的训练模型的方法及设备 | |
CN102591759B (zh) | 片上众核处理器时钟精确并行仿真系统 | |
CN102831011B (zh) | 一种基于众核系统的任务调度方法及装置 | |
CN101382968B (zh) | 一种先进综合式航空电子仿真系统及其仿真方法 | |
CN102833168B (zh) | 一种基于时间触发机制的数据传输方法及装置 | |
CN101452404B (zh) | 一种嵌入式操作系统的任务调度装置及方法 | |
CN101887367B (zh) | 一种多级并行化编程方法 | |
CN101132270B (zh) | 多节点协调的时间一致性管理方法 | |
CN102201907B (zh) | 一种分布式仿真同步的实现方法 | |
CN103268251A (zh) | 一种基于时戳截流的并行离散事件仿真时间同步方法 | |
CN102981910A (zh) | 虚拟机调度的实现方法和装置 | |
WO2022141727A1 (zh) | 一种基于云上成本的资源部署系统及方法 | |
CN106802825B (zh) | 一种基于实时系统的动态任务调度方法与系统 | |
CN107329842B (zh) | 基于Qt信号槽机制的获取数据的方法及终端 | |
CN103685248A (zh) | 一种过程层三网合一报文传输实时调度方法 | |
CN105426440A (zh) | 一种基于数据库的异构型数据批量同步方法 | |
CN102682214B (zh) | 基于保守机制的小步长时间推进方法 | |
CN104166593A (zh) | 一种计算多应用功能异步并发调度方法 | |
CN105227648A (zh) | 一种基于时间桶的地铁综合监控系统时间序列触发方法 | |
Chandy et al. | A nontrivial example of concurrent processing: Distributed simulation | |
CN115277785A (zh) | 一种智慧电厂云边端纵向架构系统 | |
CN101699404B (zh) | 一种大规模通信网仿真模型的构建及仿真方法 | |
JP2018032344A (ja) | 分散同期処理システムおよび分散同期処理方法 | |
CN106325983A (zh) | 一种内存占用小、支持并发的微程模型及调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |