掌桥专利:专业的专利平台
掌桥专利
首页

微服务接口的发布方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 11:26:00


微服务接口的发布方法、装置、电子设备和存储介质

技术领域

本发明涉及云计算技术领域,尤其涉及一种微服务接口的发布方法、装置、电子设备和存储介质。

背景技术

目前,由于企业业务不断增长,业务系统也向微服务模式进行转变,导致微服务接口数量相应增长,对微服务接口的相关属性要求也相应提高。

在现有技术中,在业务系统转变为微服务模式后,服务数量相对于传统的业务系统出现了几何级数的增加,微服务接口的数量也随之同步增加。由于在微服务模式下,接口作为描述服务间调用契约载体,因此对于其设计规范性、定义稳定性和测试完备性等方面的属性有更高的要求,而微服务接口的发布对于上述属性有直接影响,但目前的微服务接口发布方式不能满足需求。

由此可知,目前亟需一种新的发布方式实现对微服务接口的发布。

发明内容

有鉴于此,本发明实施例提供一种微服务接口的发布方法、装置、电子设备和存储介质,以解决现有技术不能满足微服务模式下对微服务接口发布的高要求的问题。

为实现上述目的,本发明实施例提供如下技术方案:

本发明实施例第一方面公开了一种微服务接口的发布方法,包括:

对于输入的以接口定义语言IDL描述的微服务接口定义进行校验,确定该微服务接口是微服务新建接口还是微服务升级接口;

若确定为所述微服务新建接口,校验所述微服务新建接口是否有效;

若确定为所述微服务升级接口,校验所述微服务升级接口是否有效且兼容;

如果所述微服务新建接口有效或者所述微服务升级接口有效且兼容,将所述微服务新建接口或者所述微服务升级接口作为待处理微服务接口;

将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为程序设计语言源代码SDK包;

对所述SDK包进行审核,并将审核通过的所述SDK包发布至预定义的软件仓库。

可选的,所述对于输入的以接口定义语言IDL描述的微服务接口定义进行校验,确定该微服务接口是微服务新建接口还是微服务升级接口,包括:

获取所述接口定义语言IDL描述中的业务系统名、微服务接口名和微服务接口版本字段值;

利用所述业务系统名确定具有相同业务系统名的业务系统,并基于所述微服务接口名检索所述业务系统存储的所有微服务接口,并确定是否存在接口名与所述微服务接口匹配的微服务接口;

若未检索到匹配的微服务接口,确定所述微服务接口为微服务新建接口;

若检索到匹配的微服务接口,比较所述匹配的微服务接口中的所有微服务接口版本字段值是否小于所述微服务接口版本字段值;

若均小于,确定所述微服务接口为微服务升级接口。

可选的,所述校验所述微服务新建接口是否有效,包括:

读取所述IDL描述的微服务新建接口定义,提取所述微服务新建接口定义中的特征点,所述特征点至少包括由数据结构定义的字段的字段名称和字段类型,以及由方法定义的参数的参数名称和参数类型;

查询预先设置的数据字典中是否存在与所述字段名称相同的名称,和/或与所述参数名称相同的名称,所述数据字典包括预先设置有名称和类型的语义;

若存在与所述字段名称相同的名称,校验具有相同名称的字段的字段类型与语义的类型是否一致,和/或存在与所述参数名称相同的名称,校验具有相同名称的参数的参数类型与语义的类型是否一致;

若一致,确定所述微服务新建接口有效。

可选的,所述校验所述微服务升级接口是否有效且兼容,包括:

读取所述IDL描述的微服务升级接口定义,提取所述微服务升级接口定义中的特征点,所述特征点至少包括由数据结构定义的字段的字段名称和字段类型,以及由方法定义的参数的参数名称和参数类型;查询预先设置的数据字典中是否存在与所述字段名称相同的名称,和/或与所述参数名称相同的名称,所述数据字典包括预先设置有名称和类型的语义;

若存在与所述字段名称相同的名称,校验具有相同名称的字段的字段类型与语义的类型是否一致,和/或存在与所述参数名称相同的名称,校验具有相同名称的参数的参数类型与语义的类型是否一致;

若一致,确定所述微服务升级接口有效,将所述匹配的微服务接口中全部由数据结构定义的字段与所述微服务升级接口定义中全部由数据结构定义的字段进行比较,以及将所述匹配的微服务接口中方法定义的参数和所述微服务升级接口定义中方法定义的参数进行比较;

若均满足比较条件,确定所述微服务升级接口与所述匹配的微服务接口兼容;

