一种拆分大型应用服务为微服务的方法、装置及设备与流程

文档序号:14940696发布日期:2018-07-13 20:39阅读:120来源:国知局

本发明涉及计算机应用技术领域,特别是涉及一种拆分大型应用服务为微服务的方法、装置、设备及可读存储介质。



背景技术:

随着计算机应用技术的发展,为了更好的发挥资源的利用率以及实现快速部署应用的目的,进行了应用容器化管理,把大型应用拆分成小的微服务。利用拆分成的微服务提供对外的服务,各个微服务互相关联、互相访问,最终形成一个统一的整体应用服务的功能。在这种情况下,既可以减轻单一服务的压力,还可以解决服务的高可用,因此利用微服务对外提供服务的技术得到了很多公司主流业务的使用,且该技术可以大力推广。

现有技术中拆分大型应用服务为微服务是通过手动拆分完成的,手动拆分的过程大致包括:对应用划分功能模块,对各模块关键函数方法形成统一的标准调用接口和应用程序编程接口api,把每个模块做成容器镜像,配置自启动服务。但是,手动拆分的方式工作量很大,工作成本高,拆分效率低。



技术实现要素:

为解决上述技术问题,本发明提供如下技术方案:

一种拆分大型应用服务为微服务的方法,包括:

接收提取目标微服务的请求指令;

通过方法跟踪技术从预设的代码集合中拆分出所述请求指令对应的目标代码;

根据所述目标代码的特征信息,对所述目标代码进行分类,并生成对应类别的模块;

将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件;

通过所述主函数从所述镜像文件中提取所述目标微服务。

在本发明的一种具体实施方式中,所述将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件,包括:

当调用测试脚本测试到所述模块的入口可用时,将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件。

在本发明的一种具体实施方式中,在所述将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件之后,还包括:

对所述镜像文件进行高可用部署和负载均衡部署。

在本发明的一种具体实施方式中,在所述从所述镜像文件中提取所述目标微服务之后,还包括:

为所述目标微服务部署服务功能。

在本发明的一种具体实施方式中,所述根据所述目标代码的特征信息,对所述目标代码进行分类,包括:

根据所述目标代码的请求路径,对所述目标代码进行分类。

一种拆分大型应用服务为微服务的装置,包括:

指令接收单元,用于接收提取目标微服务的请求指令;

代码拆分单元,用于通过方法跟踪技术从预设的代码集合中拆分出所述请求指令对应的目标代码;

模块生成单元,用于根据所述目标代码的特征信息,对所述目标代码进行分类,并生成对应类别的模块;

封装单元,用于将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件;

微服务提取单元,用于通过所述主函数从所述镜像文件中提取所述目标微服务。

在本发明的一种具体实施方式中,所述封装单元具体为当调用测试脚本测试到所述模块的入口可用时,将所述模块的入口封装到主函数中,并将所述模块封装成提供所述目标微服务的镜像文件的单元。

在本发明的一种具体实施方式中,还包括:

部署单元,用于对所述镜像文件进行高可用部署和负载均衡部署。

一种拆分大型应用服务为微服务的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如前所述拆分大型应用服务为微服务的方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述拆分大型应用服务为微服务的方法的步骤。

应用本发明实施例所提供的技术方案,根据接收的请求指令,从代码集合中拆分出对应的目标代码,对目标代码进行分类,并生成对应类别的模块,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件,通过主函数从镜像文件中提取目标微服务。通过根据接收到的用户发送的提取目标微服务的请求指令,从代码集合中拆分出与请求指令对应的目标代码,对目标代码进行分类,生成对应类别的模块,并将模块的入口封装到主函数中,以便后续对目标微服务的调用,将模块封装成提供目标微服务的镜像文件,进行服务与环境的隔离,从镜像文件中提取目标微服务。自动将大型应用服务差分成微服务,较大地降低了工作量,降低了工作成本,提高了拆分效率。

附图说明

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

图1为本发明实施例中一种拆分大型应用服务为微服务的方法的实施流程图;

图2为本发明实施例中一种拆分大型应用服务为微服务的装置的结构框图;

图3为本发明实施例中一种拆分大型应用服务为微服务的设备的结构框图。

具体实施方式

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

