本发明涉及微服务,尤其涉及一种重启微服务的方法及相关装置。
背景技术:
1、现有的微服务在运行时,一般是以容器的形式进行运行,而java微服务则是加载不同jar包完成特定业务功能的容器,现有企业在将整套java微服务迁入云端时,采用的是java微服务的zookeeper注册发现的流量路由机制,而现有的云端在管理java微服务时,无法获取到java微服务的业务运行状态,故现有技术在重启java微服务时,会面临以下问题:
2、java微服务被强行关闭时,在原有java微服务中存在未处理完成的流量,而这些未处理完成的流量会导致系统错误。
技术实现思路
1、本发明实施例提供了一种重启微服务的方法及相关装置,用于在旧微服务容器中的业务线程运行结束后,才将发送至所述旧微服务容器的流量导入至所述新微服务容器,从而保证了旧微服务容器中流量的正常处理,也即避免了因为旧微服务容器中存在未处理完成的流量而导致的系统错误问题。
2、本申请实施例第一方面提供了一种重启微服务的方法,所述方法包括:
3、接收微服务的重启请求,其中,所述微服务以容器的形式运行;
4、根据所述重启请求,创建新微服务容器;
5、若所述新微服务容器创建完成,则获取旧微服务容器中业务线程的运行状态,并在所述业务线程运行结束后,将发送至所述旧微服务容器的流量导入至所述新微服务容器。
6、优选的,在所述创建新微服务容器之后,所述方法还包括:
7、向所述新微服务容器发送流量请求;
8、若接收到所述流量请求的响应信息,则确定所述新微服务容器创建完成。
9、优选的,在获取旧微服务容器中业务线程的运行状态之前,所述方法还包括:
10、触发所述新微服务容器将自身的服务端口和容器识别码写入可以存储键值对的存储组件中;
11、所述将发送至所述旧微服务容器的流量导入至所述新微服务容器,包括:
12、当接收到流量访问请求时,将所述新微服务容器的服务端口分发至所述流量访问请求。
13、优选的,在触发所述新微服务容器将自身的服务端口和容器识别码写入可以存储键值对的存储组件中之前,所述方法还包括:
14、建立所述新微服务标识码和新微服务容器标识码之间的映射关系,使得能根据所述新微服务标识码和所述新微服务容器标识码中的其中一个,确定另一个。
15、优选的,在获取旧微服务容器中业务线程的运行状态之前,所述方法还包括:
16、在可以存储键值对的存储组件中删除所述旧微服务容器的服务端口和容器识别码。
17、优选的,在获取旧微服务容器中业务线程的运行状态之后,所述方法还包括:
18、判断所述业务线程是否运行结束;
19、若否,则在预设时长后将发送至所述旧微服务容器的流量导入至所述新微服务容器。
20、优选的,若所述业务线程未运行结束,则以第一方式获取预设时长,所述第一方式包括:从系统的环境变量、容器管理平台的配置文件或容器管理平台的资源对象文件中获取。
21、本申请实施例第二方面提供了一种容器管理平台,包括:
22、接收单元,用于接收微服务的重启请求,其中,所述微服务以容器的形式运行;
23、创建单元,用于根据所述重启请求,创建新微服务容器;
24、导入单元,用于若所述新微服务容器创建完成,则获取旧微服务容器中业务线程的运行状态,并在所述业务线程运行结束后,将发送至所述旧微服务容器的流量导入至所述新微服务容器。
25、优选的,所述容器管理平台还包括:
26、发送单元,用于向所述新微服务容器发送流量请求;
27、确定单元,用于若接收到所述流量请求的响应信息,则确定所述新微服务容器创建完成
28、优选的,所述容器管理平台还包括:
29、触发单元,用于触发所述新微服务容器将自身的服务端口和容器识别码写入可以存储键值对的存储组件中;
30、所述导入单元,具体用于:
31、用于若所述新微服务容器创建完成,则获取旧微服务容器中业务线程的运行状态,并在所述业务线程运行结束后,当接收到流量访问请求时,将所述新微服务容器的服务端口分发至所述流量访问请求。
32、优选的,所述创建单元还用于:
33、在触发所述新微服务容器将自身的服务端口和容器识别码写入可以存储键值对的存储组件中之前,建立所述新微服务标识码和新微服务容器标识码之间的映射关系,使得能根据所述新微服务标识码和所述新微服务容器标识码中的其中一个,确定另一个。
34、优选的,所述容器管理平台还包括:
35、删除单元,用于在获取旧微服务容器中业务线程的运行状态之前,在可以存储键值对的存储组件中删除所述旧微服务容器的服务端口和容器识别码。
36、优选的,所述容器管理平台还包括:
37、判断单元,用于判断所述业务线程是否运行结束;
38、获取单元,用于在所述业务线程未运行结束时,以第一方式获取预设时长,所述第一方式包括:从系统的环境变量、容器管理平台的配置文件或容器管理平台的资源对象文件中获取。
39、所述导入单元,还用于:用于在所述业务线程未运行结束时,在预设时长后将发送至所述旧微服务容器的流量导入至所述新微服务容器。
40、本申请实施例第三方面提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的重启微服务的方法。
41、本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的重启微服务的方法。
42、本申请实施例第五方面提供了一种计算机程序产品,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的重启微服务的方法。
43、从以上技术方案可以看出,本发明实施例具有以下优点:
44、本申请实施例中,接收微服务的重启请求,其中,所述微服务以容器的形式运行;根据所述重启请求,创建新微服务容器;若所述新微服务容器创建完成,则获取旧微服务容器中业务线程的运行状态,并在所述业务线程运行结束后,将发送至所述旧微服务容器的流量导入至所述新微服务容器。
45、因为容器管理平台在新微服务容器创建完成后,获取旧微服务容器中业务线程的运行状态,并在所述业务线程运行结束后,才将发送至所述旧微服务容器的流量导入至所述新微服务容器,从而保证了旧微服务容器中未处理流量的正常处理,避免了因为旧微服务容器中存在未处理完成的流量而导致的系统错误问题。
1.一种重启微服务的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在所述创建新微服务容器之后,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,在获取旧微服务容器中业务线程的运行状态之前,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在触发所述新微服务容器将自身的服务端口和容器识别码写入可以存储键值对的存储组件中之前,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,在获取旧微服务容器中业务线程的运行状态之前,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,在获取旧微服务容器中业务线程的运行状态之后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,若所述业务线程未运行结束,则以第一方式获取预设时长,所述第一方式包括:从系统的环境变量、容器管理平台的配置文件或容器管理平台的资源对象文件中获取。
8.一种容器管理平台,其特征在于,包括:
9.一种计算机装置,包括处理器,其特征在于,所述处理器在执行存储于存储器上的计算机程序时,用于实现如权利要求1至7中任一项所述的重启微服务的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,用于实现如权利要求1至7中任一项所述的重启微服务的方法。