若任一不满足比较条件,确定所述微服务升级接口与所述匹配的微服务接口不兼容;

其中,所述比较条件包括:

查询所述匹配的微服务接口中全部由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称是否存在于所述微服务升级接口定义中;

若存在,校验所述相同名称的字段的字段类型以及所述相同名称的参数的参数类型是否完全一致。

可选的,所述将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为程序设计语言源代码SDK包,包括:

获取所述待处理微服务接口的待处理微服务接口定义;

根据预设的输出程序设计语言及预设的转换规则,将所述待处理微服务接口定义转换为对应程序设计语言源代码;

将所述源代码编译为程序设计语言源代码SDK包。

可选的,所述将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为程序设计语言源代码SDK包之后,还包括:

将所述SDK包通过非正式的软件仓库发布至预设的正式软件仓库。

可选的,所述对所述SDK包进行审核,并将审核通过的所述SDK包发布至预定义的软件仓库,包括:

获取所述以接口定义语言IDL描述的微服务接口定义;

对所述微服务接口实施自动审核和/或人工审核;

若所述微服务接口通过自动审核和人工审核,将所述SDK包发布到预定义的正式软件仓库中。

本发明实施例第二方面公开了一种微服务接口的发布装置,包括接口定义校验组件、接口程序设计语言源代码SDK转换组件、接口审核组件和接口发布组件;

接口定义校验组件,用于对于输入的以接口定义语言IDL描述的微服务接口定义进行校验,确定该微服务接口是微服务新建接口还是微服务升级接口,若确定为所述微服务新建接口,校验所述微服务新建接口是否有效,若确定为所述微服务升级接口,校验所述微服务升级接口是否有效且兼容,如果所述微服务新建接口有效或者所述微服务升级接口有效且兼容,将所述微服务新建接口或者所述微服务升级接口作为待处理微服务接口;

接口程序设计语言源代码SDK转换组件,用于将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为程序设计语言源代码SDK包;

接口审核组件,用于对所述SDK包进行审核;

接口发布组件,用于将审核通过的所述SDK包发布至预定义的软件仓库。

本发明实施例第三方面公开了一种电子设备,所述电子设备用于运行程序,其中,所述程序运行时执行如本发明实施例第一方面公开的微服务接口的发布方法。

本发明实施例第四方面公开了一种计算机存储介质,所述存储介质包括存储程序,其中,在所述程序运行时控制所述存储介质所在设备执行如本发明实施例第一方面公开的微服务接口的发布方法。

基于上述本发明实施例提供的一种微服务接口的发布方法、装置、电子设备和存储介质,所述方法包括:对于输入的以接口定义语言IDL描述的微服务接口定义进行校验,确定该微服务接口是微服务新建接口还是微服务升级接口;若确定为所述微服务新建接口,校验所述微服务新建接口是否有效;若确定为所述微服务升级接口,校验所述微服务升级接口是否有效且兼容;如果所述微服务新建接口有效或者所述微服务升级接口有效且兼容,将所述微服务新建接口或者所述微服务升级接口作为待处理微服务接口;将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为程序设计语言源代码SDK包;对所述SDK包进行审核,并将审核通过的所述SDK包发布至预定义的软件仓库。在本发明实施例中,通过对输入的以IDL描述的微服务接口定义进行校验,确定以IDL描述的微服务接口是新建接口还是升级接口,校验微服务新建接口的有效性和微服务升级接口的兼容性,将通过校验的微服务接口定义转换为SDK包,对SDK包进行审核,并将通过审核的SDK包发布到预定义的软件仓库,从而达到进行微服务接口发布时,实现满足微服务模式下对微服务接口发布的高要求的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种微服务接口发布方法的流程示意图;

图2为本发明实施例提供的一种确定微服务接口是微服务新建接口还是微服务升级接口的流程示意图;

图3为本发明实施例提供的一种校验微服务新建接口是否有效的流程示意图;

图4为本发明实施例提供的一种校验微服务升级接口是否兼容的流程示意图;

图5为本发明实施例提供的以IDL转换为SDK包的示例图;

图6为本发明实施例提供的对接口定义的有效性校验和兼容性校验的示例图;

图7为本发明实施例提供的一种微服务接口发布装置的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由背景技术可知,在微服务模式下,接口作为描述服务间调用契约载体,因此对于其设计规范性、定义稳定性和测试完备性等方面了属性有更高的要求,而微服务接口的发布对于上述属性有直接影响,但目前的微服务接口发布方式不能满足需求。

