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

SonarQube服务器集群扩容方法及装置

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


SonarQube服务器集群扩容方法及装置

技术领域

本发明涉及代码检查技术领域,具体而言,涉及一种SonarQube服务器集群扩容方法及装置。

背景技术

SonarQube为常用的一种静态代码检查工具,用于对应用的代码进行检查,帮助检查代码缺陷,改善代码质量,提高开发速度。目前SonarQube存在扫描任务处理的单线程限制,一个SonarQube服务器同一时间只能处理一个扫描任务,在多用户同时使用时,会出现任务等待的情况,影响扫描的效率和解决问题的及时性。因此如何提高SonarQube代码扫描的效率是本领域急需解决的技术问题。

发明内容

本发明为了解决上述背景技术中的技术问题,提出了一种SonarQube服务器集群扩容方法及装置。

为了实现上述目的,根据本发明的一个方面,提供了一种SonarQube服务器集群扩容方法,该方法包括:

根据目标SonarQube服务器在预设时间区间内由自身处理的扫描任务的总数以及由其他SonarQube服务器代为处理的扫描任务总数,确定所述目标SonarQube服务器对应的迁移率;

若所述迁移率大于预设阈值,则根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器。

可选的,所述根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器,包括:

若所述目标SonarQube服务器对应的每个应用均属于同一个组别,则将已处理扫描任务总数最大的应用的扫描任务处理迁移到新的SonarQube服务器。

可选的,所述根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器,包括:

若所述目标SonarQube服务器对应的各应用不属于同一个组别,则确定所述目标SonarQube服务器中每个组别对应的已处理扫描任务总数;

将已处理扫描任务总数最大的组别在所述目标SonarQube服务器中对应的所有应用的扫描任务处理迁移到新的SonarQube服务器。

可选的,将应用的扫描任务处理迁移到新的SonarQube服务器,具体包括:

将所述目标SonarQube服务器对应的扫描规则集合发送到所述新的SonarQube服务器;

将应用在所述目标SonarQube服务器中的扫描任务处理结果迁移到所述新的SonarQube服务器;

将应用与SonarQube服务器之间的对应关系从与所述目标SonarQube服务器对应修改为与所述新的SonarQube服务器对应。

可选的,所述目标SonarQube服务器用于对对应的应用的扫描任务进行处理;SonarQube客户端在所述目标SonarQube服务器空闲时将所述目标SonarQube服务器对应的扫描任务发送到所述目标SonarQube服务器进行处理,在所述目标SonarQube服务器非空闲时将所述目标SonarQube服务器对应的扫描任务发送到其他空闲的SonarQube服务器代为处理。

可选的,在所述其他空闲的SonarQube服务器对所述目标SonarQube服务器对应的扫描任务代为处理后通过预设的数据库同步工具将扫描任务处理结果发送给所述目标SonarQube服务器。

可选的,所述SonarQube客户端在接收到扫描任务时,确定该接收到的扫描任务对应的应用,从预设的地址表中确定所述应用对应的SonarQube服务器的地址,根据所述地址确定该对应的SonarQube服务器的闲忙状态,在该对应的SonarQube服务器空闲时将该接收到的扫描任务发送到该对应的SonarQube服务器进行处理,在该对应的SonarQube服务器非空闲时将该接收到的扫描任务发送到其他空闲的SonarQube服务器进行处理。

为了实现上述目的,根据本发明的另一方面,提供了一种SonarQube服务器集群扩容装置,该装置包括:

迁移率确定单元,用于根据目标SonarQube服务器在预设时间区间内由自身处理的扫描任务的总数以及由其他SonarQube服务器代为处理的扫描任务总数,确定所述目标SonarQube服务器对应的迁移率;

应用迁移单元,用于在所述迁移率大于预设阈值时,根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器。

可选的,所述应用迁移单元,包括:

第一迁移模块,用于若所述目标SonarQube服务器对应的每个应用均属于同一个组别,将已处理扫描任务总数最大的应用的扫描任务处理迁移到新的SonarQube服务器。

可选的,所述应用迁移单元,包括:

部门任务总数确定模块,用于若所述目标SonarQube服务器对应的各应用不属于同一个组别,确定所述目标SonarQube服务器中每个部门对应的已处理扫描任务总数;

