分布式系统中通信协议版本号的更新技术方案

技术编号:25697025 阅读:63 留言:0更新日期:2020-09-18 21:09
本发明专利技术提供一种分布式系统更新通信协议版本号的方法,该方法包括:生成修改前的代码版本和修改后的代码版本各自的语法结构表示,分别定义为第一和第二语法结构表示;获取第一和第二语法结构表示中各自的通信协议数据结构,分别定义为第一和第二通信数据结构;基于第一和第二通信数据结构的所有语法信息分别生成第一和第二文本消息;计算第一和第二文本消息各自的唯一性标识,分别定义为第一和第二唯一性标识;比较第一和第二唯一性标识,并在第一和第二唯一性标识不同时更新预设通信协议的版本号。根据本发明专利技术实施例的分布式系统更新通信协议版本号的方法大大提高了分布式系统发现通信协议发生变化的可靠性和更新通信协议版本号的效率。

【技术实现步骤摘要】
【国外来华专利技术】分布式系统中通信协议版本号的更新
本专利技术总地涉及分布式系统的控制
,更具体地涉及一种分布式系统中通信协议版本号的更新。
技术介绍
分布式系统是建立在网络之上的软件系统,其通常包括多个模块,这些模块之间要通过网络采用一定的通信协议进行通信。为了保证通信的准确性,各模块所采用的通信协议应当保持一致。在现有的分布式系统中,当通信协议发生变化时,是以人工的方式更新通信协议版本,在通信协议中带上协议版本号,在接收方校验版本号。这样的方法存在如下缺点:(1)容易遗漏:当通信协议发生变化肉眼不易区分,例如:某个通信协议包含多级数据结构嵌套,当嵌套层的数据结构发生变化时,维护者非常容易遗漏该变化;(2)效率低下:当分布式系统中存在数量较多的模块时,靠人工方式更新通信协议版本效率非常低下。因此,需要提供一种分布式系统中自动更新通信协议版本号的方案。
技术实现思路
为了解决上述问题而提出了本专利技术。根据本专利技术一方面,提供了一种分布式系统更新通信协议版本号的方法,所述分布式系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述方法包括:生成修改前的代码版本和修改后的代码版本各自的语法结构表示,分别定义为第一语法结构表示和第二语法结构表示;获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构,分别定义为第一通信数据结构和第二通信数据结构;基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息;计算所述第一文本消息和所述第二文本消息各自的唯一性标识,分别定义为第一唯一性标识和第二唯一性标识;以及比较所述第一唯一性标识和所述第二唯一性标识,并在所述第一唯一性标识和所述第二唯一性标识不同时更新所述预设通信协议的版本号。在本专利技术的一个实施例中,所述修改前的代码版本和所述修改后的代码版本中各自的通信协议数据结构均基于预设结构体而生成,所述预设结构体符合预设命名规范。在本专利技术的一个实施例中,所述获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构包括:解析所述第一语法结构表示和所述第二语法结构表示,以查找符合所述预设命名规范的数据结构;以及获取符合所述预设命名规范的数据结构的首成员的数据类型,以得到所述通信协议数据结构。在本专利技术的一个实施例中,所述生成修改前的代码版本和修改后的代码版本各自的语法结构表示,包括:生成修改前的代码版本和修改后的代码版本各自的抽象语法树。在本专利技术的一个实施例中,所述基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息,包括:将所述第一通信数据结构的所有语法信息组合成第一字符串,并将所述第二通信数据结构的所有语法信息组合成第二字符串。在本专利技术的一个实施例中,所述所有语法信息包括通信数据结构的自身信息和子成员信息。在本专利技术的一个实施例中,所述自身信息包括域名信息、数据结构类型信息和占用大小信息。在本专利技术的一个实施例中,所述子成员信息包括子成员名字信息、基本数据类型信息、结构体/枚举/联合体/定义类型的展开信息和占用大小信息。在本专利技术的一个实施例中,所述计算所述第一文本消息和所述第二文本消息各自的唯一性标识,包括:计算所述第一文本消息和所述第二文本消息各自的消息摘要值。在本专利技术的一个实施例中,所述方法基于分散式版本控制软件的钩子脚本来实现。根据本专利技术另一方面,提供了一种自动驾驶系统,所述自动驾驶系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述自动驾驶系统采用上述任一项所述的分布式系统更新通信协议版本号的方法来更新所述预设通信协议的版本号。根据本专利技术再一方面,提供了一种车辆,所述车辆包括上述的自动驾驶系统。根据本专利技术又一方面,提供了一种无人机,所述无人机包括上述的自动驾驶系统。根据本专利技术另一方面,提供了一种计算设备,所述计算设备包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述计算设备采用上述任一项所述的分布式系统更新通信协议版本号的方法来更新所述预设通信协议的版本号。根据本专利技术另一方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行上述任一项所述的分布式系统更新通信协议版本号的方法。根据本专利技术实施例的分布式系统更新通信协议版本号的方法针对修改前后的代码版本生成语法结构表示,从所生成的语法结构表示中获取通信协议数据结构,并通过比较通信协议数据结构的唯一性标识来确定通信协议是否发生变化,如果发生变化则自动更新通信协议版本号,大大提高了分布式系统发现通信协议发生变化的可靠性和更新通信协议版本号的效率,有效解决了人工方式中容易遗漏和效率低下的问题。附图说明图1示出根据本专利技术实施例的分布式系统更新通信协议版本号的方法的示意性流程图;图2示出根据本专利技术实施例的分布式系统更新通信协议版本号的方法的更具体的流程图;图3示出采用根据本专利技术实施例的分布式系统更新通信协议版本号的方法的示例计算设备的示意性结构框图;图4示出采用根据本专利技术实施例的分布式系统更新通信协议版本号的方法的示例自动驾驶系统的示意性结构框图;以及图5示出采用根据本专利技术实施例的分布式系统更新通信协议版本号的方法的示例无人机的示意性结构框图。具体实施方式为了使得本专利技术的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本专利技术的示例实施例。显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,应理解,本专利技术不受这里描述的示例实施例的限制。基于本专利技术中描述的本专利技术实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本专利技术的保护范围之内。在下文的描述中,给出了大量具体的细节以便提供对本专利技术更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本专利技术可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本专利技术发生混淆,对于本领域公知的一些技术特征未进行描述。应当理解的是,本专利技术能够以不同形式实施,而不应当解释为局限于这里提出的实施例。相反地,提供这些实施例将使公开彻底和完全,并且将本专利技术的范围完全地传递给本领域技术人员。在此使用的术语的目的仅在于描述具体实施例并且不作为本专利技术的限制。在此使用时,单数形式的“一”、“一个”和“所述/该”也意图包括复数形式,除非上下文清楚指出另外的方式。还应明白术语“组成”和/或“包括”,当在该说明书中使用时,确定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多其它的特征、整数、步骤、操作、元件、部件和/或组的存在或添加。在此使用时,术语“和/或”包括相关所列项目的任何及所有组合。为了彻底理解本专利技术,将在下列的描述中提出详细的步骤以及详细的结构,以便阐释本专利技术提出的技术方案。本专利技术的较佳实施例详细描述如下,然而除了这些详细描本文档来自技高网...

