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

一种基于微服务架构的电网代码测试分析系统

文献发布时间:2023-06-19 11:52:33


一种基于微服务架构的电网代码测试分析系统

技术领域

本发明涉及一种基于微服务架构的电网代码测试分析系统,可用于电力信息系统中代码测试分析、软件缺陷检测、以及微服务架构开发下系统代码测试分析。

背景技术

随着电网信息化的快速发展,电力信息系统相关的软件的应用范围日益增大,软件的规模也日益增加,功能及架构也越来越复杂。在许多业务场景中一个软件所包含的技术也愈来愈多,单体架构业务应用越来越庞大,系统要素不仅包括信息系统,而且涉及大量与信息系统耦合关联的系统;系统要素之间的耦合关联关系动态变化且日趋复杂;整个系统的行为难以通过单一自治系统特征的简单叠加来刻画;代码逻辑越来越复杂,代码之间、模块之间耦合度越来越高。

代码测试分析技术通过设计测试案例来检测软件质量,找出可能存在的软件缺陷,是保证软件质量的重要手段之一。随着软件规模的扩大,软件复杂度的提高,软件测试任何测试案例的简单改动都会导致测试应用的重新编译、打jar包、上传服务器和重新部署,但是这种编译和部署周期长,测试应用的灵活性低、持续交付能力弱,无法及时响应代码测试分析业务的持续变化。在传统的主机集群工作模式下,代码测试分析工具对于主机集群的资源利用率不高,同时在系统的管理维护和应用迁移效率等方面都存在严重的问题。

发明内容

发明目的:本发明的目的在于提供一种基于微服务架构的电网代码测试分析系统,提高代码测试系统的测试效率、可拓展性、可维护性。

技术方案:一种基于微服务架构的电网代码测试分析系统,包括接入部、服务部和维护部,接入部对外提供统一地址供客户端访问系统,接入部接收客户端发送的测试请求并将请求分发至服务部,服务部基于测试请求调用相应的微服务,完成测试任务的执行,其中每个微服务都是职能单一的独立服务单元,维护部对系统中微服务的运行状态和调用链路进行监控。

在一个优选实施方式中,所述微服务包括用户管理微服务、应用系统微服务、代码工程微服务、代码检测微服务,其中,用户管理微服务负责系统用户的统一管理,应用系统微服务提供针对不同用户实现不同权限下的应用系统的分配,代码工程微服务提供用户对每个应用系统的工程进行查询的功能,其中高权限的用户能够向低权限的用户进行权限授权,被授予权限的用户能够进行代码检测,代码检测微服务通过配置流水线检测方法进行有效的代码检测,最后输出代码测试的报告。

在一个优选实施方式中,所述服务部包括服务发现与注册模块以及配置模块,所述服务发现与注册模块用于实现微服务之间的调用,微服务实例启动后将其注册到服务中心,对比每次注册的服务地址定期访问服务,根据服务的健康状态判断是否可用,实现微服务之间的解耦;所述配置模块用于对整个服务群的参数和开关进行集中式配置管理,为微服务提供多个环境下的统一动态配置信息的存储。

在一个优选实施方式中,所述维护部包括监控模块、安全控制模块、链路跟踪模块,所述监控模块、安全控制模块、链路跟踪模块分别与微服务组件模块相连,其中所述监控模块用于对服务的运行状态和调用链路进行监控,保障微服务以健康状态运行;所述安全控制模块用于对服务的异常情况进行立即处理;所述链路跟踪模块用于对服务调用情况加以记录管理。

有益效果:基于微服务架构的电网代码测试分析系统可以有效达到优化代码测试分析效率,在代码测试分析的过程中,利用微服务架构在敏捷开发和快速部署方面的优势,将代码测试分析系统功能模块按照业务职能拆分为多个微服务,实现完整单一业务逻辑单元,实现有效的业务功能逻辑组合,提高代码测试分析系统在可拓展性、可维护性。同时基于微服务架构的代码测试分析系统可以做到一次配置、多次部署,可以根据需求的变化进行快速迁移,可以快速进行扩所容,有效提高电网信息化测试的效率。

附图说明

图1为本发明实施例提供的一种微服务代码测试分析系统总体示意图;

图2为本发明实施例提供的一种微服务代码测试分析系统结构框图;

图3为本发明实施例提供的代码测试分析系统中用户权限管理示意图;

图4为本发明实施例提供的代码测试分析系统中代码检测过程示意图;

图5为本发明实施例提供的代码测试分析系统中创建容器流程图;

图6为本发明实施例提供的代码测试分析系统中基于容器部署的微服务示意图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

