一种用于空战飞行模拟器的多节点同步方法与流程

文档序号:30979470发布日期:2022-08-03 00:15阅读:181来源:国知局
一种用于空战飞行模拟器的多节点同步方法与流程

1.本发明涉及分布式系统技术领域,更具体地说,本发明涉及一种用于空战飞行模拟器的多节点同步方法。


背景技术:

2.空战飞行模拟是基于分布式系统的、多节点的仿真平台,是实时性的系统,考虑到对战公平、系统稳定、随时加入离开等特点,需要一种节点间逻辑时钟同步的方式。
3.现有技术中,分布式时钟同步算法有cristian、berkeley、lamport逻辑时钟等。但是其在实际使用时,仍旧存在较多缺点,如逻辑时钟的程序复杂,程序往往多个节点间的同步程度交底,导致程序响应速度慢。
4.为此,我们结合仿真平台的需求与计算特点,提供了一种在局域网内与上面算法不同的逻辑时钟同步方法,即提出了一种用于空战飞行模拟器的多节点同步方法来解决上述问题。


技术实现要素:

5.为了克服现有技术的上述缺陷,本发明的实施例提供一种用于空战飞行模拟器的多节点同步方法,通过步骤一检查master节点;步骤二:执行逻辑;步骤三:发送结果;步骤四:校正时间;以解决上述背景技术中提出的问题。
6.为实现上述目的,本发明提供如下技术方案:一种用于空战飞行模拟器的多节点同步方法,具体包括以下步骤:
7.步骤一:检查master节点,在程序启动时,检查是否有master节点;没有,创建同步timer,自己作为master节点。
8.步骤二:执行逻辑,同步timer每隔1ms,执行程序逻辑;
9.步骤三:发送结果,接收到通知n时,取缓存的网络数据、模拟计算、发送计算结果给其它节点。
10.步骤四:校正时间,master节点收到通知n的时间校正,master发送通知n到非master节点收到有段时间,这段时间设为d ms。因为master所在计算机收到的组播数据不在网络上传输,会导致master节点先收到通知n,如果模拟计算开始的时间点允许d ms的偏差,此种情况可以忽略,否则需要在master收到通知n后,利用延迟操作延迟d ms再做后续操作。
11.在一个优选的实施方式中,所述步骤一中检查是否有master节点的检查方法具体为:在2
×
i ms时间内,程序是否接收到通知n,并执行程序操作。
12.在一个优选的实施方式中,所述程序操作具体为,判断程序是否接收到通知n:
13.若接收到n,则表示有master节点;
14.若没有接收到n,则表示没有master节点。
15.在一个优选的实施方式中,所述步骤二中程序逻辑具体如下:
16.a、本节点是master节点,组播通知n给其它节点;
17.b、本节点非master节点,检查多长时间没有接收到通知n。
18.在一个优选的实施方式中,所述程序逻辑b中,检查没有接收到通知n的时间,判断时间是否超时:
19.当超时时,自己作为master节点;
20.未超时时,接收到通知n。
21.在一个优选的实施方式中,所述步骤三中附加操作,具体为:
22.a、如果自己是master节点,检查通知n内的节点编号是否小于本节点编号;
23.b、如果没有创建同步timer,创建同步timer。
24.c、在一个优选的实施方式中,所述步骤三附加操作中,程序逻辑b中检查通知n内的节点编号是否小于本节点编号后的逻辑是:
25.是,本机不再作为master节点;
26.否,本机继续作为master节点。
27.在一个优选的实施方式中,所述步骤四中延迟操作为:
28.a、i>10ms,调用std::this_thread::sleep_for(duration)实现延迟;
29.b、i≤10ms,添加耗时的冗余操作实现延迟。
30.在一个优选的实施方式中,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于用于空战飞行模拟器的多节点同步方法。
31.在一个优选的实施方式中,一种电子设备,包括:
32.至少一个处理器;以及,
33.与所述至少一个处理器通信连接的存储器;其中,
34.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行用于空战飞行模拟器的多节点同步方法。
35.本发明的技术效果和优点:
36.通过本发明设计的整体方法,与现有技术相比,可以在程序节点中提供了一个master节点,利用master节点的特性,master节点会每隔1ms会向其它节点发送开始模拟计算的通知n,其它节点在收到该通知后,取缓存的网络数据进行模拟计算,并将模拟计算后的结果发送给其它节点,不但如此,当程序中存在的master节点出现了故障,此时由程序运行中的编号最小的节点作为master节点,并利用新产生的master节点来执行上述操作,从而使得多个节点之间产生同步效果,从而提高程序响应速度。
附图说明
37.图1为本发明的master节点的拓扑图。
38.图2为本发明方法流程示意图。
39.图3为本发明实施例1所提供的用于空战飞行模拟器的多节点同步方法的电子设备的结构示意图。
40.图4为本发明步骤一的程序示意图。
41.图5为本发明步骤二中的程序示意图。
42.图6为本发明步骤三中的程序示意图。
具体实施方式
43.下面将结合本发明中的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.实施例1:
45.本实施例提供了一种用于空战飞行模拟器的多节点同步方法,具体包括以下步骤:
46.步骤一:检查master节点,在程序启动时,检查是否有master节点;没有,创建同步timer,自己作为master节点。
47.步骤二:执行逻辑,同步timer每隔1ms,执行程序逻辑;
48.步骤三:发送结果,接收到通知n时,取缓存的网络数据、模拟计算、发送计算结果给其它节点。
49.步骤四:校正时间,master节点收到通知n的时间校正,master发送通知n到非master节点收到有段时间,这段时间设为d ms。因为master所在计算机收到的组播数据不在网络上传输,会导致master节点先收到通知n,如果模拟计算开始的时间点允许d ms的偏差,此种情况可以忽略,否则需要在master收到通知n后,利用延迟操作延迟d ms再做后续操作。
50.另一方面,所述步骤一中检查是否有master节点的检查方法具体为:在2
×
i ms时间内,程序是否接收到通知n,若接收到n,则表示有master节点;若没有接收到n,则表示没有master节点。
51.不得不说的是,所述步骤二中程序逻辑具体如下:
52.a、本节点是master节点,组播通知n给其它节点;
53.b、本节点非master节点,检查多长时间没有接收到通知n,判断时间是否超时:当超时时,自己作为master节点;未超时时,接收到通知n。
54.除此之外,所述步骤三中附加操作,具体为:
55.a、如果自己是master节点,检查通知n内的节点编号是否小于本节点编号:是,本机不再作为master节点;否,本机继续作为master节点;
56.b、如果没有创建同步timer,创建同步timer。
57.进一步的,所述步骤四中延迟操作为:
58.a、i>10ms,调用std::this_thread::sleep_for(duration)实现延迟;
59.b、i≤10ms,添加耗时的冗余操作实现延迟。
60.实施例2
61.本实施例提供了一种用于空战飞行模拟器的多节点同步方法,具体包括以下步骤:
62.步骤一:检查master节点,在程序启动时,检查是否有master节点;发现程序中不存在master节点,开始创建同步timer,并将自己作为master节点。
63.步骤二:执行逻辑,步骤一中产生的同步timer,每隔1ms,执行一次程序逻辑;
64.步骤三:发送结果,程序接收到通知n时,取缓存的网络数据、模拟计算、发送计算结果给其它节点。
65.步骤四:校正时间,master节点收到通知n的时间校正,master发送通知n到非master节点收到有段时间,这段时间设为d ms。因为master所在计算机收到的组播数据不在网络上传输,会导致master节点先收到通知n,在master收到通知n后,利用延迟操作延迟d ms再做后续操作。
66.另一方面,所述步骤一中检查是否有master节点的检查方法具体为:在2
×
i ms时间内,程序是否接收到通知n,若接收到n,则表示有master节点;若没有接收到n,则表示没有master节点。
67.不得不说的是,所述步骤二中程序逻辑具体如下:
68.a、本节点是master节点,组播通知n给其它节点;
69.b、本节点非master节点,检查多长时间没有接收到通知n,判断时间是否超时:当超时时,自己作为master节点;未超时时,接收到通知n。
70.除此之外,所述步骤三中附加操作,具体为:
71.a、如果自己是master节点,检查通知n内的节点编号是否小于本节点编号:是,本机不再作为master节点;否,本机继续作为master节点;
72.b、如果没有创建同步timer,创建同步timer。
73.进一步的,所述步骤四中延迟操作为:
74.a、i>10ms,调用std::this_thread::sleep_for(duration)实现延迟;
75.b、i≤10ms,添加耗时的冗余操作实现延迟。
76.实施例3:
77.本实施例提供一种存储介质,所述存储介质存储有计算机可执行指令,其包含用于执行上述空战飞行模拟器的多节点同步方法的程序,该计算机可执行指令可执行实施例1中用于空战飞行模拟器的多节点同步方法。
78.其中,所述存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
79.实施例4:
80.图3示出了本发明的另一个实施例的一种电子设备的结构框图。所述电子设备1100可以是具备计算能力的主机服务器、个人计算机pc、或者可携带的便携式计算机或终端等。本发明具体实施例并不对电子设备的具体实现做限定。
81.该电子设备1100包括至少一个处理器(processor)1110、通信接口(communications interface)1120、存储器(memory array)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
82.通信接口1120用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。
83.处理器1110用于执行程序。处理器1110可能是一个中央处理器cpu,或者是专用集成电路asic(application specific integrated circuit),或者是被配置成实施本发明
实施例的一个或多个集成电路。
84.存储器1130用于可执行的指令。存储器1130可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。存储器1130存储的指令可被处理器1110执行,以使处理器1110能够执行上述任意方法实施例中的空战飞行模拟器的多节点同步方法。
85.通过实施例1-4可以看出,利用本发明设计的程序逻辑,可以在程序节点中提供了一个master节点,利用master节点的特性,master节点会每隔1ms会向其它节点发送开始模拟计算的通知n,其它节点在收到该通知后,取缓存的网络数据进行模拟计算,并将模拟计算后的结果发送给其它节点,不但如此,当程序中存在的master节点出现了故障,此时由程序运行中的编号最小的节点作为master节点,并利用新产生的master节点来执行上述操作,从而使得多个节点之间产生同步效果,从而提高程序响应速度。
86.最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1