因此,本发明实施例提供一种微服务接口的发布方法、装置、电子设备和存储介质,在本发明实施例中,通过对输入的以IDL(Interface Definition Language,接口定义语言)描述的微服务接口定义进行校验,确定以IDL描述的微服务接口是新建接口还是升级接口,校验微服务新建接口的有效性和微服务升级接口的兼容性,将通过校验的微服务接口定义转换为SDK(Software Development Kit,程序设计语言源代码)包,对SDK包进行审核,并将通过审核的SDK包发布到预定义的软件仓库,从而达到进行微服务接口发布时,实现满足微服务模式下对微服务接口发布的高要求的目的。

参见图1,为本发明实施例提供的一种微服务接口发布方法的流程示意图。所述微服务接口的发布方法包括以下步骤:

步骤S101:对于输入的以IDL描述的微服务接口定义进行校验,若微服务接口是微服务新建接口,执行步骤S102,若微服务接口是微服务升级接口,执行步骤S103,若微服务接口不是微服务新建接口或微服务升级接口,则结束发布流程。

在步骤S101中,所述校验是对读取到的IDL描述中的业务系统名、微服务接口名和微服务接口版本字段值进行校验。

在具体实现步骤S101的过程中,根据所述业务系统名,确定具有相同业务系统名的业务系统,基于所述微服务接口名检索所述业务系统存储的所有微服务接口,判断该微服务接口是否为微服务新建接口,若确定该微服务接口是微服务新建接口,则执行步骤S102,若确定该微服务接口不是微服务新建接口,基于所述微服务接口版本字段值判断该微服务接口是否为微服务升级接口,若确定该接口为微服务升级接口,则执行步骤S103,若确定该接口既不是微服务新建接口也不是微服务升级接口,则结束发布流程。

需要说明的是,所述匹配的微服务接口指的是具有相同的所述业务系统名的业务系统中接口名与所述以IDL描述的微服务接口相同的微服务接口。

为了更好的理解对于输入的以IDL描述的微服务接口定义进行校验的过程,如图2所示,为本发明实施例提供的一种确定微服务接口是微服务新建接口还是微服务升级接口的流程示意图:

步骤S201:获取IDL描述中的业务系统名、微服务接口名和微服务接口版本字段值。

步骤S202:利用业务系统名确定具有相同业务系统名的业务系统,并基于所述微服务接口名检索所述业务系统存储的所有微服务接口。

步骤S203:确定是否存在接口名与所述微服务接口匹配的微服务接口,若不存在,确定所述微服务接口为微服务新建接口,若存在,执行步骤S204。

在具体实现步骤S203的过程中,根据获取到的所述微服务接口名检索所述业务系统存储的所有微服务接口,判断该微服务接口是否为微服务新建接口。若确定该微服务接口是微服务新建接口,说明不存在接口名与所述微服务接口匹配的微服务接口;若确定该微服务接口不是微服务新建接口,说明存在接口名与所述微服务接口匹配的微服务接口,则执行步骤S204。

步骤S204:比较匹配的微服务接口中的所有微服务接口版本字段值是否小于所述微服务接口版本字段值,若均小于,确定所述微服务接口为微服务升级接口,若任一大于,确定所述微服务接口不是微服务升级接口。

在具体实现步骤S204的过程中,根据获取到的IDL描述中的微服务接口名和微服务接口版本字段值,比较所述具有相同接口名的微服务接口中的所有微服务接口版本字段值与所述以IDL描述的微服务接口版本字段值的大小。若确定均小于,说明所述具有相同接口名的微服务接口中不存在微服务接口版本字段值大于所述以IDL描述的微服务接口版本字段值,则确定所述微服务接口为微服务升级接口;若确定任一大于,说明所述具有相同接口名的微服务接口中至少存在一个微服务接口版本字段值大于所述以IDL描述的微服务接口版本字段值,则确定所述微服务接口不是微服务升级接口。

步骤S102:校验微服务新建接口是否有效,若确定有效,执行步骤S104,若确定无效,则结束发布流程。

在步骤S102中,所述校验是对读取到的IDL描述的微服务接口定义中提取到的微服务接口定义中的特征点进行校验。

其中,所述特征点包括但不限于由数据结构定义的字段的字段名称和字段类型,以及由方法定义的参数的参数名称和参数类型。

在具体实施步骤S102的过程中,根据对输入的以接口定义语言IDL描述的微服务接口定义的校验,确定该微服务接口是微服务新建接口,判断该微服务新建接口是否有效,若确定该微服务新建接口有效,则执行步骤S104,若确定该微服务新建接口无效,则结束发布流程。