【技术保护点】
1.一种分布式系统更新通信协议版本号的方法,所述分布式系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述方法包括:/n生成修改前的代码版本和修改后的代码版本各自的语法结构表示,分别定义为第一语法结构表示和第二语法结构表示;/n获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构,分别定义为第一通信数据结构和第二通信数据结构;/n基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息;/n计算所述第一文本消息和所述第二文本消息各自的唯一性标识,分别定义为第一唯一性标识和第二唯一性标识;以及/n比较所述第一唯一性标识和所述第二唯一性标识,并在所述第一唯一性标识和所述第二唯一性标识不同时更新所述预设通信协议的版本号。/n

【技术特征摘要】
【国外来华专利技术】1.一种分布式系统更新通信协议版本号的方法,所述分布式系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述方法包括:
生成修改前的代码版本和修改后的代码版本各自的语法结构表示,分别定义为第一语法结构表示和第二语法结构表示;
获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构,分别定义为第一通信数据结构和第二通信数据结构;
基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息;
计算所述第一文本消息和所述第二文本消息各自的唯一性标识,分别定义为第一唯一性标识和第二唯一性标识;以及
比较所述第一唯一性标识和所述第二唯一性标识,并在所述第一唯一性标识和所述第二唯一性标识不同时更新所述预设通信协议的版本号。


