发明内容
本申请实施例提供了一种微服务部署方法、设备及介质,用以解决现有的微服务部署方法大部分是人为操作,较易出错的技术问题。
本申请实施例提供了一种微服务部署方法,包括:分别确定各微服务对应的多个应用程序接口,及各应用程序接口对应的统一资源定位路径;基于待配置的Nginx配置文件,根据各应用程序接口对应的统一资源定位路径,配置针对各应用程序接口的匹配路径;并配置用于提供微服务的各上游服务器,以得到针对各微服务的Nginx配置文件模板;基于预设的GUI程序,将Nginx配置文件模板,以及各微服务的上游服务器的地址及端口号添加至对应的GUI界面中,以生成可执行的Nginx配置文件;运行可执行的Nginx配置文件,验证各微服务对应的后端服务是否响应;在各微服务对应的后端服务均响应的情况下,确定微服务部署成功。
在本申请的一种实现方式中,根据多个应用程序接口对应的统一资源定位路径,配置针对各应用程序接口的匹配路径,具体包括:确定各应用程序接口对应的统一资源定位路径的前缀;将前缀从起始位置起连续且相同的部分作为最小前缀,并将最小前缀添加至待配置的Nginx配置文件中,生成对应的匹配路径,以通过匹配路径定位各应用程序接口对应的微服务。
在本申请的一种实现方式中,配置用于提供微服务的各上游服务器,具体包括:确定用于提供微服务的上游服务器的全局唯一名称;根据全局唯一名称,确定各微服务的上游服务器对应的反向代理路径,以便于通过反向代理路径定位相应的上游服务器。
在本申请的一种实现方式中,生成可执行的Nginx配置文件之后,方法还包括:通过正则表达式,依次与可执行的Nginx配置文件中的匹配路径进行匹配,以通过匹配路径确定对应的上游服务器地址列表;对上游服务器地址列表中的地址与GUI界面中添加的地址进行一致性校验。
在本申请的一种实现方式中,验证各微服务对应的后端服务是否响应,具体包括:基于可执行的Nginx配置文件中设置的监听地址,验证各微服务对应的统一资源定位路径是否连通;若连通,通过统一资源定位路径定位到对应的微服务,以确定微服务的后端服务响应。
在本申请的一种实现方式中,分别确定各微服务对应的多个应用程序接口之前,方法还包括:获取待配置的Nginx配置文件,并对待配置的Nginx配置文件中的HTTP模块及Server模块进行安全加固。
在本申请的一种实现方式中,确定微服务部署成功之后,方法还包括:确定主Nginx服务器对应的公网虚拟IP地址;其中,主Nginx服务器与可执行的Nginx配置文件相对应;在主Nginx服务器发生故障的情况下,调用热备Nginx服务器接管公网虚拟IP地址,并通过热备Nginx服务器对应的Nginx配置文件部署各微服务。
在本申请的一种实现方式中,方法还包括:在微服务发生异常的情况下,基于可执行的Nginx配置文件,更新微服务对应的上游服务器;在微服务需进行安全升级的情况下,修改Nginx配置文件模板,以使微服务对应的上游服务器信息重新融合。
本申请实施例还提供了一种微服务部署设备,设备包括:处理器;及存储器,其上存储有可执行代码,当可执行代码被执行时,使得处理器执行如上述的微服务部署方法。
本申请实施例还提供了一种微服务部署非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:如上述任一项的微服务部署方法。
本申请实施例提供的一种微服务部署方法、设备及介质,至少具备以下有益效果:集成不同微服务的设置,并将其融合到同一配置文件中去,提高了交付效率和产品稳定性、安全性,在实现微服务部署的基础上,还能够减少错误率,避免命令行部署下的输入错误;通过Nginx服务器,接收客户端请求并对其进行转发处理,实现了微服务的负载均衡及反向代理;通过GUI界面自动生成针对不同微服务的连接配置,且可以自行检查是否存在配置异常情况,实现了快速可靠的微服务部署。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
API可作为微服务应用程序,用户通过统一入口即可访问相应的微服务。Nginx(engine x)作为高性能、轻量级反向代理和负载均衡服务器,具有处理API所需的HTTP功能,同时还具有反向代理和负载均衡的功能。本申请实施例通过配置统一的Nginx配置文件完成多个微服务的部署,以实现多个微服务的调用。
下面通过附图对本申请实施例提出的技术方案进行详细的说明。
图1为本申请实施例提供的一种微服务部署方法的流程图。如图1所示,本申请实施例提供的微服务部署方法可以主要包括以下步骤:
S101、服务器分别确定各微服务对应的多个应用程序接口,及各应用程序接口对应的统一资源定位路径。
服务器确定各微服务分别对应的API及各API对应的统一资源定位路径(UniformResource Locator,URL),以通过在Nginx配置文件中添加URL去定位相应的微服务API。各API都有其特定的路径特点,因此,当客户端请求相应的应用程序接口功能时,通过其对应的URL便可实现功能的定位。
在一个实施例中,在确定微服务对应的API之前,服务器需获取到待配置的Nginx配置文件,然后对待配置的Nginx配置文件中的HTTP模块及Server模块进行安全加固处理,避免处理配置文件时出现版本泄露、盗链以及任意文件下载等漏洞,提高部署安全性。需要说明的是,此时的待配置Nginx配置文件是Nginx安装成功后保存至相应文件下的nginx.conf文件,其中已存在Nginx服务器的基础配置。
需要说明的是,本申请实施例服务器作为执行主体,只是示例性的存在,不局限于服务器作为执行主体,具体可根据实际情况调整。
S102、基于待配置的Nginx配置文件,服务器根据各应用程序接口对应的统一资源定位路径,配置针对各应用程序接口的匹配路径;并配置用于提供微服务的各上游服务器,以得到针对各微服务的Nginx配置文件模板。
服务器根据API对应的URL路径,在Nginx配置文件中配置针对各API的匹配路径,以通过匹配路径定位对应的微服务,同时,配置用于提供微服务的各上游服务器即upstream server模块。upstream server模块主要负载均衡的配置,通过默认的轮询调度方式来分发请求到各服务器,可增加吞吐量,加强数据处理能力。
具体地,服务器确定各API的URL前缀,将各前缀中从起始位置其连续且相同的部分作为最小前缀,最小前缀用于描述每个API特定的路径。例如,假设/api/abcgf/.../、/api/abdsbc.../、/api/abcad/...分别为三个不同API对应的URL,它们的最小前缀则为/api/ab,也就是说,最小前缀是需要部署到同一个节点的服务的最大相同点。若存在多个URL才能够定位到微服务的全部功能,则需要对全部URL的最小前缀进行罗列。
之后,将最小前缀添加至Nginx配置文件中的location块,即生成了相应的匹配路径。这样在客户端在调用API应用程序功能时,通过与匹配路径进行匹配,仅比较前缀便可确定相应的location模块,从而关联到反向代理、负载均衡等各项功能。最小前缀大大减少了微服务部署的复杂程度。
其次,服务器确定用于提供微服务的上游服务器的全局唯一名称,全局唯一名称能够实现在Nginx配置文件中对于微服务的定位。例如,财务微服务对应的上游服务器的全局唯一名称可命名为upstream fi_nginx_server_loadblance{sticky;},该地址用于表示运行财务微服务应用的服务器地址。
相应的,服务器根据全局唯一名称,确定各微服务的上游服务器对应的反向代理路径。例如,确定财务微服务的反向代理路径为proxy_pass http://fi_nginx_server_loadblance,反向代理路径与财务微服务的上游服务器全局唯一名称相对应,因此,当客户端在调用API应用程序功能时,可通过API的最小前缀定位到相应的location模块,进而确定微服务的反向代理路径,从而将请求发送至相应的负载均衡服务器。
至此,便得到了针对各微服务的Nginx配置文件模板,Nginx配置文件模板与待配置的Nginx配置文件相对应。当服务器异常或需要升级时,此时通过更改Nginx配置文件模板中的上游服务器地址列表,便可实现服务器信息的同步更新。
S103、基于预设的GUI程序,服务器将Nginx配置文件模板,以及各微服务的上游服务器的地址及端口号添加至对应的GUI界面中,以生成可执行的Nginx配置文件。
为避免交付过程中出现异常,服务器基于预设的GUI程序生成对应的GUI界面,将Nginx配置文件模板作为输入模板添加至GUI界面中,并将用于提供微服务负载均衡的上游服务器地址和端口号均添加至GUI界面中。至此,便生成了可执行的Nginx配置文件。可执行的Nginx配置文件在生成后,会自动进行dryrun操作,验证配置文件是否存在异常。
通过GUI界面的方式自动生成不同微服务的连接配置,形成统一应用入口,同时,GUI能够进行检查,避免人工在命令行模式下输入错误的情况出现,以及能集成多个不同的微服务的设置融合到一个配置文件中去,提高交付效率和产品稳定性安全性。
在一个实施例中,服务器在上游服务器地址和端口号均添加至GUI界面后,会自动通过正则表达式,依次与可执行的Nginx配置文件中的匹配路径进行匹配,当匹配到相应的location模块后,确定所要请求的微服务对应的上游服务器地址列表。然后,对上游服务器地址列表中的地址与GUI界面中添加的地址进行一致性校验,如果一致,则说明GUI界面中添加的上游服务器地址和端口已正确同步至相应的Nginx配置文件模板中。对配置文件进行校验,可以保证环境正常联通,避免发生异常。
需要说明的是,GUI界面中提供保存设置和校验提示设置,当用户在完成必输项目后可以保存当前设置,然后进行当前输入信息的完整性校验。服务器会自动验证当前微服务的API对应的URL是否完备,避免因URL缺失造成微服务的异常响应。
S104、服务器运行可执行的Nginx配置文件,验证各微服务对应的后端服务是否响应。
在进入生产环境后,服务器运行可执行的Nginx配置文件,通过Nginx服务器的监听地址,验证各微服务对应的后端服务是否响应。
具体地,基于可执行的Nginx配置文件中设置的监听地址,服务器验证各微服务对应的统一资源定位路径是否连通。若连通,则通过统一资源定位路径定位到对应的微服务,并反馈给客户端其请求的微服务的后端服务可正常响应的消息。例如,当客户端想请求财务应用时,若微服务对应的后端服务正常响应,那么客户端便可通过财务应用对应的API获取到相应的后端服务如获取当前项目的金额。通过监听各微服务对应的统一资源定位路径是否连通,有利于及时确定微服务的运转状态,保证数据交付不受影响。
S105、在各微服务对应的后端服务均响应的情况下,确定微服务部署成功。
如果各微服务对应的后端服务均响应,表示微服务部署成功,客户端即可通过调用API请求相应的微服务。
在一个实施例中,服务器可通过增加虚拟IP地址的方式,提高微服务部署的健壮性。
具体地,在微服务部署成功后,将当前配置完成的可执行Nginx配置文件对应的Nginx服务器作为主Nginx服务器,并确定其对应的公网虚拟IP地址。主Nginx服务器和热备Nginx服务器共用一个公网虚拟IP地址,在主Nginx服务器正常工作的情况下,热备Nginx服务器处于空闲状态。而在主Nginx服务器发生故障的情况下,热备Nginx服务器接管主Nginx服务器的公网虚拟IP地址,通过配置热备Nginx服务器对应的Nginx配置文件可以部署各微服务,并且,通过Nginx服务器也可提供负载均衡服务,这样实现了微服务的高可用,避免单点故障。
在一个实施例中,服务器集成多个不同的微服务至同一Nginx配置文件中,因此,当微服务部署完成后,通过更新Nginx配置文件即可实现微服务的同步更新。在微服务发生异常的情况下,基于可执行的Nginx配置文件,可自动修改、添加或移除微服务对应的上游服务器。并且,在微服务需进行安全升级的情况下,通过修改Nginx配置文件模板即可将微服务对应的上游服务器信息重新融合,提高安全性。
本申请实施例提供的一种微服务部署方法,在不同的微服务侧部署多个服务器,然后将其对应的地址及连接端口均罗列至Nginx配置文件中去,实现了针对不同微服务的负载均衡。通过配置一个Nginx配置文件,完成多个微服务的部署,例如,若计划部署一套微服务系统,包括用户认证、权限处理、财务会计、个人报销、资金结算等微服务,通过统一的Nginx配置文件即可完成全部部署,提高了交付效率,也避免了手工部署过程中常见的输入错误。通过GUI界面自动生成针对不同微服务的连接配置,且可以自行检查是否存在配置异常情况,实现了快速可靠的微服务部署。
以上为本申请提出的方法实施例。基于同样的思路,本申请的一些实施例还提供了上述方法对应的设备和非易失性计算机存储介质。
图2为本申请实施例提供的一种微服务部署设备的结构示意图。如图2所示,微服务部署设备包括:至少一个处理器201以及与至少一个处理器201通信连接的存储器202,存储器202存储有可被至少一个处理器201执行的指令,指令被至少一个处理器201执行,以使至少一个处理器201能够执行如上所述的微服务部署方法。
本申请的一些实施例还提供的一种微服务部署的非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:如上所述的微服务部署方法。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。