为了更好的理解校验微服务新建接口是否有效的过程,如图3所示,为本发明实施例提供的一种校验微服务新建接口是否有效的流程示意图:

步骤S301:读取IDL描述的微服务新建接口定义,提取微服务新建接口定义中的特征点。

在具体实现步骤S301的过程中,根据所读取到的IDL描述的微服务新建接口定义,从微服务新建接口定义中提取特征点。

步骤S302:查询预先设置的数据字典中是否存在与字段名称相同的名称,和/或与参数名称相同的名称,若存在,执行步骤S303,若不存在,确定微服务新建接口无效。

在步骤S302中,所述数据字典的数据字典项中至少包括预先设置有名称和类型的语义。

在具体实现步骤S302的过程中,根据微服务接口定义中提取出的由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称,检索所述数据字典中的语义。若预先设置的数据字典中存在与所述字段名称具有相同名称的语义,和/或与所述参数名称具有相同名称的语义,则执行步骤S303;若预先设置的数据字典中不存在与所述字段名称具有相同名称的语义,和/或与所述参数名称具有相同名称的语义,则确定该微服务新建接口无效。

步骤S303:校验具有相同名称的字段的字段类型与语义的类型是否一致,和/或校验具有相同名称的参数的参数类型与语义的类型是否一致,若一致,确定微服务新建接口有效,若不一致,确定微服务新建接口无效。

在具体实现步骤S303的过程中,根据所述与数据字典中的语义具有相同名称的字段的字段类型,以及具有相同名称的参数的参数类型,检索所述语义的类型。若具有相同名称的字段的字段类型与语义的类型一致,和/或具有相同名称的参数的参数类型与语义的类型一致,则确定该微服务接口有效;若具有相同名称的字段的字段类型与语义的类型不一致,和/或具有相同名称的参数的参数类型与语义的类型不一致,则确定该微服务新建接口无效。

步骤S103:校验微服务升级接口是否有效且兼容,若确定有效且兼容,执行步骤S104,若确定无效或不兼容,则结束发布流程。

在步骤S103中,所述校验是对读取到的IDL描述的微服务升级接口定义中提取到的微服务升级接口定义中的特征点进行校验。

其中,所述特征点包括但不限于由数据结构定义的字段的字段名称和字段类型,以及由方法定义的参数的参数名称和参数类型。

在具体实现步骤S103的过程中,先校验该微服务升级接口是否有效,如果无效,则结束发布流程,若果有效,再判断微服务升级接口是否兼容,若确定该微服务升级接口兼容,则执行步骤S104,若确定该微服务升级接口不兼容,则结束发布流程。

为了更好的理解校验微服务升级接口是否有效,以及是否兼容的过程,如图4所示,为本发明实施例提供的一种校验微服务升级接口是否有效且兼容的流程示意图:

步骤S401:读取IDL描述的微服务升级接口定义,提取微服务升级接口定义中的特征点。

在具体实现步骤S401的过程中,根据所读取到的IDL描述的微服务升级接口定义,从微服务升级接口定义中提取特征点。

步骤S402:查询预先设置的数据字典中是否存在与所述字段名称相同的名称,和/或与所述参数名称相同的名称,若存在与所述字段名称相同的名称,执行步骤S403,若不存在与所述字段名称相同的名称,确定所述微服务升级接口无效。

在步骤S402中,所述数据字典包括预先设置有名称和类型的语义。

步骤S403:校验具有相同名称的字段的字段类型与语义的类型是否一致,和/或存在与所述参数名称相同的名称,校验具有相同名称的参数的参数类型与语义的类型是否一致,若一致,确定所述微服务升级接口有效,执行步骤S404,若不一致,则确定所述微服务升级接口无效。

需要说明的是,校验该微服务升级接口是否有效的技术手段与校验微服务新建接口是否有效的技术手段相同。

步骤S404:查询匹配的微服务接口中全部由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称是否存在于微服务接口定义中,若存在,执行步骤S405,若不存在,确定微服务升级接口与所述匹配的微服务接口不兼容。

在具体实现步骤S404的过程中,根据微服务升级接口定义中提取出的由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称,查询匹配的微服务接口中全部由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称。

若该微服务升级接口中同名的数据结构内存在所述匹配的微服务接口中数据结构内全部字段定义,对应字段的字段名称相同,以及同名的方法定义中参数的参数名称相同,说明所述微服务接口定义中存在匹配的微服务接口中全部由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称,则执行步骤S405;

