基于无感更新微服务的网页访问方法、设备、介质及产品与流程

文档序号:31059575发布日期:2022-08-09 19:21阅读:315来源:国知局
基于无感更新微服务的网页访问方法、设备、介质及产品与流程

1.本发明涉及微服务版本更新领域,尤其涉及基于无感更新微服务的网页访问方法、设备、介质及产品。


背景技术:

2.普通的更新微服务版本的方式,本地打包源代码,上传服务器,手动执行启动发布各微服务模块脚本执行部署任务。
3.前端使用了vue框架,由于vue为单页应用,所有当index.html页面在浏览器中加载完成时,所有静态文件的访问地址就固定了下来。
4.当用户正在使用该应用时,前端发包就可能会出现,旧的静态文件已经被删除,用户再访问该文件就会出现找不到该静态文件的情况(请求404),出现该情况用户必须手动刷新页面来重新加载index.html页面来更新静态文件地址。
5.如图2所示,图2为现有技术中微服务部署过程中用户的请求链路走向图,各客户端服务都会通过微服务异步线程同步注册中心已注册服务的注册表信息到客户端本地缓存。当用户发起一个请求后,请求先进入nginx再转到gateway服务,gateway服务发现注册表已注册的服务a有2个版本,分别是已存在的旧版本v1.0和新启动的新版本v2.0,此时请求会根据微服务的负载均衡机制随机进入其中一个版本,但是新版本部署成功后,会终止掉服务a的旧版本v1.0,释放旧版本占用的服务器资源,如果此时的请求随机进入旧版本v1.0,则会发生服务不可用的情况,而服务不可用的情况就会反馈到用户端,需要用户手动来操作为微服务的更新。


技术实现要素:

6.为了克服现有技术的不足,本发明的目的之一在于提供基于无感更新微服务的网页访问方法,其能解决现有的微服务更新过程中在用户请求链路中会随机进入旧版本的微服务中,导致发生服务不可用的情况,进而需要用户手动操作微服务更新的问题。
7.本发明的目的之二在于提供一种电子设备,其能解决现有的微服务更新过程中在用户请求链路中会随机进入旧版本的微服务中,导致发生服务不可用的情况,进而需要用户手动操作微服务更新的问题。
8.本发明的目的之三在于提供一种计算机可读存储介质,其能解决现有的微服务更新过程中在用户请求链路中会随机进入旧版本的微服务中,导致发生服务不可用的情况,进而需要用户手动操作微服务更新的问题。
9.本发明的目的之四在于提供一种计算机程序产品,其能解决现有的微服务更新过程中在用户请求链路中会随机进入旧版本的微服务中,导致发生服务不可用的情况,进而需要用户手动操作微服务更新的问题。
10.本发明的目的之一采用以下技术方案实现:
11.基于无感更新微服务的网页访问方法,包括以下步骤:
12.将不同目标微服务的最新版本部署在对应的云服务器并启动;
13.判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,当所有目标微服务的最新版本均在注册中心注册成功后,控制redis数据库更新所有目标微服务的新服务版本号信息;
14.控制gateway服务接收用户发送的用户操作请求,控制gateway服务访问redis数据库获取与所述用户操作请求对应的所有目标微服务的新服务版本号信息;
15.控制gateway服务根据所述新服务版本号信息将用户操作请求转发至新服务版本的目标微服务上进行访问。
16.进一步地,所述将不同目标微服务的最新版本部署在对应的云服务器并启动具体为:将不同目标微服务的最新版本对应的源代码编译成对应的jar包,将不同目标微服务的最新版本对应的jar包运行在对应的云服务器上。
17.进一步地,所述将不同目标微服务的最新版本对应的jar包运行在对应的云服务器上具体为:将不同目标微服务的最新版本对应的jar包移动至预设指定目录下,移动完毕后,执行shell脚本,将不同目标微服务的最新版本对应的jar包运行在对应的云服务器上。
18.进一步地,在判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功之前还包括:在每次启动单个目标微服务的最新版本后,判断此次启动的目标微服务的最新版本在注册中心是否注册成功,若是,则执行判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,若否,则在预设等待时间后重新判断此次启动的目标微服务的最新版本在注册中心是否注册成功。
19.进一步地,所述预设等待时间为10秒。
20.进一步地,在redis数据库更新所有目标微服务的新服务版本号信息之后需要终止掉所有目标微服务对应的旧版本。
21.进一步地,还包括接收用户访问网页请求后,判断与所述用户访问网页请求对应的静态文件是否加载成功,若是,则正常访问,若否,则根据所述用户访问网页请求中对应的访问地址以及访问参数进行页面跳转操作,直至跳转到更新后的访问页面。
22.本发明的目的之二采用以下技术方案实现:
23.一种电子设备,包括:处理器;
24.存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行本技术中所述的基于无感更新微服务的网页访问方法。
25.本发明的目的之三采用以下技术方案实现:
26.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中所述的基于无感更新微服务的网页访问方法。
27.本发明的目的之四采用以下技术方案实现:
28.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本技术中所述的基于无感更新微服务的网页访问方法。
29.相比现有技术,本发明的有益效果在于:本技术中的基于无感更新微服务的网页访问方法,通过将不同目标微服务的最新版本部署在对应的云服务器并启动;判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,当所有目标微服务的最新版本均在注册中心注册成功后,控制redis数据库更新所有目标微服务的新服务版本号信息;控
制gateway服务接收用户发送的用户操作请求,控制gateway服务访问redis数据库获取与用户操作请求对应的所有目标微服务的新服务版本号信息;控制gateway服务根据新服务版本号信息将用户操作请求转发至新服务版本的目标微服务上进行访问,用户操作请求的整个传输链路中,通过redis数据库精准获取到目标微服务的新服务版本号信息,从而使用户操作请求在目标微服务的新服务版本号信息得到反馈,不会出现因版本更新导致后随机选取版本带来的微服务不可用的情况,也无需用户手动操作微服务进行更新,使整个目标微服务的更新过程对于用户是无感进行的。
30.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
31.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
32.图1为本发明的基于无感更新微服务的网页访问方法的流程示意图;
33.图2为现有技术中微服务部署过程中用户的请求链路走向图;
34.图3为本发明的基于无感更新微服务的网页访问方法中微服务部署过程中用户的请求链路走向图。
具体实施方式
35.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
36.如图1所示,本技术中基于无感更新微服务的网页访问方法,包括以下步骤:
37.将不同目标微服务的最新版本部署在对应的云服务器并启动。此步骤具体为:
38.在本实施例中,每个目标微服务会部署在单独对应的云服务器上,首先选择第一个需要部署的目标微服务,然后令第一个需要部署的目标微服务对应的云服务器作为第一云服务器,第一步、在第一云服务器上根据预编写jenkinsfile(jenkinsfile是一个文本文件,其中包含jenkins pipeline的定义,并已签入源代码管理)文件上面配置的远程仓库地址去gitee(代码托管平台)拉取源代码到第一云服务器上,然后将源代码编译成可直接运行的jar包;
39.第二步、因为所有的云服务器都是linux系统(所有文件都存储在根目录下),文件都是以目录形式存储,各jar包都是存储在不同目录下,为保证后面部署服务中shell脚本的适用性(一个脚本全覆盖所有微服务服务),需将前述编译完成的所有jar包移动到预设指定目录下。第三步、将第一云服务器预设指定目录中的所有jar包推动到其他对应的云服务器上,并在每个对应云服务器上启动对应的jar包。
40.上述启动每个云服务器上对应的jar包时,都需要以下具体工作流程:将不同目标微服务的最新版本对应的jar包移动至预设指定目录下,移动完毕后,执行shell脚本(shell脚本与windows/dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方
便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了linux/unix下的命令。),将不同目标微服务的最新版本对应的jar包运行在对应的云服务器上,启动目标微服务的最新版本时,需要拉取注册中心该目标微服务已注册的版本号信息,然后需要判断此次启动的目标微服务的最新版本在注册中心是否注册成功,若是,则执行判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,若否,则在预设等待时间后重新判断此次启动的目标微服务的最新版本在注册中心是否注册成功;在本实施例中的预设等待时间为10秒。
41.对于在每次运行单个云服务器上的jar包后,判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,当所有目标微服务的最新版本均在注册中心注册成功后,控制redis数据库更新所有目标微服务的新服务版本号信息。
42.控制gateway服务接收用户发送的用户操作请求,控制gateway服务访问redis数据库获取与所述用户操作请求对应的所有目标微服务的新服务版本号信息。在本实施例中,在redis数据库更新完所有目标微服务的新服务版本号信息之后需要终止掉所有目标微服务对应的旧版本,从而保证旧版本服务可能存在的异步请求操作执行完毕,再从注册中心踢掉旧版本服务。如图3所示,图3为本方案中改进后微服务部署过程中用户的请求链路走向图,加入了redis数据库来提供更加精准的新服务版本号信息。
43.控制gateway服务(又称网间连接器、协议转换器)根据所述新服务版本号信息将用户操作请求转发至新服务版本的目标微服务上进行访问。
44.在接收用户访问网页请求后,判断与所述用户访问网页请求对应的静态文件是否加载成功,若是,则正常访问,若否,则根据所述用户访问网页请求中对应的访问地址以及访问参数进行页面跳转操作,直至跳转到更新后的访问页面,此跳转后的访问页面即会重新加载新的静态文件,从而达到用户的无感跳转,本实施例中的静态文件中包括用于连接新版本微服务的地址信息。
45.本发明还提供一种电子设备,包括:处理器;
46.存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行本技术中所述的基于无感更新微服务的网页访问方法。
47.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中所述的基于无感更新微服务的网页访问方法。
48.本发明还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本技术中所述的基于无感更新微服务的网页访问方法。
49.本技术中的基于无感更新微服务的网页访问方法,通过将不同目标微服务的最新版本部署在对应的云服务器并启动;判断需要更新的所有目标微服务的最新版本在注册中心是否注册成功,当所有目标微服务的最新版本均在注册中心注册成功后,控制redis数据库更新所有目标微服务的新服务版本号信息;控制gateway服务接收用户发送的用户操作请求,控制gateway服务访问redis数据库获取与用户操作请求对应的所有目标微服务的新服务版本号信息;控制gateway服务根据新服务版本号信息将用户操作请求转发至新服务版本的目标微服务上进行访问,用户操作请求的整个传输链路中,通过redis数据库精准获取到目标微服务的新服务版本号信息,从而使用户操作请求在目标微服务的新服务版本号
信息得到反馈,不会出现因版本更新导致后随机选取版本带来的微服务不可用的情况,也无需用户手动操作微服务进行更新,使整个目标微服务的更新过程对于用户是无感进行的。
50.以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1