[发明专利]一种进程的升级方法、装置及电子设备有效
申请号: | 201710900544.7 | 申请日: | 2017-09-28 |
公开(公告)号: | CN109597631B | 公开(公告)日: | 2022-04-05 |
发明(设计)人: | 鲁振华 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;龙洪 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 升级 方法 装置 电子设备 | ||
1.一种Redis进程的升级方法,包括:
确定升级后,退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含Redis进程的各业务逻辑;
将当前Redis实例中的内核环境数据传给新版本内核;
触发新版本内核使用所述内核环境数据进行初始化;
进入新版本内核对应的动态库中的异步事件循环。
2.如权利要求1所述的升级方法,其特征在于,所述将当前Redis实例中的内核环境数据传给新版本内核包括:
获取当前Redis实例中的内核环境数据;
通过试运行的方式验证所获取的内核环境数据是否符合新版本内核的升级要求;
如果符合,则关闭当前版本内核对应的动态库中创建的后台线程任务和Lua环境;将所获取的内核环境数据传给新版本内核。
3.如权利要求1所述的升级方法,其特征在于,所述进入新版本内核对应的动态库中的异步事件循环前还包括:
释放已传给新版本内核的内核环境数据,释放当前版本内核对应的动态库。
4.如权利要求1所述的升级方法,其特征在于,所述内核环境数据包括:
业务逻辑所需的全局变量和静态变量、用户数据、后台线程任务、已缓存的Lua脚本。
5.如权利要求4所述的升级方法,其特征在于,所述新版本内核使用所述内核环境数据进行初始化包括:
触发新版本内核复制或重设全局变量和函数,浅拷贝实例数据,重设对象中的函数指针,重新绑定文件/时间处理函数,重启后台线程任务,重启Lua环境。
6.如权利要求5所述的升级方法,其特征在于,所述重设对象中的函数指针包括:
将每个事件处理函数指针对应的函数名称记录在事件函数表里;
分别根据各文件描述符上的事件处理函数指针在事件函数表里查出函数名称,再根据函数名称,将事件处理函数指针改成指向新版本内核对应的动态库中相应的函数。
7.如权利要求5所述的升级方法,其特征在于,所述重设对象中的函数指针包括:
将字典或列表函数对应的包装函数的函数指针,改成指向新版本内核对应的动态库中相应的函数;其中,所述字典或列表函数都指向对应的包装函数。
8.一种Redis进程的升级装置,其特征在于,包括:
触发模块,用于确定升级后,退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含Redis进程的各业务逻辑;
传递模块,用于将当前Redis实例中的内核环境数据传给新版本内核;
初始化模块,用于触发新版本内核使用所述内核环境数据进行初始化;
启动模块,用于进入新版本内核对应的动态库中的异步事件循环。
9.一种进行Redis进程升级的电子设备,包括:存储器和处理器;
其特征在于:
所述存储器用于保存用于进行Redis进程升级的程序;所述用于进行Redis进程升级的程序在被所述处理器读取执行时,执行以下操作:
确定升级后,退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含Redis进程的各业务逻辑;
将当前Redis实例中的内核环境数据传给新版本内核;
触发新版本内核使用所述内核环境数据进行初始化;
进入新版本内核对应的动态库中的异步事件循环。
10.一种进程的升级方法,包括:
退出当前版本内核对应的动态库的异步事件循环;其中,所述动态库包含所述进程的各业务逻辑;
将当前实例中的内核环境数据传给新版本内核;
触发新版本内核使用所述内核环境数据进行初始化;
进入新版本内核对应的动态库中的异步事件循环。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710900544.7/1.html,转载请声明来源钻瓜专利网。