第二迁移模块,用于将已处理扫描任务总数最大的组别在所述目标SonarQube服务器中对应的所有应用的扫描任务处理迁移到新的SonarQube服务器。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SonarQube服务器集群扩容方法中的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述SonarQube服务器集群扩容方法中的步骤。

本发明的有益效果为:本发明根据目标SonarQube服务器在预设时间区间内由自身处理的扫描任务的总数以及由其他SonarQube服务器代为处理的扫描任务总数,确定所述目标SonarQube服务器对应的迁移率,进而在迁移率大于预设阈值时将目标SonarQube服务器的至少一个应用的扫描任务处理工作迁移到新的SonarQube服务器,由该新的SonarQube服务器负责进行处理,实现了对目标SonarQube服务器进行任务分流,即减少目标SonarQube服务器扫描任务处理的压力,也提高了扫描任务整体的处理效率。

附图说明

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

图1是本发明实施例SonarQube服务器集群扩容方法的流程图;

图2是本发明应用迁移的流程图;

图3是将应用的扫描任务处理迁移到新的SonarQube服务器的流程图;

图4是本发明SonarQube服务器集群扩容方法的应用场景图;

图5是本发明实施例SonarQube服务器集群扩容装置的结构框图;

图6是本发明实施例计算机设备示意图。

具体实施方式

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

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

需要说明的是,本发明的SonarQube服务器集群扩容方法及装置可以应用于金融领域,也可以应用于其他技术领域。

图4是本发明SonarQube系统示意图,本发明的SonarQube服务器集群扩容方法应用于该SonarQube系统。如图4所示,本发明SonarQube系统包括:SonarQube客户端、包含多个SonarQube服务器的SonarQube服务器集群、地址表以及数据库同步工具。

SonarQube服务器集群包含多个SonarQube服务器,本发明事先按照应用进行SonarQube服务器注册,每个SonarQube服务器对应至少一个应用,SonarQube服务器用于对对应应用的扫描任务进行处理。在本发明可选实施例中,本发明的SonarQube服务器可以为云服务器。

地址表中记载了每个应用对应的SonarQube服务器,以及每个SonarQube服务器的地址。可选的,地址表中还记载了每个应用对应的部门。

SonarQube客户端接收用户发送的扫描任务,其中,所述扫描任务中包含扫描任务对应的应用,可选的,所述扫描任务中还包含应用对应的部门。

在接收到扫描任务时,SonarQube客户端先确定该扫描任务对应的应用,进而读取地址表确定该应用对应的SonarQube服务器的地址。SonarQube客户端根据SonarQube服务器的地址调用服务器接口判断服务器是否空闲,如果空闲,则调用该应用对应的SonarQube服务器对扫描任务进行处理。如果为非空闲,SonarQube客户端则调用其他空闲的SonarQube服务器对扫描任务进行处理,并记录服务器转化信息。以此实现对扫描任务的动态分发和迁移,消除各个SonarQube服务器负载不均的现象,使SonarQube服务器可以在多用户使用时及时响应用户请求。

在处理完扫描任务以后,数据库同步工具把扫描任务处理结果迁移到该应用对应的SonarQube服务器上,以便同一个应用所属的任务可以集中查看。

SonarQube客户端还可以记录下每个SonarQube服务器在预设时间区间内处理的扫描任务的总数。以及根据目标SonarQube服务器的服务器转化信息确定在所述预设时间区间内由其他SonarQube服务器对目标SonarQube服务器对应的扫描任务进行处理的扫描任务总数。

在本发明实施例中,SonarQube服务器处理扫描任务的具体的流程为:SonarQube客户端从SonarQube服务器获取扫描规则集合,并根据扫描规则集合中的扫描规则对扫描任务中应用的代码进行扫描得到扫描结果,并将扫描结果发送到SonarQube服务器;SonarQube服务器对扫描结果进行解析得到扫描任务处理结果,并将扫描任务处理结果存储在SonarQube服务器中的数据库中。本发明SonarQube服务器对扫描任务进行处理实际指的是SonarQube服务器对SonarQube客户端发送的扫描结果进行解析处理。

图1是本发明实施例SonarQube服务器集群扩容方法的流程图,如图1所示,本实施例的SonarQube服务器集群扩容方法包括步骤S101至步骤S102。

