一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

主备函数同步执行和参数传输的方法及装置与流程

2022-03-04 23:01:41 来源:中国专利 TAG:


1.本发明涉及计算机技术技术领域,具体涉及一种主备函数同步执行和参数传输的方法及装置。


背景技术:

2.请参阅图1和图2,在局域网主备网络结构中,上机和下机往往要同步执行相同的函数代码。一般的设计是将要执行的函数封装成命令对象,在上端序列化后通过网络发送到下端,下端接收命令后进行反序列化,转换成命令对象并执行。
3.显然,下端程序为了做到真正的下份功能,所有的命令输出结果必须和上端完全一致,那么这就要求命令的输入也是一致的。换句话说,命令的输入数据也必须由上端和命令一起发送到下端。但是,命令在执行过程中还可能需要动态计算一些局部参数,譬如可能需要获取实时的cpu时,这些局部参数是无法事先计算出来并作为命令入参传给命令函数的,更加不可能传递给下端程序。
4.请参阅图3,为了解决这种局部参数同步问题,一般的做法是将syncfun拆解成了syncfuna和syncfunb两个子命令,这样syncfun中的局部参数lp_1和lp_2就可以在syncfuna和syncfuncb执行之前计算出来,并随着命令序列化数据传输到下端,从而完成主备参数的统一。
5.但是将命令进行拆解的方法破坏了业务逻辑代码的完整性和流畅性,使得代码编写和阅读比较困难。
6.综上,现有技术具有以下缺点:
7.1.业务函数逻辑被拆解得很零碎,不利于编写和理解;
8.2.不方便扩展业务功能。当需要修改已有业务逻辑时,往往会伴随着新的命令拆解,不仅增加了开发工作量,业务逻辑则会变得更加凌乱,增加了后期维护成本。


技术实现要素:

