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

一种动态OpenAPI自动化注册方法与流程

2022-10-26 15:50:49 来源:中国专利 TAG:

一种动态openapi自动化注册方法
技术领域
1.本发明涉及云原生领域,尤其涉及一种动态openapi自动化注册方法。


背景技术:

2.目前,云原生应用已经成为主流的应用类型,openapi是云原生应用服务之间调用的主要方式。api网关是openapi访问的统一入口,同时提供认证、鉴权、限流等功能。在将openapi注册到api网关时,一般采用两种方式:通过界面初始化和通过sql初始化。
3.通过界面初始化注册,对人工依赖严重,工作量大,注册效率低,而且容易出错。通过sql初始化注册,需要在api网关集中维护各个服务的openapi元数据,将其编写为liquibase脚本,通过liquibase脚本维护全部服务openapi,并记录openapi变动。相较于界面初始化注册方式,该方式已经具备部分自动化特性,可以在不同环境迁移与部署。但是,sql初始化注册需要集中维护服务openapi,这不仅需要与各个服务产品人员保持沟通,而且需要在服务openapi变动时更新liquibase脚本,从而提高了api注册的运维成本。


技术实现要素:

4.为了解决以上技术问题,本发明提供了一种动态openapi自动化注册方法。减少人工参与,避免集中式管理带来的运维成本,同时有效应对服务openapi变动,提高openapi注册的自动化程度。
5.本发明的技术方案是:
6.一种动态openapi自动化注册方法,包括:
7.1)标记服务及api,
8.2)扫描服务获取openapi,
9.3)解析openapi,注册发布openapi,
10.4)调用访问openapi。
11.进一步的,
12.扫描服务获取openapi即是获取已经标记的服务及api。
13.在获取openapi元数据之后,对openapi数据进行解析,确定openapi是否合乎规范,同时判断openapi元数据是否发生变动。
14.再进一步的,
15.在解析过程中,会进行预校验,如果确实存在错误,解析过程不会停止,而是会继续对下一个openapi元数据进行解析,但是会记录发生的错误;
16.将当前元数据的哈希值与之前元数据的哈希值进行比较,判断openapi元数据是否发生变化。
17.进一步的,
18.在解析完openapi之后,对openapi注册发布。
19.再进一步的,
20.openapi注册
21.服务的openapi约束在服务之内,在api网关中openapi约束在api分组之内;
22.如果是新的服务,在api网关中没有对应分组,在openapi注册之前将先创建服务对应的api分组,然后将openapi注册到api网关的服务分组内;
23.如果是已经存在的服务,服务中的openapi发生变动,则会将该api分组中已经注册的openapi清理,然后重新注册该服务的openapi;
24.此时,在api网关的分组管理可查看到服务对应的api分组,并可以看到该分组下注册的openapi。
25.openapi发布
26.api注册模块直接调用api网关提供的openapi发布接口。
27.进一步的,
28.在openapi注册发布之后,可以在api网关调用访问。
29.再进一步的,
30.具体步骤如下:
31.首先,通过对服务api进行标记,选择需要注册的openapi;然后,api注册模块扫描服务及api,获取openapi;然后,api注册模块对openapi解析,校验openapi元数据,并确定需要更新的服务;然后,api注册模块将openapi注册并发布到api网关;最后,在api网关调用访问opena。
32.本发明的有益效果是
33.可以大幅提高openapi的注册效率,有效应对面对服务及api的变动,避免废弃服务及api的存在。
34.1)相较于界面初始化注册方式与sql初始化注册方式,减少了人工参与,降低了运维负担,提高了openapi注册的自动化程度,显著提高了openapi的注册效率。
35.2)可以有效应对服务及api的变动,实现服务api与api网关的数据同步。
36.3)对于openapi自动化注册过程进行记录,方便对注册出现问题进行排查。
附图说明
37.图1是本发明的工作机构示意图;
38.图2是本发明的工作流程示意图。
具体实施方式
39.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.本发明旨在提供一种动态openapi的自动化注册方法,其实现过程大致分为以下步骤:标记服务及api、扫描服务获取openapi、解析openapi、注册发布openapi、调用访问openapi。
41.1、标记服务及api
42.1.1)标记服务
43.标记服务主要是确定哪些服务会提供openapi。当前服务的都是通过k8s发布的服务,可以采用服务标签对服务进行标记。
44.1.2)标记api
45.对api标记需要满足两个方面:第一,保证api接口数据能够被获取,这里称为元数据标记,将api接口数据称为api元数据。第二,确定哪些api是openapi,这里称为openapi标记,openapi也包含元数据标记。因此,服务中api的关系可以通过下面公式表示,u是服务中全部api,a是openapi,b是其他存在元数据标记的api,c是其余的api。
46.u=a b c
47.而标记的方法,根据服务的具体实现稍有不同。针对java应用,可以采用swagger方式进行标记;针对go应用,可以采用devopsv1ws标记。
48.标记工作由各个服务自己负责,但相对于直接维护服务api数据,工作量大幅减小。
49.2、扫描服务获取openapi
50.在步骤1,完成了api元数据的准备,接下来需要在api注册模块获取服务openapi。扫描服务,筛选包含约定标记的服务,并对标记服务的标记api进行筛选,从而获得该服务的openapi。扫描服务范围可以做灵活设定,比如将服务限定在已知的发生变化的几个服务中,而不是全量的扫描,以提高扫描效率。
51.3、解析openapi
52.在步骤2获取服务的openapi之后,开始对openapi进行解析。解析过程主要包括:校验openapi元数据是否正确、比较openapi元数据是否变化。
53.3.1)校验openapi元数据是否正确
54.服务的openapi是由标准约定,但是在服务及api标记(步骤1)过程中,难免因为人为因素出现标记错误,比如出现api重名等。在解析过程中,会进行预校验,
55.如果确实存在错误,解析过程不会停止,而是会继续对下一个openapi元数据进行解析,但是会记录发生的错误。
56.3.2)比较openapi元数据是否变化
57.服务的openapi元数据可能与之前的元数据是相同的,对于这样的情况,该服务不需要注册发布openapi。为比较openapi元数据是否变化,需要对元数据进行单向函数处理,比如可以采用md5算法。将当前元数据的哈希值与之前元数据的哈希值进行比较,判断openapi元数据是否发生变化。
58.4、注册发布openapi
59.在解析完openapi元数据之后,是对openapi的注册发布。openapi将被注册到api网关,并且发布到api网关提供的环境,比如线上环境或测试环境,以供openapi调用访问。
60.4.1)openapi注册
61.服务的openapi约束在服务之内,在api网关中openapi约束在api分组之内。因此,可以将一个服务当作api网关的一个api分组。如果是新的服务,在api网关中没有对应分组,在openapi注册之前将先创建服务对应的api分组,然后将openapi注册到api网关的服务分组内。如果是已经存在的服务,服务中的openapi发生变动,则会将该api分组中已经注
册的openapi清理,然后重新注册该服务的openapi。
62.此时,在api网关的分组管理可以查看到服务对应的api分组,并可以看到该分组下注册的openapi。
63.4.2)openapi发布
64.仅仅是完成注册,openapi是无法调用和访问的,因此还需要对openapi进行发布。api注册模块可以直接调用api网关提供的openapi发布接口。api注册模块会解决发布接口需要的细节问题,比如发布的环境,openapi隶属的用户,发布时间等。
65.5、调用访问openapi
66.在步骤4完成openapi注册发布之后,在api网关就可以调用访问openapi。比如可以借助api网关提供的调试界面进行访问,或者是使用其他的客户端工具对openapi进行访问。同时,步骤3在解析openapi中生成的记录信息也会展示,以方便对出错的openapi进行问题勘察。
67.以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献