针对现有代码测试分析系统在主机集群工作模式下,代码测试分析工具对于主机集群的资源利用率不高,以及系统的管理维护和应用迁移效率等方面的存在的不足,本发明提供一种基于微服务架构的电网代码测试分析系统,一方面解决现有代码测试系统测试效率低的缺陷,另一方面利用微服务架构在敏捷开发和快速部署方面的优势,将代码测试分析系统功能模块按照业务职能拆分为多个微服务,实现完整单一业务逻辑单元,实现有效的业务功能逻辑组合,提高代码测试分析系统在可拓展性、可维护性。

参照图1,基于微服务架构的电网代码测试分析系统,总体而言包括接入部100、服务部200和维护部300,接入部100对外提供统一地址供客户端访问系统,接入部100接收客户端发送的电网信息系统软件或代码测试请求,将请求分发至服务部200,服务部200基于测试请求调用相应的微服务,完成测试任务的执行,维护部300对系统中微服务的运行状态和调用链路进行监控。

下面结合图2对系统的各组成部分进行具体描述,如图1和图2所示,接入部100包括网关110,网关110提供统一的服务调用入口,通过路由策略隔离外部访问与内部系统,有效保障微服务的动态路由,客户端经由系统前台通过统一网关地址进行访问,提交测试请求,网关再将请求分发到具体服务,统一返回处理结果。由于电力信息系统的规模大、复杂度高、地域性广、协议迥异等特点,为了提高系统安全性和可靠性,任何访问服务端的请求都需要经过微服务网关调度分配到具体的微服务。可选地,接入部100还包括鉴权模块120,鉴权模块120中存储合法用户信息,以供网关110进行用户鉴权。对于从客户端发起的请求,网关110根据用户请求的指定信息调用鉴权模块120进行验证,保证请求的合理性才可访问。

服务部200是本系统的核心组成部分,以微服务方式提供对测试请求的响应。本发明充分利用微服务支持切分系统的方式,为系统的功能模块划分边界,通过若干微服务的配合,以较低成本将各服务结合。本系统将电网代码测试分析系统的单体应用转为一组微服务,每个微服务都是提供服务的子集,每个微服务是职能单一的独立服务单元。继续参照图2,微服务组件模块210包括用户管理微服务212、应用系统微服务214、代码工程微服务216、代码检测微服务218,这些微服务作为小粒度组件独立进行管理,服务内部通过RPC或消息驱动API通信,对外通过RESTful API轻量级地进行信息的交互。其中,用户管理微服务212负责系统用户的统一管理,用户管理微服务212接收用户通过手机号和邮箱通过系统管理员注册的唯一识别码,不同的识别码信息具有不同的权限,通过正确的识别码登陆之后,并将其传输至应用系统微服务214。应用系统微服务214提供针对不同用户实现不同权限下的应用系统的分配,代码工程微服务216提供用户对每个应用系统的工程进行查询和查看,其中高权限的用户能够向低权限的用户进行权限授权,被授予权限的用户能够进行代码检测,代码检测微服务218通过配置流水线检测方法进行有效的代码检测,最后输出代码测试的报告。

参照图3,基于微服务架构的电网代码测试分析系统中的用户包含三类:业务管理员、应用系统负责人、普通用户(也称为通用人员),除非另外明确地指出,否则本文描述中“用户”指的是上述三类使用者的统称,具体的情况根据权限的不同而对应执行不同的操作,不一定特指普通用户或通用人员。其中,业务管理员由系统内置,拥有创建应用的权限,能够为应用添加和修改负责人,并能够查看所有的信息。业务管理员可以进行用户的创建、密码重置等操作,可以有效统计平台内的所有的用户信息。应用系统负责人由业务管理员指定,拥有负责应用内的高级权限,能够创建工程、分支,为应用添加成员等操作,查看所属应用的信息。通用人员可以通过应用系统负责人添加至单独的应用,拥有应用的部分操作权限,能够查看所属应用的信息。业务管理员负责整体的用户添加、平台配置、应用创建、指定应用系统负责人,接着应用系统负责人在被分配了应用之后,可以在应用之内创建工程、分支、为应用添加成员;根据不同的数据权限,普通用户可以对应用的每个分支新增流水线,并进行构建;在测试的任务中,根据不同的数据权限,查看相应的流水线构建任务进行情况;在代码分析中,根据不同的数据权限,对提交的代码进行分析、查看、导出分析结果。

在一个可选的实施方式中,应用系统微服务214包括版本管理单元、成员管理单元,版本管理单元用于进行编译包迭代下的版本工程分支管理,应用系统负责人可以通过版本管理单元有效进行版本迭代更新的管理;成员管理单元用于高权限管理人员对普通用户人员的管理,高权限管理人员可以通过成员管理单元对普通用户进行权限设定,普通用户基于设定的权限才可以进入后面的相应代码工程模块和代码检测模块。