参见图1,为本发明实施例中一种拆分大型应用服务为微服务的方法的实施流程图,该方法可以包括以下步骤:

s101:接收提取目标微服务的请求指令。

当用户需要应用目标微服务时,可以向系统发送提取该目标微服务的请求指令。提取目标微服务的请求指令可以是提取添加服务、修改服务及删除服务中的一种或多种微服务的请求指令。系统接收提取目标微服务的请求指令。

微服务指用容器管理的服务,每个服务即一个容器来管理,且可以对外提供服务。

s102:通过方法跟踪技术从预设的代码集合中拆分出请求指令对应的目标代码。

可以预先设置提供应用的全部代码的代码集合,当系统接收到提取目标微服务的请求指令时,通过方法跟踪技术以上传的方式或者共享的方式从代码集合中拆分出请求指令对应的目标代码,即本着通用的原则,对代码拆分时遵循mvc框架架构拆分原理,从代码集合中拆分出请求指令对应的目标代码。可以通过一个自动检查的脚本,自动得到请求的函数,请求的方法,请求的方法目前包括http和socker两种。

s103:根据目标代码的特征信息,对目标代码进行分类,并生成对应类别的模块。

通过方法跟踪技术从预设的代码集合中拆分出请求指令对应的目标代码后,可以根据目标代码的特征信息,调用分类脚本对目标代码进行分类,把相同的目标代码构成的方法函数和其需要依赖的调用函数统一得到,该过程就是自动编程生成对应类别的模块,如添加模块、修改模块以及删除模块,并对各个模块形成统一的标准调用接口和应用程序编程接口。

s104:将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件。

当根据目标代码的特征信息,对目标代码进行分类,并生成对应类别的模块后,可以将模块的入口封装到主函数中,方便后续的提取到的目标微服务提供基本调用服务。此时,每个模块的基本微服务就有了雏形,进一步地,调用容器docker的build功能,自动将模块封装成提供目标微服务的镜像文件,过程相对简单。可以将得到的编译好的文件,自动把目标微服务做成容器里的服务,即linux系统中的服务,自动运行该目标微服务,且配置成后台自动运行,同时提供容器自动启动脚本,在这种情况下,只要容器启动,服务就会自动启动。

在本发明的一种具体实施方式中,步骤s104可以包括以下步骤:

当调用测试脚本测试到模块的入口可用时,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件。

根据目标代码的特征信息,对目标代码进行分类,得到相同类别的目标代码和其需要依赖的调用函数,该过程可以看作是一个函数追踪器自动编程的过程,从主函数触发,自动追踪所有关联函数,然后自动把该函数同一拷贝到当前文件中,形成一个大文件,同时把对应的库文件拷贝过来。生成目标代码对应类别的模块后,自动调用测试脚本test自动测试模块的入口是否可以用,不需要人工测试,当测试到模块的入口可用时,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件。

s105:通过主函数从镜像文件中提取目标微服务。

将生成的模块封装成提供目标微服务的镜像文件后,可以通过封装有模块入口的主函数从镜像文件中提取目标服务,从而完成将大型应用服务拆分成目标微服务的任务。该目标微服务可以单独对外提供服务功能,且不只可以对本应用服务,还可以对其他应用服务,比如结构化查询语言sql可以支持多个应用同时访问。提取出的目标微服务就相当于一个目录,把该目录拷贝到任何一个物理服务器上,一般linux系统都可以运行。

大型应用服务指现在还没有用到微服务来进行管理的应用服务,且该应用服务拆分成多个微服务且数量应该大于一个的服务。

应用本发明实施例所提供的方法,根据接收的请求指令,从代码集合中拆分出对应的目标代码,对目标代码进行分类,并生成对应类别的模块,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件,通过主函数从镜像文件中提取目标微服务。通过根据接收到的用户发送的提取目标微服务的请求指令,从代码集合中拆分出与请求指令对应的目标代码,对目标代码进行分类,生成对应类别的模块,并将模块的入口封装到主函数中,以便后续对目标微服务的调用,将模块封装成提供目标微服务的镜像文件,进行服务与环境的隔离,从镜像文件中提取目标微服务。自动将大型应用服务差分成微服务,较大地降低了工作量,降低了工作成本,提高了拆分效率。

