本申請涉及計算機領域,尤其涉及一種計算設備上的應用程序所在進程的熱替換方法。
背景技術(shù):
1、隨著操作系統(tǒng)和云計算技術(shù)的不斷發(fā)展,軟件架構(gòu)越來越復雜。
2、通常的,會有一些常駐的服務或進程,這些進程或服務可以是應用程序的進程或服務,也可以是小程序或微服務等,它們需要保持運行狀態(tài),不停地為客戶提供業(yè)務服務,當這些常駐進程需要進行問題修復或者版本升級的時候,就需要先停掉業(yè)務服務,將應用程序進行升級,完成升級之后再次重新啟動,之后才能恢復服務,這個過程會導致業(yè)務服務中斷一段時間,影響用戶使用體驗。
技術(shù)實現(xiàn)思路
1、本申請?zhí)峁┝艘环N計算設備上的應用程序所在進程的熱替換方法,采用本申請的方法,可以實現(xiàn)應用程序所在進程的熱替換,在應用程序升級過程中,無需中斷業(yè)務,提升用戶的使用體驗。
2、第一方面,本申請?zhí)峁┝艘环N計算設備上的應用程序所在進程的熱替換方法,包括:
3、計算設備將第一進程在保存點處進行休眠,使第一進程在保存點處進入休眠狀態(tài),第一進程為應用程序升級前的進程;
4、保存第一進程在保存點處的狀態(tài)數(shù)據(jù);
5、啟動第二進程,第二進程為應用程序升級后的進程;
6、將第二進程通過統(tǒng)一入口加載第一進程在保存點處的狀態(tài)數(shù)據(jù)并執(zhí)行任務,統(tǒng)一入口用于約束第二進程在無狀態(tài)數(shù)據(jù)的情況下加載保存點處的狀態(tài)數(shù)據(jù)。
7、本申請?zhí)峁┝艘环N應用程序所在進程的熱替換方法,將升級前的應用程序的進程在保存點處進行休眠,并保存升級前應用程序的進程的狀態(tài)數(shù)據(jù),然后,啟動升級后的應用程序,使用升級后的應用程序的進程加載升級前應用程序的進程的狀態(tài)數(shù)據(jù),繼續(xù)執(zhí)行任務。在應用程序升級過程中,采用本申請的進程熱替換方法,應用程序整個升級過程無需中斷業(yè)務服務,升級過程對用戶無感知,提升用戶的使用體驗。另外,本申請中,統(tǒng)一入口和保存點的設置,保證了第二進程在加載升級前的進程的狀態(tài)數(shù)據(jù)時是干凈的、無狀態(tài)數(shù)據(jù)的,從而保證了升級后的應用程序的進程在加載了升級前的進程的狀態(tài)數(shù)據(jù)后,能夠繼續(xù)執(zhí)行原來的業(yè)務,繼續(xù)為用戶提供服務。
8、基于第一方面,在可能的實現(xiàn)方式中,第一進程對應多個線程,
9、計算設備將第一進程在保存點處進行休眠,使第一進程在保存點處進入休眠狀態(tài),第一進程為應用程序升級前的進程,保存第一進程在保存點處的狀態(tài)數(shù)據(jù),包括:
10、計算設備將第一進程對應多個線程在保存點處進行休眠,使第一進程對應多個線程在保存點處進入休眠狀態(tài);
11、保存第一進程對應多個線程在保存點處的狀態(tài)數(shù)據(jù)。
12、可以理解,應用程序的進程對應著多個線程,在對第一進程進行休眠時,需要將第一進程對應的多個線程均進行休眠,保存多個線程對應的狀態(tài)數(shù)據(jù)。
13、基于第一方面,在可能的實現(xiàn)方式中,計算設備將第一進程在保存點處進行休眠之前,方法還包括:
14、計算設備接收第一進程的休眠指令;和/或,
15、接收啟動第二進程的指令,和/或,接收使用第二進程通過統(tǒng)一入口加載第一進程在保存點處的狀態(tài)數(shù)據(jù)并執(zhí)行任務的指令。
16、可以理解,在可能的實現(xiàn)方式中,計算設備在執(zhí)行應用程序所在進程的熱替換方法之前,可以接收外部發(fā)送的指令,計算設備根據(jù)外部的指令執(zhí)行本申請的方法。
17、基于第一方面,在可能的實現(xiàn)方式中,所述方法在沙箱或動態(tài)鏈接庫或編譯器中實現(xiàn)。
18、第二方面,本申請?zhí)峁┝艘环N計算設備上的應用程序所在進程的熱替換裝置,裝置包括:
19、休眠模塊,用于將第一進程在保存點處進行休眠,使第一進程在保存點處進入休眠狀態(tài),第一進程為應用程序升級前的進程;
20、休眠模塊還用于,保存第一進程在保存點處的狀態(tài)數(shù)據(jù);
21、啟動模塊,用于啟動第二進程,第二進程為應用程序升級后的進程;
22、任務執(zhí)行模塊,用于將第二進程通過統(tǒng)一入口加載第一進程在保存點處的狀態(tài)數(shù)據(jù)并執(zhí)行任務,統(tǒng)一入口用于約束第二進程在無狀態(tài)數(shù)據(jù)的情況下加載保存點處的狀態(tài)數(shù)據(jù)。
23、基于第二方面,在可能的實現(xiàn)方式中,第一進程對應多個線程,
24、休眠模塊用于:
25、將第一進程對應多個線程在保存點處進行休眠,使第一進程對應多個線程在保存點處進入休眠狀態(tài);
26、保存第一進程對應多個線程在保存點處的狀態(tài)數(shù)據(jù)。
27、基于第二方面,在可能的實現(xiàn)方式中,裝置還包括通信模塊,通信模塊用于:
28、接收第一進程的休眠指令;和/或,
29、接收啟動第二進程的指令,和/或,接收使用第二進程通過統(tǒng)一入口加載第一進程在保存點處的狀態(tài)數(shù)據(jù)并執(zhí)行任務的指令。
30、基于第二方面,在可能的實現(xiàn)方式中,裝置為沙箱或動態(tài)鏈接庫或編譯器。
31、第二方面的各個功能模塊用于實現(xiàn)上述第一方面以及第一方面的任意一種可能的實現(xiàn)方式所描述的方法。
32、第三方面,本申請?zhí)峁┝艘环N計算設備,計算設備中包括存儲器和處理器,存儲器用于存儲指令,計算設備的處理器用于執(zhí)行存儲器中存儲的指令,以實現(xiàn)上述第一方面以及第一方面的任意一種可能的實現(xiàn)方式所描述的方法。
33、第四方面,本申請?zhí)峁┝艘环N計算機存儲介質(zhì),包括程序指令,當程序指令在計算設備上運行時,使得計算設備執(zhí)行上述第一方面以及第一方面的任意一種可能的實現(xiàn)方式所描述的方法。
34、第五方面,本申請?zhí)峁┝艘环N計算機程序產(chǎn)品,包括程序指令,當該計算機程序產(chǎn)品被計算設備執(zhí)行時,該計算設備用于執(zhí)行前述第一方面以及第一方面的任意一種可能的實現(xiàn)方式所描述的方法。該計算機程序產(chǎn)品可以為一個軟件安裝包,在需要使用前述第一方面以及第一方面的任一種可能的設計提供的方法的情況下,可以下載該計算機程序產(chǎn)品并在設備上執(zhí)行該計算機程序產(chǎn)品,以實現(xiàn)第一方面以及第一方面的任意一種可能的實現(xiàn)方式所描述的方法。
1.一種計算設備上的應用程序所在進程的熱替換方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一進程對應多個線程,
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述計算設備將第一進程在保存點處進行休眠之前,所述方法還包括:
4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述方法在沙箱或動態(tài)鏈接庫或編譯器中實現(xiàn)。
5.一種計算設備上的應用程序所在進程的熱替換裝置,其特征在于,所述裝置包括:
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述第一進程對應多個線程,
7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述裝置還包括通信模塊,所述通信模塊用于:
8.根據(jù)權(quán)利要求5至7任一項所述的裝置,其特征在于,所述裝置為沙箱或動態(tài)鏈接庫或編譯器。
9.一種計算設備,其特征在于,所述計算設備中包括存儲器和處理器,所述存儲器用于存儲指令,所述計算設備的處理器用于執(zhí)行所述存儲器中存儲的所述指令,以實現(xiàn)如權(quán)利要求1至4任一項所述的方法。
10.一種計算機存儲介質(zhì),其特征在于,包括程序指令,當所述程序指令在計算設備上運行時,使得所述計算設備執(zhí)行如權(quán)利要求1至4任一項所述的方法。