在一个可选的实施方式中,代码工程微服务216包括代码工程单元、分支管理单元、授权管理单元,代码工程单元用于不同的权限人员可以查看不同级别的应用系统的工程,其中,应用系统负责人和应用系统普通成员可以看到所负责或所参与的应用系统下的所有工程,同时也可以创建新的代码工程;分支管理单元用于对不同级别用户分支进行管理,针对复杂系统的管理流程中,会有不同级别的参与者进入工程,通过分支管理单元可以有效进行监控;授权管理单元用于代码工程授权,应用系统负责人可以通过授权管理单元针对不同代码工程的应用系统内的成员进行相应的代码工程授权。

在一个可选的实施方式中,代码检测微服务218包括流水线单元和测试任务单元,流水线单元用于以流水线形式排列测试任务,其中同一条流水线只能允许一个测试任务执行或排队,如果测试任务执行中容量已满,安排新构建的测试任务进入排队中列表;若测试任务排队中容量已满,且该流水线存在任务正在执行中或执行中容量已满,则不允许构建任务,流水线已存在任务正在执行中,并存在任务正在排队中,则不允许构建任务。测试任务单元用于执行测试任务的步骤,进而可以查看测试运行的日志。

参照图4,在代码检测的过程中,有效选择应用系统、系统的相关版本、工程文件、工程分支等,进行编译文件的选择,接着通过流水线执行,通过有效执行Check Engine扫描、Sonar扫描、fortify扫描、依赖检查等微服务有效进行任务的执行。

服务发现与注册模块220可以实现微服务之间的调用,微服务实例启动后将其注册到服务中心,对比每次注册的服务地址定期访问服务,根据服务的健康状态判断是否可用,实现微服务之间的解耦。配置模块230是配置整个服务群的参数和开关的一个集中式配置管理,为微服务提供多个环境下的统一动态配置信息的存储,通过统一的API规范配置项,在各个运行环境下通过推拉的方式将更新的每次新增、修改配置的历史记录信息同步到微服务中,实现弹性部署。

本发明提供的基于微服务架构的电网代码测试分析系统,充分利用微服务支持切分系统的方式,为系统的功能模块划分边界,另一方面通过若干服务模块的配合,以较低成本将各服务结合。

然而,微服务架构由于将单体应用分散于多个服务,若发生故障则较难定位,例如,一个服务故障可能导致整个系统故障。因此,考虑故障处理的及时性、便利性,需要对系统进行较为全面的监控管理。继续参照图2,维护部300包括监控模块310、安全控制模块320、链路跟踪模块330。监控模块310对服务的运行状态和调用链路进行监控,保障微服务以健康状态运行。监控模块310的实现可以是,例如各个组件提供报告自己当前状态的接口(metrics接口),并且接口输出的数据格式保持一致,然后部署一个指标采集器组件,定时从这些接口获取并保持组件状态,同时提供查询服务。安全控制模块320对服务的异常情况进行立即处理。例如,当一个服务因为各种原因停止响应时,调用方通常会等待一段时间,然后超时或者收到错误返回。如果调用链路比较长,可能会导致请求堆积,整条链路占用大量资源一直在等待下游响应。所以当多次访问一个服务失败时,安全控制模块320立即标记该服务已停止工作,直接返回错误,直至该服务恢复正常后再重新建立连接。链路跟踪模块330用于对服务调用情况加以记录管理。一个用户的请求往往涉及多个内部服务调用。为了方便定位问题,需要能够记录每个用户请求时,微服务内部产生了多少服务调用及其调用关系,也就是链路跟踪。链路跟踪模块330可以基于请求的时间、响应时间、服务标识等信息的记录实现链路跟踪。每个服务组件可同步实现敏捷式开发迭代,根据代码测试分析工具的业务情况,在需要存储状态信息时,有效将状态信息有效存储到数据库或者外部缓存中。

在一个实施例中,采用Spring Cloud架构的前后端分离的层次化方式,在服务层对用户管理微服务、应用系统微服务、代码工程微服务、代码检测微服务进行实现,通过Spring Cloud架构中组件进行统一的运维和安全管理。采用Spring Cloud Gateway作为微服务网关,任何访问服务端的请求都需要经过微服务网关调度分配到具体的微服务。采用Eureka进行服务发现与注册,有效保证服务发现注册的分布式、高可用性。微服务配置采用Spring Cloud Config对所有的配置文件进行统一的管理,有效获取非停机态的最新配置信息。