步骤S101,根据目标SonarQube服务器在预设时间区间内由自身处理的扫描任务的总数以及由其他SonarQube服务器代为处理的扫描任务总数,确定所述目标SonarQube服务器对应的迁移率。

在本发明实施例中,所述目标SonarQube服务器用于对对应的应用的扫描任务进行处理。

如图4所示,SonarQube客户端在所述目标SonarQube服务器空闲时将所述目标SonarQube服务器对应的扫描任务发送到所述目标SonarQube服务器进行处理。SonarQube客户端在所述目标SonarQube服务器非空闲时将所述目标SonarQube服务器对应的扫描任务发送到其他空闲的SonarQube服务器代为处理,并记录服务器转化信息。

在本发明一个实施例中,SonarQube服务器空闲指的是SonarQube服务器没有正在执行扫描任务处理以及不存在等待处理的扫描任务。SonarQube服务器非空闲指的是SonarQube服务器正在执行扫描任务处理或者该SonarQube服务器存在等待处理的扫描任务。

在本发明一个实施例中,本步骤具体可以用所述目标SonarQube服务器在预设时间区间内处理的扫描任务的总数除以所述预设时间区间内由其他SonarQube服务器对所述目标SonarQube服务器对应的扫描任务进行处理的扫描任务总数,得到所述迁移率。

在本发明实施例中,如图4所示,SonarQube客户端在接收到扫描任务时,确定该接收到的扫描任务对应的应用,从预设的地址表中确定所述应用对应的SonarQube服务器的地址,根据所述地址确定该对应的SonarQube服务器的闲忙状态,在该对应的SonarQube服务器空闲时将该接收到的扫描任务发送到该对应的SonarQube服务器进行处理,在该对应的SonarQube服务器非空闲时将该接收到的扫描任务发送到其他空闲的SonarQube服务器进行处理。

在本发明实施例中,在所述其他空闲的SonarQube服务器对所述目标SonarQube服务器对应的扫描任务进行处理后,通过预设的数据库同步工具将扫描任务处理结果发送给所述目标SonarQube服务器,以便可以集中要查看应用对应的扫描任务。

步骤S102,若所述迁移率大于预设阈值,则根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明一个可选实施例中,本步骤具体可以在如图4所示的SonarQube服务器集群中创建一个新的SonarQube服务器,进而将应用的扫描任务处理迁移到新的SonarQube服务器。在本发明的一个可选实施例中,本发明在SonarQube服务器集群中创建一个新的SonarQube服务器具体可以为在云服务器集群中克隆一台可用的云服务器。

在本发明一个可选实施例中,本步骤具体可以将已处理扫描任务总数最大的应用迁移到新的SonarQube服务器。在本发明另一个可选实施例中,本步骤具体可以也可以将已处理扫描任务总数大于预设值的应用迁移到新的SonarQube服务器。

由此可见,本发明在目标SonarQube服务器的迁移率大于预设阈值时将目标SonarQube服务器的至少一个应用的扫描任务处理工作迁移到新的SonarQube服务器,由该新的SonarQube服务器负责进行处理,实现了对目标SonarQube服务器进行任务分流,即减少目标SonarQube服务器扫描任务处理的压力,也提高了扫描任务整体的处理效率。

在本发明一个实施例中,上述步骤S102的根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器,具体包括:

若所述目标SonarQube服务器对应的每个应用均属于同一个组别,则将已处理扫描任务总数最大的应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明可选实施例中,所述组别可以为部门、公司以及组织等。

在本发明一个实施例中,组别为部门,如果服务器属于同一个部门的多个应用,则判断哪个应用的扫描任务最多,将该应用的任务处理迁移到新的服务器上。

图2是本发明应用迁移的流程图,如图2所示,在本发明一个实施例中,上述步骤S102的根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器,具体包括步骤S201和步骤S202。

步骤S201,若所述目标SonarQube服务器对应的各应用不属于同一个组别,则确定所述目标SonarQube服务器中每个组别对应的已处理扫描任务总数。