2.根据权利要求1所述的方法,其特征在于,所述修改前的代码版本和所述修改后的代码版本中各自的通信协议数据结构均基于预设结构体而生成,所述预设结构体符合预设命名规范。


3.根据权利要求2所述的方法,其特征在于,所述获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构包括:
解析所述第一语法结构表示和所述第二语法结构表示,以查找符合所述预设命名规范的数据结构;以及
获取符合所述预设命名规范的数据结构的首成员的数据类型,以得到所述通信协议数据结构。


4.根据权利要求1所述的方法,其特征在于,所述生成修改前的代码版本和修改后的代码版本各自的语法结构表示,包括:
生成修改前的代码版本和修改后的代码版本各自的抽象语法树。


5.根据权利要求1所述的方法,其特征在于,所述基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息,包括:
将所述第一通信数据结构的所有语法信息组合成第一字符串,并将所述第二通信数据结构的所有语法信息组合成第二字符串。


6.根据权利要求5所述的方法,其特征在于,所述所有语法信息包括通信数据结构的自身信息和子成员信息。


7.根据权利要求6所述的方法,其特征在于,所述自身信息包括域名信息、数据结构类型信息和占用大小信息。


8.根据权利要求6所述的方法,其特征在于,所述子成员信息包括子成员名字信息、基本数据类型信息、结构体/枚举/联合体/定义类型的展开信息和占用大小信息。


9.根据权利要求1所述的方法,其特征在于,所述计算所述第一文本消息和所述第二文本消息各自的唯一性标识,包括:
计算所述第一文本消息和所述第二文本消息各自的消息摘要值。


10.根据权利要求1-9中的任一项所述的方法,其特征在于,所述方法基于分散式版本控制软件的钩子脚本来实现。


11.一种自动驾驶系统,其特征在于,所述自动驾驶系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述自动驾驶系统采用权利要求1-10中的任一项所述的分布式系统更新通信协议版本号的方法来更新所述预设通信协议的版本号。


12.一种车辆,其特征在于,所述车辆包括自动驾驶系统,所述自动驾驶系统包括多个模块,所述多个模块之间通过预设通信协议进行通信,所述预设通信协议的版本号通过包括以下步骤的方法来更新,所述步骤包括:
生成修改前的代码版本和修改后的代码版本各自的语法结构表示,分别定义为第一语法结构表示和第二语法结构表示;
获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构,分别定义为第一通信数据结构和第二通信数据结构;
基于所述第一通信数据结构的所有语法信息生成第一文本消息,并基于所述第二通信数据结构的所有语法信息生成第二文本消息;
计算所述第一文本消息和所述第二文本消息各自的唯一性标识,分别定义为第一唯一性标识和第二唯一性标识;以及
比较所述第一唯一性标识和所述第二唯一性标识,并在所述第一唯一性标识和所述第二唯一性标识不同时更新所述预设通信协议的版本号。


13.根据权利要求12所述的车辆,其特征在于,所述修改前的代码版本和所述修改后的代码版本中各自的通信协议数据结构均基于预设结构体而生成,所述预设结构体符合预设命名规范。


14.根据权利要求13所述的车辆,其特征在于,所述获取所述第一语法结构表示和所述第二语法结构表示中各自的通信协议数据结构包括:
解析所述第一语法结构表示和所述第二语法结构表示,以查找符合所述预设命名规范的数据结构;以及
获取符合所述预设命名规范的数据结构的首成员的数据类型,以得到所述通信协议数据结构。


15.根据权利要求12所述的车辆,其特征在于,所述生成修改前的代码版本和修改后的代码版本各自的语法结构...

【专利技术属性】
技术研发人员:曾健荣王斌周青松
申请(专利权)人:深圳市大疆创新科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1