若该微服务升级接口中同名的数据结构内不存在所述匹配的微服务接口中数据结构内全部字段定义,对应字段的字段名称不相同,或者同名的方法定义中参数的参数名称不相同,说明所述微服务接口定义中不存在匹配的微服务接口中全部由数据结构定义的字段的字段名称,或者由方法定义的参数的参数名称,则确定微服务升级接口无效且与所述匹配的微服务接口不兼容。

步骤S405:校验相同名称的字段的字段类型以及相同名称的参数的参数类型是否完全一致,若一致,确定微服务升级接口与所述匹配的微服务接口兼容,若不一致,确定微服务升级接口与所述匹配的微服务接口不兼容。

在具体实现步骤S405的过程中,根据所述微服务升级接口中与匹配的微服务接口同名的数据结构内相同名称的字段的字段类型,以及同名的方法定义中相同名称的参数的参数类型,查询所述匹配的微服务接口中同名的数据结构内相同名称的字段的字段类型,以及同名的方法定中相同名称的参数的参数类型。

若所述微服务升级接口与所述匹配的微服务接口同名的数据结构内所述相同名称的字段的字段类型一致,以及所述微服务升级接口与所述匹配的微服务接口同名的方法定义中所述相同名称的参数的参数类型完全一致,则确定所述微服务升级接口与所述匹配的微服务接口兼容;

若所述微服务升级接口与所述匹配的微服务接口同名的数据结构内所述相同名称的字段的字段类型不一致,或者所述微服务升级接口与所述匹配的微服务接口同名的方法定义中所述相同名称的参数的参数类型不一致,则确定所述微服务升级接口与所述匹配的微服务接口不兼容。。

步骤S104:将为服务新建接口或者微服务升级接口作为待处理微服务接口。

步骤S105:将待处理微服务接口以IDL描述的微服务接口定义转换为SDK包。

在具体实现步骤S105的过程中,首先,获取所述待处理微服务接口的待处理微服务接口定义,然后,根据预设的输出程序设计语言及预设的转换规则,对读取到的待处理微服务接口定义进行转换,得到对应程序设计语言源代码,最后,将所述程序设计语言源代码编译为SDK包。

为了更好的理解所述将待处理微服务接口以IDL描述的微服务接口定义转换为SDK包的过程,在此以IDL转换为Java的SDK包代码为例,说明接口SDK包转换组件如何将IDL转换为以程序设计语言源代码书写的SDK包,参见图5,为本发明实施例提供的以IDL转换为SDK包的示例图:

图5中①部分为以YAML格式撰写的IDL描述,如图5中②部分所示通过接口SDK包转换组件获取IDL描述中的特征点包括但不限于接口类型、业务系统名、接口名、接口版本、数据结构定义和方法定义。

其中,所述数据结构定义包括但不限于数据结构名、字段名和字段数据类型,所述方法定义包括但不限于方法名、参数名、参数类型和返回值数据类型。

具体的,如图5中③部分所示,通过接口SDK包转换组件根据图5中①部分所示的IDL描述生成数据结构定义代码,采用“<前缀>.service.<系统名>.<接口版本>.data”作为数据结构部分源代码文件的包名,根据所述数据结构中所有字段的数据类型,为每个数据类型生成一条对应的Java导入语句,以及为每个数据结构定义生成一个同名的Java类,并在所述Java类中为所述数据结构的每个字段生成同名的变量定义、get方法和set方法。

其中,所述“<前缀>”部分在实际实施系统中为一个固定的字符串,如图5中③、④和⑤部分的“com.contoso”。

如图5中③部分所述,以“com.contoso.service.invoke.Comm v4.data”作为数据结构部分源代码文件的包名,由于数据类型中包含了“int”类型和“string”类型,因此生成“import java.lang.Integer”导入语句和“import java.lang.String”导入语句。

需要说明的是,所述变量类型为所述字段在IDL描述中的数据类型对应的Java数据类型。

具体的,如图5中④部分所示,通过接口SDK包转换组件根据图5中①部分所示的IDL描述生成微服务接口使用方需要引入的源代码,采用“<前缀>.service.<系统名>.<接口版本>.consumer”作为接口使用方需要引入的源代码文件的包名,根据所述数据结构中所有字段的数据类型,为每个数据类型生成一条对应的Java导入语句,以及根据所述接口名生成一个同名的Java接口,并在所述Java接口中为所述接口的每个方法生成相应的同步调用式Java方法定义和异步调用式Java方法定义。

如图5④部分所述,以“com.contoso.service.invoke.v4.consumer”作为接口使用方需要引入的源代码文件的包名。