本发明中服务发现与注册模块220采用Eureka作为服务注册中心,可以实现服务中心的高可用和对各个微服务有效进行服务发现与注册。构建服务注册中心,Eureka的客户端采用自注册的模式,在pom.xml文件中添加spring-cloud-starter-eureka-server的依赖关系,同时再将@EnableEurekaServer注解添入主类,客户端需要负责处理服务实例的注册和注销。注意,此处客户端指的是Eureka的客户端。对服务中心的服务名、端口号、权限以及服务URL等进行服务配置,使得其他的服务可以对服务中心进行注册。对每一个微服务添加依赖spring-cloud-starter-netflix-eureka,并且再将@EnableDiscoveryClient注解加入主类,表明这些客户端的服务需要在注册服务中心进行注册。接着,对客户端的服务进行有效的配置,使得客户端的服务都能注册进入服务中心。

在一个优选的实施方式中,本发明通过Eureka作为服务注册中心,通过集群部署的方式,在部署的时候将运行端口进行修改部署为3个节点。三个节点互为主从,有效形成数据循环复制的集群,从其中的一个节点收到的注册信息会同步地增量复制在其余两个节点上,保障集群所有注册中心节点的数据的一致性。在其中的某一个节点故障之后,客户端可以自动循环重试其他节点,直到找到可用节点后持续使用。当集群中的某个节点从故障中恢复时,可以从其余的节点获取全量数据,继续对外提供服务。

本发明中微服务配置模块230通过使用Spring-Cloud-Config,针对数量较多的微服务,通过git的方式来存储配置文件,有效保障微服务配置文件的统一管理和配置文件的实时更新,有效进行配置文件的版本管控。在微服务启动之后,先根据配置文件找到配置服务中心服务,再找到配置中心配置的git地址,接着获取git地址的数据对该微服务进行配置。该架构中的负载均衡主要通过添加spring-cloud-starter-ribbon依赖,采用SpringCloud Ribbon实现各个微服务接口调用的负载均衡。通过采用Spring Boot Admin组件进行各个微服务运行状态的监控,跟踪心跳,来发现可用的服务实例,并向注册中心注册和注销实例,解耦服务发现组件和微服务架构,有效对异常的服务进行维护。通过Admin可以监控微服务的详细信息和版本信息,除此之外,还可以有效对该微服务的日志和其他内存使用、线程等信息进行监控。

为了提高上述服务的持续集成能力,本发明采用Docker容器引擎,通过轻量级虚拟化技术来实现资源隔离,并打包各种环境依赖项和应用程序,以促进应用程序的移植和部署。将微服务打包成单独的Docker镜像,然后将它们推入私有镜像数据库。每次部署服务时,都会从私有镜像库中提取相应的镜像,并根据预定的微服务运行镜像。通过Docker的内置服务发现和负载均衡模块实现故障的自我修复,在不中断业务的情况下对崩溃的容器进行替换,并可随时扩容、缩容,增加系统管理的弹性。根据业务需要动态地创建容器,保证软硬件资源的动态利用最优。在系统微服务化的工作中,首先通过监控器件监测服务容器的软硬件的资源使用实时指标,Docker代理会定时问询并标记运行中的空闲容器;接着在资源允许的情况下,优先将空闲容器分配给当前请求,同时记录该容器状态及其他关联容器信息;如果没有空闲容器时,则由Docker容器镜像启动一个新的容器实例进行分配。最后通过容器目录挂载Volume读取代码安全审查分析服务,通过数据解析来更新容器内部的代码安全审查分析组件,支持在代码分析完成后提供代码圈复杂度、基本圈复杂度、函数扇入、函数扇出、代码注释率、代码行数等代码度量项,以评估代码质量,可对不同版本代码进行质量比较等。动态创建面向微服务代码的安全审查分析容器流程如图5所示。

针对面向电网代码测试分析系统中的复杂而完整的业务处理流程,将其拆分为多个服务,每个服务具有单一功能和简单的业务逻辑,Docker镜像构建之后,因为每个容器运行着不同的微服务实例,容器之间也是隔离部署服务的,每个微服务都在Eureka Server中注册,微服务可以通过声明性RESTful API调用。基于容器部署的微服务如图6所示。

本发明提出的代码测试分析系统,通过微服务的方式,基于Spring Cloud实现功能应用的模块化,便于各功能的开发维护和数据资源的合理利用,充分利用Docker技术的轻量化和动态创建的特点,实现了云资源的高效利用。从而有效提高电网信息化测试的效率。

相关技术
  • 一种基于微服务架构的电网代码测试分析系统
  • 一种基于微服务架构的电网搜索系统及方法
技术分类

06120113084158