步骤S202,将已处理扫描任务总数最大的组别在所述目标SonarQube服务器中对应的所有应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明一个实施例中,组别为部门,如果服务器属于多个部门共用,则判断哪个部门的扫描任务数量最多,将该部门的应用的扫描任务处理迁移到新的服务器上

图3是将应用的扫描任务处理迁移到新的SonarQube服务器的流程图,如图3所示,本发明将应用的扫描任务处理迁移到新的SonarQube服务器,具体包括步骤S301至步骤S303。

步骤S301,将所述目标SonarQube服务器对应的扫描规则集合发送到所述新的SonarQube服务器。

步骤S302,将应用在所述目标SonarQube服务器中的扫描任务处理结果迁移到所述新的SonarQube服务器。

步骤S303,将应用与SonarQube服务器之间的对应关系从与所述目标SonarQube服务器对应修改为与所述新的SonarQube服务器对应。

在本发明实施例中,步骤S303具体为在地址表中添加应用与所述新的SonarQube服务器之间的对应关系,并在地址表中添加所述新的SonarQube服务器的地址,同时将地址表中应用与所述目标SonarQube服务器的对应关系删除。

在本发明实施例中,本发明在SonarQube服务器集群中创建一个新的SonarQube服务器之后,进而执行以上步骤S301至步骤S303,完成应用的扫描任务处理迁移。

在本发明实施例中,上述步骤S301至步骤S303这三个步骤可以以任意的执行顺序进行执行,也可以同时进行执行。

从以上实施例可以看出,本发明可以动态对SonarQube服务器进行扩容。具体有以下优点:

1、本发明可以解决SonarQube服务器出现多个任务等待的问题。优化了访问请求服务器之前的分配,消除了服务器之间的负载不平衡;

2、本发明提高了SonarQube平台的响应时间和总体性能;

3、本发明可以对服务器的运行情况以及服务器中任务的迁移情况进行监控,及时发现运行问题;

4、本发明可以方便的对服务器进行增加并启用。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

基于同一发明构思,本发明实施例还提供了一种SonarQube服务器集群扩容装置,可以用于实现上述实施例所描述的SonarQube服务器集群扩容方法,如下面的实施例所述。由于SonarQube服务器集群扩容装置解决问题的原理与SonarQube服务器集群扩容方法相似,因此SonarQube服务器集群扩容装置的实施例可以参见SonarQube服务器集群扩容方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图5是本发明实施例SonarQube服务器集群扩容装置的结构框图,如图5所示,本发明实施例SonarQube服务器集群扩容装置包括:

迁移率确定单元1,用于根据目标SonarQube服务器在预设时间区间内由自身处理的扫描任务的总数以及由其他SonarQube服务器代为处理的扫描任务总数,确定所述目标SonarQube服务器对应的迁移率。

应用迁移单元2,用于在所述迁移率大于预设阈值时,根据所述目标SonarQube服务器对应的每个应用各自的已处理扫描任务总数将所述目标SonarQube服务器对应的至少一个应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明一个实施例中,所述应用迁移单元2包括:

第一迁移模块,用于若所述目标SonarQube服务器对应的每个应用均属于同一个组别,将已处理扫描任务总数最大的应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明一个实施例中,所述应用迁移单元2包括:

部门任务总数确定模块,用于若所述目标SonarQube服务器对应的各应用不属于同一个组别,确定所述目标SonarQube服务器中每个部门对应的已处理扫描任务总数;

第二迁移模块,用于将已处理扫描任务总数最大的组别在所述目标SonarQube服务器中对应的所有应用的扫描任务处理迁移到新的SonarQube服务器。

在本发明一个实施例中,所述应用迁移单元2包括:

扫描规则集合发送模块,用于将所述目标SonarQube服务器对应的扫描规则集合发送到所述新的SonarQube服务器;

扫描任务处理结果迁移模块,用于将应用在所述目标SonarQube服务器中的扫描任务处理结果迁移到所述新的SonarQube服务器;

对应关系修改模块,用于将应用与SonarQube服务器之间的对应关系从与所述目标SonarQube服务器对应修改为与所述新的SonarQube服务器对应。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图6所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述SonarQube服务器集群扩容方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard DiskDrive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • SonarQube服务器集群扩容方法及装置
  • 用于服务器集群系统的扩容方法、装置及服务器集群系统
技术分类

06120112837529