[发明专利]一种进程的升级方法、装置及电子设备有效
申请号: | 201710900544.7 | 申请日: | 2017-09-28 |
公开(公告)号: | CN109597631B | 公开(公告)日: | 2022-04-05 |
发明(设计)人: | 鲁振华 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;龙洪 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 升级 方法 装置 电子设备 | ||
本申请提供一种进程的升级方法、装置及电子设备;Redis进程的升级方法包括:确定升级后,退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含Redis进程的各业务逻辑;将当前Redis实例中的内核环境数据传给新版本内核;触发新版本内核使用所述内核环境数据进行初始化;进入新版本内核对应的动态库中的异步事件循环。本申请至少一个实施例可以实现进程的热升级。
技术领域
本发明涉及计算机领域,尤其涉及一种进程的升级方法、装置及电子设备。
背景技术
通常,用户总是希望服务能保持稳定,永远不需要重启。但是软件的功能总是在不断的丰富。当用户发现有一些新功能是需要的,就会主动要求升级;当有严重安全问题出现时,用户就不得不接受强制升级。
一般的升级过程,总是需要重启服务,对用户而言,就有短时间的服务不可用状态存在。如果通过部署新旧两套系统进行切换的方式实现热升级的话,不仅存在额外一套系统的开销,而且在切换过程中还是会有部分服务链接会被断掉或者重置。
Redis是开源的高性能的键值对(Key-Value)数据库,所有数据都保存在内存中;目前,Redis进程的升级一般有如下三种方案:
(1)停机升级:当需要升级时,停止当前Redis进程,使用新的执行程序重启Redis进程,加载数据,加载完毕后对外提供服务。
该方案的缺陷在于:在程序重启期间,一切服务停止,用户的连接也会被断掉;也就是说在旧服务停止和新服务启动完毕之间,服务不可用。
(2)代理(proxy)升级方案:在Redis进程之上,封装一层proxy,用户连接到proxy,用户的请求通过proxy再传输到Redis进程。当升级时,使用新的执行程序启动一个新的Redis进程,加载数据。新的Redis进程数据加载完毕后,proxy断掉与旧Redis进程的连接,改为连接新的Redis进程提供服务,杀掉老的Redis进程。
该方案的缺陷在于:虽然可以做到几乎没有停止服务的时间,但是在中间状态会有两个Redis进程同时存在,新进程启动时与老进程进行数据同步会有网络,磁盘等资源的消耗,增加了系统负担,在切换时用户的连接会话会被重置。
(3)传统Linux进程热升级技术:通过加载动态库的方式进行,动态的使用新的动态库中的功能函数替换旧的功能函数,进程无需重启。
该方案的缺陷在于:使用场景受限,仅能替换部分数据无关的功能函数,无法处理涉及到进程当前业务数据的功能函数的替换,也无法应对业务数据的变化和业务流程的变化。
发明内容
本申请提供一种进程的升级方法、装置及电子设备,可以实现进程热升级。
本申请采用如下技术方案。
一种Redis进程的升级方法,包括:
确定升级后,退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含Redis进程的各业务逻辑;
将当前Redis实例中的内核环境数据传给新版本内核;
触发新版本内核使用所述内核环境数据进行初始化;
进入新版本内核对应的动态库中的异步事件循环。
其中,所述将当前Redis实例中的内核环境数据传给新版本内核可以包括:
获取当前Redis实例中的内核环境数据;
通过试运行的方式验证所获取的内核环境数据是否符合新版本内核的升级要求;
如果符合,则关闭当前版本内核对应的动态库中创建的后台线程任务和Lua环境;将所获取的内核环境数据传给新版本内核。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710900544.7/2.html,转载请声明来源钻瓜专利网。