发明内容
本申请实施例提供了一种API部署监控的方法、系统、电子装置和存储介质,以至少解决相关技术中如果某个微服务的API被修改,则必须人工通知相关方去API管理平台去查看修改的地方,导致效率低的问题。
第一方面,本申请实施例提供了一种API部署监控的方法,所述方法包括:
获取第一微服务的第一API端点信息,根据所述第一API端点信息生成API列表信息;
将所述API列表信息转成JSON文件进行存储,作为API基准;
获取所述第一微服务的第二API端点信息,将所述第二API端点信息与所述API基准进行比较,若所述比较结果存在差异,则根据所述差异信息修改所述API基准。
在其中一些实施例中,若所述比较结果存在差异,则根据所述差异信息修改所述API基准包括:
监控所述第一微服务的API调用情况,根据所述API调用情况统计所述第一微服务之间的API调用关系,存储所述API调用关系;
获取所述比较结果存在差异的所述第二API端点,称为第三API端点;
根据所述API调用关系查询调用所述第三API端点的所述第一微服务,称为第二微服务,发送所述差异信息至所述第二微服务的用户;
接收所述用户对所述差异信息的确认信息后,根据所述差异信息修改所述API基准。
在其中一些实施例中,根据所述差异信息修改所述API基准之后,所述方法包括:当所述API基准被修改时,作为一次新的版本,使用Git进行所述版本管理。
第二方面,本申请实施例提供了一种API部署监控的系统,所述系统包括监控模块和存储模块,
所述监控模块获取第一微服务的第一API端点信息,根据所述第一API端点信息生成API列表信息,将所述API列表信息转成JSON文件;
所述存储模块对所述JSON文件进行存储,作为API基准;
所述监控模块获取所述第一微服务的第二API端点信息,并将所述第二API端点信息存储到所述存储模块;
所述存储模块将所述第二API端点信息与所述API基准进行比较,若所述比较结果存在差异,则将所述差异信息发送给所述监控模块;
所述监控模块根据所述差异信息修改所述API基准。
在其中一些实施例中,所述系统还包括告警模块,所述监控模块根据所述差异信息修改所述API基准包括:
所述监控模块监控所述第一微服务的API调用情况,根据所述API调用情况统计所述第一微服务之间的API调用关系,将所述API调用关系存储到存储模块;
所述监控模块获取所述比较结果存在差异的所述第二API端点,称为第三API端点;
所述监控模块根据所述API调用关系查询调用所述第三API端点的所述第一微服务,称为第二微服务,所述告警模块发送所述差异信息至所述第二微服务的用户;
所述告警模块接收所述用户对所述差异信息的确认信息后,所述监控模块根据所述差异信息修改所述API基准。
在其中一些实施例中,所述监控模块根据所述差异信息修改所述API基准之后,所述存储模块在所述API基准被修改时,作为一次新的版本,使用Git进行所述版本管理。
在其中一些实施例中,所述系统还包括网页模块,所述网页模块用于显示所述API列表、API调用关系、所述差异信息和所述第一微服务的用户信息。
在其中一些实施例中,所述系统还包括微服务注册中心,所述监控模块获取第一微服务的第一API端点信息之前,所述监控模块访问所述微服务注册中心,获取第一微服务信息,根据所述第一微服务信息获取所述第一API端点信息。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的API部署监控的方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的API部署监控的方法。
相比于相关技术,本申请实施例提供的API部署监控的方法,通过获取第一微服务的第一API端点信息,根据该第一API端点信息生成API列表,将该API列表信息转成JSON文件进行存储,作为API基准,获取该第一微服务的第二API端点信息,将该第二API端点信息与该API基准进行比较,若该比较结果存在差异,则根据该差异信息修改该API基准,解决了如果某个微服务的API被修改,则必须人工通知相关方去API管理平台去查看修改的地方,导致效率低的问题,实时监测API的变化,并对API的变化进行修改,提高了API变化时的修改效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种API部署监控的方法,图1是根据本申请实施例的API部署监控的方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,获取第一微服务的第一API端点信息,根据该第一API端点信息生成API列表信息;本实施例中,第一微服务包括多个微服务,每个微服务有多个第一API端点信息,多个第一API端点信息组成API列表信息。
步骤S102,将该API列表信息转成JSON文件进行存储,作为API基准;其中,JS对象简谱(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,本实施例中,将首次收集到的API列表信息转成JSON文件存储起来,作为API基准。
步骤S103,获取该第一微服务的第二API端点信息,将该第二API端点信息与该API基准进行比较,若该比较结果存在差异,则根据该差异信息修改该API基准。本实施例中,定时获取第一微服务的第二API端点信息,通过第二API端点信息与API基准的比较结果,可以知道哪些API端点被修改过,更新API基准中修改后的API端点信息。
通过上述步骤S101至步骤S103,相对于相关技术中,如果某个微服务的API被修改,则必须人工通知相关方去API管理平台去查看修改的地方,导致效率低的问题,本实施例通过获取第一微服务的第一API端点信息,根据该第一API端点信息生成API列表信息,将该API列表信息转成JSON文件进行存储,作为API基准,定时获取该第一微服务的第二API端点信息,将该第二API端点信息与该API基准进行比较,若该比较结果存在差异,则根据该差异信息修改该API基准,通过自动获取不同时刻下的API端点信息,并将该API端点信息与首次收集到的API端点信息进行比较,如果比较结果存在差异,自动修改此API端点信息,并将修改后的API端点信息作为下一次比较的基准,解决了如果某个微服务的API被修改,则必须人工通知相关方去API管理平台去查看修改的地方,导致效率低的问题,提高了API修改的效率。
在其中一些实施例中,图2是根据本申请实施例的另一种API部署监控的方法的流程图,如图2所示,若该比较结果存在差异,则根据该差异信息修改该API基准包括以下步骤:
步骤S201,监控该第一微服务的API调用情况,根据该API调用情况统计该第一微服务之间的API调用关系,存储该API调用关系;
步骤S202,获取比较结果存在差异的第二API端点,称为第三API端点;
步骤S203,根据该API调用关系查询调用该第三API端点的该第一微服务,称为第二微服务,发送该差异信息至该第二微服务的用户;
步骤S204,接收该用户对该差异信息的确认信息后,根据该差异信息修改该API基准。
通过上述步骤S201至步骤S204,本实施例通过API调用关系查询哪些微服务调用了被修改过的API端点,并将差异信息发送给这些微服务的开发人员,如果没有配置的话,默认通知到管理员,被通知的相关人员对该差异信息进行确认后,即可根据该差异信息修改API基准,解决了不通过确认就直接根据差异信息修改API基准的问题,本实施例将差异信息通知到相关人员,该相关人员对差异信息进行确认后,再根据差异信息修改API基准,提高了该差异信息的准确率,且解决了相关人员不能及时得知API端点被修改的问题,提高了相关人员根据被修改后的API端点做出相应措施的效率。
在其中一些实施例中,根据该差异信息修改该API基准之后,该方法包括:当该API基准被修改时,作为一次新的版本,使用Git进行版本管理。例如,首次收集到的API列表信息转成JSON文件作为API基准,该API基准为版本1,当API基准被修改后,修改后的API基准为版本2,其中,使用分布式版本控制系统(Git)进行版本管理,Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种API部署监控的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是根据本申请实施例的API部署监控的系统的结构框图,如图3所示,该系统包括存储模块31和监控模块32:
监控模块32获取第一微服务的第一API端点信息,根据该第一API端点信息生成API列表信息,将该API列表信息转成JSON文件;存储模块31对该JSON文件进行存储,作为API基准;该监控模块32获取该第一微服务的第二API端点信息,并将该第二API端点信息存储到该存储模块31;该存储模块31将该第二API端点信息与该API基准进行比较,若该比较结果存在差异,则将该差异信息发送给该监控模块32;该监控模块32根据该差异信息修改该API基准。本实施例中,通过监控模块32收集API列表信息,将该API列表信息转成JSON文件存储到存储模块31中,监控模块32再定时获取第二API端点信息并存储到存储模块31中,存储模块31将该第二API端点信息与API基准中对应的API端点信息进行比较,根据比较结果对API基准进行更新,解决了如果某个微服务的API被修改,则必须人工通知相关方去API管理平台去查看修改的地方,导致效率低的问题,提高了API修改的效率。
在其中一些实施例中,图4是根据本申请实施例的另一种API部署监控的系统的结构框图,如图4所示,该系统还包括告警模块41,监控模块32根据差异信息修改API基准包括:
监控模块32监控该第一微服务的API调用情况,根据该API调用情况统计该第一微服务之间的API调用关系,将该API调用关系存储到存储模块31;监控模块32获取该比较结果存在差异的该第二API端点,称为第三API端点;监控模块32根据该API调用关系查询调用该第三API端点的该第一微服务,称为第二微服务,告警模块41发送该差异信息至该第二微服务的用户;该告警模块41接收该用户对该差异信息的确认信息后,该监控模块32根据该差异信息修改该API基准。本实施例中,存储模块31主要是数据存储以及对存储数据的版本管理;监控模块32,负责监控各个微服务的API变化,并在告警模块41收到确认信息后,根据差异信息修改API基准;告警模块41负责发送API差异信息,以及接收相关人员的确认信息,相关人员对差异信息进行确认之后,取消告警信息。
在其中一些实施例中,该监控模块32根据该差异信息修改该API基准之后,该存储模块31在该API基准被修改时,作为一次新的版本,使用Git进行该版本管理。
在其中一些实施例中,图5是根据本申请实施例的第三种API部署监控的系统的结构框图,如图5所示,该系统还包括网页模块51,该网页模块51用于显示API列表信息、API调用关系、API变化的差异告警信息和配置微服务开发人员的信息。
在其中一些实施例中,图6是根据本申请实施例的第四种API部署监控的系统的结构框图,如图6所示,该系统还包括微服务注册中心61,监控模块32获取第一微服务的第一API端点信息之前,监控模块32访问该微服务注册中心61,获取第一微服务信息,根据该第一微服务信息获取该第一API端点信息。其中,监控模块32访问微服务注册中心61,自动获取要监控的各个微服务信息,并访问各个微服务的swagger端点,获取每个微服务所暴露的所有API端点信息,转换成JSON格式,放到存储模块31中,以此为API变化的基准。
图7是根据本申请实施例的API部署监控的系统的流程示意图,如图7所示,该系统包括网页模块51、存储模块31、告警模块41和监控模块32,每个模块分别实现不同的功能,具体如下:
1.网页模块51负责展示各个微服务的API列表信息、API调用关系、API变化的差异告警信息以及配置微服务开发人员的信息;存储模块31主要是数据存储以及对存储数据的版本管理;监控模块32负责监控各个微服务的API变化;告警模块41负责发送API差异信息,以及接收开发人员的确认信息;
2.在软件初次部署的时候,监控模块32会访问微服务注册中心61,自动获取要监控的各个微服务信息,例如,自动获取第一微服务A信息和第一微服务B信息等,并访问各个微服务的swagger端点,获取每个微服务所暴露的所有API端点信息,转换成JSON格式,放到存储模块31中,以此为API变化的基准;
3.在后续运行过程中,监控模块32会不断监控每个微服务的出入网络流量,根据监控数据统计出每个API调用情况,制定API与其他微服务的API调用关系,并记录到存储模块31;
4.存储模块31存储的数据,使用Git进行版本管理,监控模块32定时获取各个微服务的API端点信息,并交给存储模块31,存储模块31会将此次的API端点信息与API基准做对比,如果有差异,则会返回差异信息给监控模块32;
5.监控模块32遍历这些有变化的API端点,并从存储服务中获取与这些API端点有调用关系的微服务列表,将API端点的差异信息通过告警模块41发送到各个微服务的开发人员,微服务与开发人员的绑定关系可以通过web界面来配置,如果没有配置则默认发送给系统管理员。
6.告警模块41通过邮件发送通知给相关人员,写邮件中包含了该系统软件的页面地址,访问页面地址可以浏览API的具体变化,并需要相关人员的确认,所有相关此条API变化的微服务开发人员点击了确认之后,才能取消该条告警,并将此API的基准,变为已确认后的版本。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取第一微服务的第一API端点信息,根据该第一API端点信息生成API列表信息。
S2,将该API列表信息转成JSON文件进行存储,作为API基准。
S3,获取该第一微服务的第二API端点信息,将该第二API端点信息与该API基准进行比较,若该比较结果存在差异,则根据该差异信息修改该API基准。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的API部署监控的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种API部署监控的方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种API部署监控的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图8是根据本申请实施例的电子设备的内部结构示意图,如图8所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图8所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种API部署监控的方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。