需要说明的是,生成所述同步调用式Java方法定义时,所述Java方法的方法名与所述接口定义中的方法名一致,在所述Java方法的参数中,除了最后一个timeout参数以外,其余参数的名称和位置均与接口定义中同名方法的参数定义一致,所述参数的参数类型和返回值类型则根据所述参数和返回值在所述接口定义中的类型生成相应的Java数据类型;

生成所述异步调用式Java方法定义时,所述Java方法的方法名会在所述接口定义中的方法名前加上“async_”前缀,接口的返回值类型会变更为“Future<同步接口返回值类型>”,其余规则与上述生成所述同步调用式Java方法定义中相应的部分相同,这里不再进行赘述。

如图5中②部分所述,方法1的方法名为“searchFlight”,接口返回值类型为“FlightInfo”。则生成所述异步调用式Java方法定义时,如图5中④部分所示,方法名为“async_searchFlight”,返回值类型变更为“Future”。

具体的,如图5中⑤部分所示,通过接口SDK包转换组件根据图5中①部分所示的IDL描述生成微服务接口提供方需要引入的源代码,采用“<前缀>.service.<系统名>.<接口版本>.producer”作为接口提供方需要引入的源代码文件的包名,根据所述数据结构中所有字段的数据类型,为每个数据类型生成一条对应的Java导入语句,以及根据所述接口名生成一个同名的Java接口,并在所述Java接口中为所述接口的每个方法生成相应的同步调用式Java方法定义和异步调用式Java方法定义。

如图5④部分所述,以“com.contoso.service.invoke.v4.producer”作为接口提供方需要引入的源代码文件的包名。

需要说明的是,在所述Java方法的参数中,除了最后一个callback参数以外,其余参数的名称和位置均与接口定义中同名方法的参数定义一致,所述参数的参数类型和返回值类型则根据所述参数和返回值在所述接口定义中的类型生成相应的Java数据类型。

可选的,在本申请的另一个实施例中,在执行步骤S105之后,还可以包括:

将所述SDK包通过非正式的软件仓库发布至预设的正式软件仓库。

具体的,若企业内部配置有非正式的软件仓库,则将所述SDK包预发布到非正式的软件仓库中,并将所述SDK包通过非正式的软件仓库发布至预设的正式软件仓库中,若企业内部未配置非正式的软件仓库,则提供直接下载接口SDK包的链接。

步骤S106:对SDK包进行审核,并将审核通过的SDK包发布至预定义的软件仓库。

在具体实现步骤S106的过程中,根据获取到的以IDL描述的微服务接口定义,对该微服务接口实施自动审核和/或人工审核,若在结束发布流程之前已将所述SDK包发布到预定义的正式软件仓库,说明该微服务接口通过了自动审核和人工审核,若直接结束发布流程,说明该微服务接口未通过自动审核和人工审核。

需要说明的是,对于任一微服务接口,即可单独实施自动审核,也可单独实施人工审核,或者实施自动审核和人工审核,只要自动审核或人工审核任一给出不通过,那么所述微服务接口定义的架构审核不通过,若均通过,所述微服务接口定义的架构审核通过。

可选的,具体实现自动审核的过程为,首先,预先定义好一组审核规则,然后,通过接口审核组件对每个输入的以IDL描述的微服务接口定义逐条执行所述审核规则,每条规则执行完后都会输出通过或者不通过。

若均通过,则自动审核通过;

若任一不通过,则自动审核不通过。

最后,反馈自动审核的结果。

可选的,具体实现人工审核的过程为,首先,通过接口审核组件将微服务接口定义显示在人机交互界面上,然后,审核人通过点击人机交互界面的方式选择通过或者不通过,最后,通过接口审核组件获取人机交互界面的点击反馈结果,确定结果为通过或者不通过。

所述人机交互界面的设备可以由技术人员进行设置,包括但不限于PC、PAD和手机。

基于本发明实施例公开的微服务接口发布方法,通过对输入的以IDL描述的微服务接口定义进行校验,确定以IDL描述的微服务接口是新建接口还是升级接口,校验微服务新建接口的有效性和微服务升级接口的兼容性,将通过校验的微服务接口定义转换为SDK包,对SDK包进行审核,并将通过审核的SDK包发布到预定义的软件仓库,从而达到进行微服务接口发布时,实现满足微服务模式下对微服务接口发布的高要求的目的。

基于上述发明实施例提供的一种微服务接口发布方法,为了更好的理解所述校验微服务新建接口是否有效,以及校验微服务升级接口是否兼容的过程,参见图6,为本发明实施例提供的对接口定义的有效性校验和兼容性校验的示例图。