在本发明的一种具体实施方式中,在步骤s104之后,还可以包括以下步骤:

对镜像文件进行高可用部署和负载均衡部署。

将模块封装成提供目标微服务的镜像文件后,可以调用deploy.sh脚本对镜像文件进行高可用部署和负载均衡部署,其中,高可用备份数,可以根据具体业务的能力进行定义,以此来缓解单一服务压力的问题。

在本发明的一种具体实施方式中,在步骤s105之后,还可以包括以下步骤:

根据目标代码的请求路径,对目标代码进行分类。

目标代码的特征信息可以包括目标代码的请求路径,可以根据目标代码的请求路径,对目标代码进行分类,得到相同类别的目标代码,并可以将请求路径、请求方法、被请求的方法等,通过列表list的方式存入到缓冲中。

在实际应用中,将大型应用拆分为微服务的过程可以为:得到代码集合中的全部代码调用上传脚本fileup.sh,它会自动把代码上传到工作目录中,然后调用analyze.sh脚本,自动开始分析工作目录中的文件。分析完成后会生成一个目录,同时启动自启动检查脚本,该脚本只要发现这个目录中有文件,就会自动进行调用docker的buildfile文件进行自动做镜像文件。调用deploy.sh脚本,自动部署业务,形成统一的微服务,从而轻松地完成整个拆分任。

相应于上面的方法实施例,本发明实施例还提供了一种拆分大型应用服务为微服务的装置,下文描述的一种拆分大型应用服务为微服务的装置与上文描述的一种拆分大型应用服务为微服务的方法可相互对应参照。

参见图2,为本发明实施例中一种拆分大型应用服务为微服务的装置的结构框图,该装置可以包括以下单元:

指令接收单元201,用于接收提取目标微服务的请求指令;

代码拆分单元202,用于通过方法跟踪技术从预设的代码集合中拆分出请求指令对应的目标代码;

模块生成单元203,用于根据目标代码的特征信息,对目标代码进行分类,并生成对应类别的模块;

封装单元204,用于将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件;

微服务提取单元205,用于通过主函数从镜像文件中提取目标微服务。

应用本发明实施例所提供的装置,根据接收的请求指令,从代码集合中拆分出对应的目标代码,对目标代码进行分类,并生成对应类别的模块,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件,通过主函数从镜像文件中提取目标微服务。通过根据接收到的用户发送的提取目标微服务的请求指令,从代码集合中拆分出与请求指令对应的目标代码,对目标代码进行分类,生成对应类别的模块,并将模块的入口封装到主函数中,以便后续对目标微服务的调用,将模块封装成提供目标微服务的镜像文件,进行服务与环境的隔离,从镜像文件中提取目标微服务。自动将大型应用服务差分成微服务,较大地降低了工作量,降低了工作成本,提高了拆分效率。

在本发明的一种具体实施方式中,封装单元204具体为当调用测试脚本测试到模块的入口可用时,将模块的入口封装到主函数中,并将模块封装成提供目标微服务的镜像文件的单元。

在本发明的一种具体实施方式中,该装置还可以包括:

部署单元,用于对镜像文件进行高可用部署和负载均衡部署。

在本发明的一种具体实施方式中,该装置还可以包括:

部署单元,用于为所述目标微服务部署服务功能。

在本发明的一种具体实施方式中,模块生成单元203,包括代码分类子单元,

代码分类子单元,用于根据目标代码的请求路径,对目标代码进行分类。

相应于上面的方法实施例,本发明实施例还提供了一种拆分大型应用服务为微服务的设备,下文描述的一种拆分大型应用服务为微服务的设备与上文描述的一种拆分大型应用服务为微服务的方法可相互对应参照。

如图3所示,该设备可以包括:

存储器301,用于存储计算机程序;

处理器302,用于执行计算机程序时实现方法实施例中拆分大型应用服务为微服务的方法的步骤。

相应于上面的方法实施例,本发明实施例还提供了一种计算机可读存储介质,下文描述的一种计算机可读存储介质与上文描述的一种拆分大型应用服务为微服务的方法可相互对应参照。

一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现方法实施例中拆分大型应用服务为微服务的方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1