9.为此,本发明实施例提供一种主备函数同步执行和参数传输的方法及装置,以解决现有技术存在的将命令进行拆解的方法破坏了业务逻辑代码的完整性和流畅性,使得代码编写和阅读比较困难且不方便扩展业务功能的问题。
10.为了实现上述目的,本发明实施例提供如下技术方案:
11.第一方面,一种主备函数同步执行和参数传输的方法,包括:
12.将syncfunc()序列化发送给下端;
13.在本地开始执行同步函数对象syncfun();所述下端接收到序列化后的所述syncfunc()后进行反序列化,构造同等函数对象syncfun()并执行;
14.局部参数lp通过同步函数paramsync()返回;
15.调用paramsync中的lambda算子计算返回值;
16.将所述返回值赋值给所述局部参数lp;
17.将所述局部参数lp发送到所述下端;所述下端同时执行paramsync(),所述paramsync()判断当前网络是否连接,若连接则通过网络接受所述局部参数lp。
18.进一步的,所述syncfunc()被序列化成网络命令。
19.进一步的,上端和所述下端之间通过tcp/ip通信。
20.进一步的,所述syncfunc()中至少包括两个paramsync()。
21.进一步的,上端同时具有自己的进度表和所述下端的进度表。
22.进一步的,若所述下端与上端之间未建立网络,所述下端所有参数都在本地进行计算。
23.第二方面,一种主备函数同步执行和参数传输的装置,包括:
24.序列化模块,用于将syncfunc()序列化成网络命令;
25.执行模块,用于在本地执行同步函数对象syncfun();
26.返回模块,用于将局部参数lp通过同步函数paramsync()返回;
27.计算模块,用于调用paramsync中的lambda算子计算返回值;
28.赋值模块,用于将所述返回值赋值给所述局部参数lp;
29.发送模块,用于将所述网络命令和所述局部参数lp发送到下端。
30.进一步的,还包括:通信模块,用于建立与下端之间的tcp/ip通信。
31.第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述主备函数同步执行和参数传输的方法步骤。
32.第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述主备函数同步执行和参数传输的方法步骤。
33.本发明至少具有以下有益效果:提供一种主备函数同步执行和参数传输的方法及装置,包括将syncfunc()序列化发送给下端;在本地开始执行同步函数对象syncfun();下端接收到序列化后的syncfunc()后进行反序列化,构造同等函数对象syncfun()并执行;局部参数lp通过同步函数paramsync()返回;调用paramsync中的lambda算子计算返回值;将返回值赋值给局部参数lp;将局部参数lp发送到下端;下端同时执行paramsync(),paramsync()判断当前网络是否连接,若连接则通过网络接受局部参数lp;本发明提供的主备函数同步执行和参数传输的方法及装置,可以编写更加自然易懂的代码逻辑,而使用者不用关心底层的同步逻辑。一个函数就可以实现一个完整的业务逻辑,不用拆解封装成成零碎的网络命令来执行,而且还具备很好的扩展性。
附图说明
34.为了更清楚地说明现有技术以及本发明,下面将对现有技术以及本发明实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其它的附图。
35.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均
应仍落在本发明所揭示的技术内容能涵盖的范围内。
36.图1为现有技术中的第一种局域网主备网络结构示意图;
37.图2为现有技术中的第二种局域网主备网络结构示意图;
38.图3为现有技术中的命令拆解结构示意图;
39.图4为本发明实施例提供的主备函数同步执行和参数传输的方法流程图;
40.图5为本发明实施例提供的主备函数同步执行和参数传输的方法结构示意图。
具体实施方式
41.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
42.在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)旨在区别指代的对象。对于具有时序流程的方案,这种术语表述方式不必理解为描述特定的顺序或先后次序,对于装置结构的方案,这种术语表述方式也不存在对重要程度、位置关系的区分等。
43.此外,术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设下不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设下固有的其它步骤或单元,或者基于本发明构思进一步的优化方案所增加的步骤或单元。
44.请参阅图4,本发明的实施例提供一种主备函数同步执行和参数传输的方法,包括:
45.s1:将syncfunc()序列化发送给下端;
46.具体的,上端将syncfunc()序列化成网络命令发送给下端。
47.s2:在本地开始执行同步函数对象syncfun();下端接收到序列化后的syncfunc()后进行反序列化,构造同等函数对象syncfun()并执行;
48.具体的,上端将syncfunc()序列化成网络命令发送给下端后在本地开始执行同步函数对象syncfun(),下端接收到上端发送的命令之后进行反序列化并构造出与上端同等的函数对象syncfunc()并执行。
49.s3:局部参数lp通过同步函数paramsync()返回;
50.s4:调用paramsync中的lambda算子计算返回值;
51.s5:将所述返回值赋值给所述局部参数lp;
52.s6:将所述局部参数lp发送到所述下端;所述下端同时执行paramsync(),所述paramsync()判断当前网络是否连接,若连接则通过网络接受所述局部参数lp。
53.请参阅图5,具体的,局部参数lp通过一个同步函数paramsync()返回,主端直接调用paramsync中的lambda算子计算出一个返回值,然后计算出的返回值赋值给局部参数lp,并将此参数发送到下端;同时,下端执行paramsync(),paramsync()判断当前网络连接关系,发现自己被上端(主端)连接时,就不会像上端一样调用lambda算子计算参数,而是通过网络接受主端计算的值。
54.syncfun()的整个函数体中可能会有多个paramsync()调用,每个paramsync()代表这syncfun()不同的执行进度。各端都会维护一个进度表,并实时通报给上级。也就是说,上端在拥有自己的进度表时,也会拥有所有下端的进度表。这样,上端(主端)就能检测所有下端(备端)当前的执行进度。如果所有端都执行到了同样的进度,上端就执行lambda算子计算参数,并发送给其他端,其他端收到参数之后,这个进度就算同步达成,各端程序继续往下执行,直到遇到下一个paramsync()的调用,然后重复上述同步逻辑。
55.需要说明的是,上端和下端代码在执行过程中通过tcp/ip通信,在代码执行的指定位置进行进度同步和必要的参数传输。
56.当多端之间没有建立网络连接时,各端执行逻辑和主端一样,所有参数都在本地进行计算。
57.本发明的实施例提供一种主备函数同步执行和参数传输的装置,包括:
58.序列化模块,用于将syncfunc()序列化成网络命令;
59.执行模块,用于在本地执行同步函数对象syncfun();
60.返回模块,用于将局部参数lp通过同步函数paramsync()返回;
61.计算模块,用于调用paramsync中的lambda算子计算返回值;
62.赋值模块,用于将所述返回值赋值给所述局部参数lp;
63.发送模块,用于将所述网络命令和所述局部参数lp发送到下端。
64.主备函数同步执行和参数传输的装置还包括:通信模块,用于建立与下端之间的tcp/ip通信。
65.关于主备函数同步执行和参数传输的装置的具体限定可以参见上文中对于主备函数同步执行和参数传输的方法的限定,在此不再赘述。上述主备函数同步执行和参数传输的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
66.本发明的实施例提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现主备函数同步执行和参数传输的方法步骤。
67.本发明的实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现主备函数同步执行和参数传输的方法步骤。
68.以上几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
69.以上实施例的各技术特征可以进行任意的组合(只要这些技术特征的组合不存在矛盾),为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述;这些未明确写出的实施例,也都应当认为是本说明书记载的范围。
70.上文中通过一般性说明及具体实施例对本发明作了较为具体和详细的描述。应当指出的是,在不脱离本发明构思的前提下,显然还可以对这些具体实施例作出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献