在一种可选的实现方式中,校验微服务新建接口是否有效的过程为:

首先,如图6中(1)部分所示为数据字典定义,如图6中(2)和(3)部分所示,通过接口定义校验组件提取出接口定义中的特征点,所述特征点如图6中(3)部分的表左侧两列所示包括所有数据结构中字段的字段名称和字段类型,以及所有方法中参数的参数名称和参数类型。

其中,所述数据字典定义包括数据字典项中语义的名称和类型。

需要说明的是,所述数据字典定义中包括三个语义项,分别是航空公司代码、航班号和座位号。

然后,如图6中(1)和(3)部分的表所示,比较所述数据字典定义中的名称与特征点中的名称是否相同,由于数据字典中不存在与方法“searchFlight”中名称为“hkgs”的参数具有相同名称的语义,说明名称不相同,因此确定该特征点无法通过有效性校验,若名称相同,则比较所述数据字典定义中与所述特征点中相同名称对应的类型是否相同,由于数据字典中“airlineno”的类型为“int”而数据结构“FlightInfo”内“airlineno”的数据类型为“string”,说明类型不相同,因此确定该特征点无法通过有效性校验,由于数据字典中存在与数据结构“FlightInfo”内“airline”具有相同名称和类型的语义,因此确定此特征点通过有效性校验。最后,只有所有特征点均通过有效性校验,才确定该微服务新建接口有效。如图6中(2)和(3)部分所示确定存在两个特征点未通过有效性校验,则确定图6中(2)部分所述微服务新建接口无效,如图6中(4)部分所示确定所有特征点均通过有效性校验,确定图6中(4)部分所述微服务新建接口有效。

在一种可选的实现方式中,校验微服务升级接口是否兼容的过程为:

假设:图6中(4)部分所示的接口定义为旧版本接口定义,图6中(5)和(6)部分所示的接口定义为微服务升级接口定义。

首先,通过接口定义校验组件获取图6中(5)和(6)部分的两个微服务升级接口定义,确认所述微服务升级接口定义中是否存在旧版本接口定义中所有的数据结构名和方法名,如图6中(5)和(6)部分所示都存在(4)部分中所有数据结构名和方法名,若任一不存在,确定所述微服务升级接口不兼容。

然后,查询所述微服务升级接口中同名的数据结构内是否存在旧版本接口中数据结构内全部字段定义,且对应字段的名称和类型是否一致,以及判断所述微服务升级接口中同名的方法定义中参数的参数数量、参数名称、参数类型和返回值的类型与旧版本接口中的是否完全一致,若满足全部判断条件,确定所述微服务升级接口兼容,若不满足任一判断条件,确定所述微服务升级接口不兼容。

最后,如图6中(5)部分所示的微服务升级接口定义满足全部判断条件,说明可通过兼容性校验,则确定(5)部分所示微服务升级接口兼容,如图6中(6)部分所示的微服务升级接口定义中数据结构“FlightInfo”内缺少一个字段“airlineno”,以及方法“searchFlight”中增加了一个参数“airlineno”,不满足两个判断条件,说明无法通过兼容性校验,则确定(6)部分所示的微服务升级接口不兼容。

基于本发明实施例公开的微服务接口发布方法,通过对输入的以IDL描述的微服务接口定义进行校验,确定以IDL描述的微服务接口是新建接口还是升级接口,校验微服务新建接口的有效性和微服务升级接口的兼容性,将通过校验的微服务接口定义转换为SDK包,对SDK包进行审核,并将通过审核的SDK包发布到预定义的软件仓库,从而达到进行微服务接口发布时,实现满足微服务模式下对微服务接口发布的高要求的目的。

基于上述本发明实施例提供的微服务接口的发布方法,本发明实施例还提供了对应的微服务接口发布装置。

参见图7,为本发明实施例提供的一种微服务接口发布装置的结构框图,所述微服务接口发布装置包括:接口定义校验组件701、接口SDK转换组件702、接口审核组件703和接口发布组件704。

接口定义校验组件701,用于对于输入的以IDL描述的微服务接口定义进行校验,确定该微服务接口是微服务新建接口还是微服务升级接口,若确定为所述微服务新建接口,校验所述微服务新建接口是否有效,若确定为所述微服务升级接口,校验所述微服务升级接口是否有效且兼容,如果所述微服务新建接口有效或者所述微服务升级接口有效且兼容,将所述微服务新建接口或者所述微服务升级接口作为待处理微服务接口。

所述接口定义校验组件701可选的包括:

获取单元7011,用于获取所述IDL描述中的业务系统、微服务接口名和微服务接口版本字段值;

第一校验单元7012,用于利用所述业务系统确定相同的业务系统,并基于所述微服务接口名检索所述相同的业务系统中存储的所有微服务接口中是否存在匹配的微服务接口,若未检索到匹配的微服务接口,所述微服务接口为微服务新建接口,执行有效判断单元7014,若检索到匹配的微服务接口,执行第二校验单元;

所述第二校验单元7013,用于比较所述匹配的微服务接口中的所有微服务接口版本字段值是否小于所述微服务接口版本字段值,若均小于,确定所述微服务接口为微服务升级接口,先执行有效判断单元7014,在执行兼容判断单元7015;

所述有效判断单元7014,用于提取所述微服务接口定义中的特征点,所述特征点至少包括由数据结构定义的字段的字段名称和字段类型,以及由方法定义的参数的参数名称和参数类型,查询预先设置的数据字典中是否存在与所述字段名称相同的名称,和/或与所述参数名称相同的名称,所述数据字典包括预先设置有名称和类型的语义,若存在与所述字段名称相同的名称,校验具有相同名称的字段的字段类型与语义的类型是否一致,和/或存在与所述参数名称相同的名称,校验具有相同名称的参数的参数类型与语义的类型是否一致,若一致,确定所述微服务接口有效,所述微服务接口包括微服务新建接口或微服务升级接口。

所述兼容判断单元7015,用于将所述匹配的微服务接口中全部由数据结构定义的字段与所述微服务接口定义中全部由数据结构定义的字段进行比较,以及将所述匹配的微服务接口中方法定义的参数和所述微服务接口定义中方法定义的参数进行比较,若均满足比较条件,确定所述微服务升级接口与所述匹配的微服务接口兼容,若任一不满足比较条件,确定所述微服务升级接口与所述匹配的微服务接口不兼容,其中,所述比较条件包括:查询所述匹配的微服务接口中全部由数据结构定义的字段的字段名称,以及由方法定义的参数的参数名称是否存在于所述微服务接口定义中,若存在,校验所述相同名称的字段的字段类型以及所述相同名称的参数的参数类型是否完全一致;

接口SDK包转换组件702,用于将所述待处理微服务接口以所述IDL描述的微服务接口定义转换为SDK包。

所述接口SDK包转换组件702可选的包括:

获取单元7021,用于获取所述待处理微服务接口的待处理微服务接口定义;

转换单元7022,根据预设的输出程序设计语言及预设的转换规则,将所述待处理微服务接口定义转换为对应程序设计语言源代码,将所述源代码编译为SDK包。

接口审核组件703,用于对所述SDK包进行审核。

所述接口审核组件703可选的包括:

获取单元7031,用于获取所述以IDL描述的微服务接口定义;

审核单元7032,用于对所述微服务接口实施自动审核和/或人工审核。

接口发布组件704,用于将审核通过的所述SDK包发布至预定义的软件仓库。

在本发明实施例中,所述接口发布组件704,还用于:将所述SDK包通过非正式的软件仓库发布至预设的正式软件仓库。

需要说明的是,上述本发明实施例公开的微服务接口发布装置中的各个模块具体的原理和执行过程,与上述图1至图6本发明实施例公开的微服务接口发布方法中对应的部分的原理和执行过程相同,可参见上述本发明实施例公开的微服务接口发布方法中相应的部分,这里不再进行赘述。

基于本发明实施例公开的微服务接口发布装置,通过对输入的以IDL描述的微服务接口定义进行校验,确定以IDL描述的微服务接口是新建接口还是升级接口,校验微服务新建接口的有效性和微服务升级接口的兼容性,将通过校验的微服务接口定义转换为SDK包,对SDK包进行审核,并将通过审核的SDK包发布到预定义的软件仓库,从而达到进行微服务接口发布时,实现满足微服务模式下对微服务接口发布的高要求的目的。

本发明实施例还提供了一种电子设备,用于运行程序,其中,所述程序运行时,具体用于实现如上述任意一个实施例提供的微服务接口的发布方法。

本发明实施例还提供了一种存储介质,所述存储介质包括存储程序,其中,在所述程序运行时,具体用于控制所述存储介质所在设备实现如上述任意一个实施例提供的微服务接口的发布方法。

在本公开的上下文中,计算机存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 微服务接口的发布方法、装置、电子设备和存储介质
  • 微服务框架的接口文件生成方法、电子设备及存储介质
技术分类

06120112923535