本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種分布式緩存集群的升級(jí)方法與設(shè)備。
背景技術(shù):
一般的網(wǎng)絡(luò)系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)或磁盤(pán)文件的訪問(wèn)效率對(duì)整個(gè)網(wǎng)絡(luò)系統(tǒng)的性能有著至關(guān)重要的影響。由于內(nèi)存緩存的效率要遠(yuǎn)遠(yuǎn)高于磁盤(pán),如果對(duì)數(shù)據(jù)庫(kù)或文件的數(shù)據(jù)獲取操作均能從緩存進(jìn)行讀取將會(huì)大大的提高其讀取效率。單機(jī)的緩存系統(tǒng)往往存儲(chǔ)的數(shù)據(jù)容量和對(duì)外提供的訪問(wèn)能力都有限,而分布式緩存集群采用整個(gè)計(jì)算機(jī)集群來(lái)對(duì)外部提供緩存服務(wù),解決了緩存容量不足和訪問(wèn)能力限制的問(wèn)題?,F(xiàn)有方案中,在分布式緩存集群進(jìn)行升級(jí)時(shí),需要直接停止分布式緩存集群中服務(wù)器的運(yùn)行并清理環(huán)境后重啟新服務(wù),該方案在升級(jí)過(guò)程中會(huì)停止服務(wù)并丟失用戶的緩存數(shù)據(jù),同時(shí)會(huì)對(duì)用戶后端的數(shù)據(jù)庫(kù)造成短時(shí)間的沖擊。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的一個(gè)目的是提供一種用于分布式緩存集群的升級(jí)方法與設(shè)備,能夠在分布式緩存集群的服務(wù)器升級(jí)時(shí),不能丟失數(shù)據(jù)、不中斷對(duì)外部的服務(wù)。
根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種分布式緩存集群的升級(jí)方法,包括:
根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序;
將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器;
將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于 當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,重復(fù)本步驟直至所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)。
進(jìn)一步的,上述方法中,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),包括:
將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序更新為新的服務(wù)程序;
對(duì)更新后的服務(wù)程序進(jìn)行重啟,并等待所述更新后的服務(wù)程序重啟正常。
進(jìn)一步的,上述方法中,根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序之前,還包括:
暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能;
所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)之后,還包括:
恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能。
進(jìn)一步的,上述方法中,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,包括:
當(dāng)分布式緩存集群的所有服務(wù)器不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停所有服務(wù)的自動(dòng)負(fù)載均衡功能;
當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能。
進(jìn)一步的,上述方法中,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,包括:
判斷當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量是否可以容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù);
若是,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上;
若否,在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,根據(jù)分布式 緩存集群的當(dāng)前所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器重新進(jìn)行由大到小排序,其中,所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額。
進(jìn)一步的,上述方法中,判斷當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量是否可以容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)之前,還包括:
獲取當(dāng)前分布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量。
進(jìn)一步的,上述方法中,獲取當(dāng)前分布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量之后,還包括:
根據(jù)當(dāng)前分布式緩存集群的所有服務(wù)器的內(nèi)存配額和當(dāng)前存儲(chǔ)量估計(jì)當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)耗費(fèi)時(shí)間。
進(jìn)一步的,上述方法中,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上包括:
根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上。
進(jìn)一步的,上述方法中,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上包括:
將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上。
根據(jù)本申請(qǐng)的另一面,還提供一種分布式緩存集群的升級(jí)設(shè)備,包括:
第一裝置,用于根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序;
第二裝置,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器;
第三裝置,用于將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,重復(fù)執(zhí) 行本裝置,直至所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)。
進(jìn)一步的,上述設(shè)備中,所述第三裝置,用于將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序更新為新的服務(wù)程序,對(duì)更新后的服務(wù)程序進(jìn)行重啟,并等待所述更新后的服務(wù)程序重啟正常。
進(jìn)一步的,上述設(shè)備中,所述設(shè)備還包括第四裝置,用于暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能;
所述設(shè)備還包括第五裝置,用于恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能。
進(jìn)一步的,上述設(shè)備中,所述第四裝置,用于當(dāng)分布式緩存集群的所有服務(wù)器不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停所有服務(wù)的自動(dòng)負(fù)載均衡功能;
當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能。
進(jìn)一步的,上述設(shè)備中,所述第二裝置包括:
第二一單元,用于判斷當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量是否可以容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù),若是,轉(zhuǎn)到第二二單元,若否,則轉(zhuǎn)到第二三單元;
第二二單元,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上后轉(zhuǎn)到第二四單元;
第二三單元,用于在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,根據(jù)分布式緩存集群的當(dāng)前所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器重新進(jìn)行由大到小排序后轉(zhuǎn)到第二四單元,其中,所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額;
第二四單元,用于將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器。
進(jìn)一步的,上述設(shè)備中,所述設(shè)備還包括第六裝置,用于獲取當(dāng)前分 布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量。
進(jìn)一步的,上述設(shè)備中,所述設(shè)備還包括第七裝置,用于根據(jù)當(dāng)前分布式緩存集群的所有服務(wù)器的內(nèi)存配額和當(dāng)前存儲(chǔ)量估計(jì)當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)耗費(fèi)時(shí)間。
進(jìn)一步的,上述設(shè)備中,所述第二二單元,用于根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上。
進(jìn)一步的,上述設(shè)備中,所述第二二單元,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過(guò)將排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,可實(shí)現(xiàn)分布式緩存集群的服務(wù)器在升級(jí)的時(shí)候,能進(jìn)行平穩(wěn)的過(guò)渡升級(jí),升級(jí)過(guò)程中不能丟失數(shù)據(jù)、不中斷對(duì)外部的服務(wù)。
進(jìn)一步的,本申請(qǐng)通過(guò)一方面在分布式緩存集群的所有服務(wù)器清空和升級(jí)之前,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另一方面,在分布式緩存集群的所有服務(wù)器清空和升級(jí)之后,恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。
進(jìn)一步的,本申請(qǐng)通過(guò)當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能,從而實(shí)現(xiàn)處于自動(dòng)數(shù)據(jù)遷移的服務(wù)器在完成自動(dòng)遷移后平緩地停掉自 動(dòng)負(fù)載均衡功能,避免處于自動(dòng)數(shù)據(jù)遷移狀態(tài)被突然暫停自動(dòng)負(fù)載均衡功能而丟失數(shù)據(jù)的情況。
進(jìn)一步的,在當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量不能容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)時(shí),本申請(qǐng)通過(guò)在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,順利實(shí)現(xiàn)服務(wù)器的清空和升級(jí)。
進(jìn)一步的,本申請(qǐng)根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上,從而盡量平均掉后續(xù)各服務(wù)器上數(shù)據(jù)的訪問(wèn)壓力。
進(jìn)一步的,本申請(qǐng)通過(guò)將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上,從而保證某一時(shí)刻內(nèi)只有兩臺(tái)服務(wù)器之間在進(jìn)行數(shù)據(jù)遷移,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響,同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上,而且即使遷移出錯(cuò),也可以根據(jù)當(dāng)前的出錯(cuò)服務(wù)器和所述排序得知哪些服務(wù)器上的數(shù)據(jù)已經(jīng)遷移成功,哪些還未成功,后續(xù)只要從出錯(cuò)的服務(wù)器進(jìn)行遷移調(diào)整即可,已經(jīng)遷移成功可以不必考慮。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的分布式緩存集群的升級(jí)方法的流程圖;
圖2示出本申請(qǐng)一實(shí)施例的分布式緩存集群中排序最前的服務(wù)器的數(shù)據(jù)清空示意圖;
圖3示本申請(qǐng)另一實(shí)施例的分布式緩存集群中其它服務(wù)器的數(shù)據(jù)清空示意圖;
圖4示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的分布式緩存集群的升級(jí)方法的流程圖;
圖5示出根據(jù)本申請(qǐng)一個(gè)較佳實(shí)施例的分布式緩存集群的升級(jí)方法的流程圖;
圖6示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的分布式緩存集群的升級(jí)方法的流程圖;
圖7示出根據(jù)本申請(qǐng)另一個(gè)方面的一種分布式緩存集群的升級(jí)設(shè)備的示意圖;
圖8示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的種分布式緩存集群的升級(jí)設(shè)備的示意圖;
圖9示出根據(jù)本申請(qǐng)另一個(gè)優(yōu)選實(shí)施例的種分布式緩存集群的升級(jí)設(shè)備的示意圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì), 可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
如圖1所示,本申請(qǐng)?zhí)峁┮环N分布式緩存集群的升級(jí)方法,包括對(duì)每個(gè)分布式緩存集群作如下處理:
步驟S2,根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序,在此,每臺(tái)服務(wù)器的內(nèi)存配額用于限定該服務(wù)器上的數(shù)據(jù)存儲(chǔ)量;
步驟S3,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器;在此,內(nèi)存配額最大的服務(wù)器即所述排序中排在最前的服務(wù)器,如圖2中的服務(wù)器M1,圖2中的服務(wù)器依內(nèi)存配額由大到小排序?yàn)镸1、M2、M3、M4……,這里先將服務(wù)器M1上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器M2、M3、M4……上,以清空所述服務(wù)器M1,便于后續(xù)步驟中對(duì)清空的服務(wù)器M1上的服務(wù)程序進(jìn)行升級(jí),此時(shí),將清空數(shù)據(jù)后的服務(wù)器M1作為初始的當(dāng)前待升級(jí)服務(wù)器;
步驟S4,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,重復(fù)本步驟S4直至所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí);在此,每得到一臺(tái)清空后的即無(wú)數(shù)據(jù)的服務(wù)器機(jī)器后,就可以對(duì)該無(wú)數(shù)據(jù)的服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),即服務(wù)器M1清空和升級(jí)以后,需要依次對(duì)其它服務(wù)器M2、M3、M4……進(jìn)行清空和升級(jí),如圖3所示,本步驟采用類似于步驟S3的對(duì)服務(wù)器M1清空后升級(jí)的方式,依次分別對(duì)其它服務(wù)器M2、M3、M4……先進(jìn)行清空然后進(jìn)行升級(jí),例如,升級(jí)服務(wù)器M2時(shí),先將服務(wù)器M2上的數(shù)據(jù)遷移至服務(wù)器M1上,由于服務(wù)器M1為空且其內(nèi)存配額大于服務(wù)器M2的內(nèi)存配額,所以將服務(wù)器M2的所有數(shù)據(jù)遷移服務(wù)器M1上時(shí),服務(wù)器M1的內(nèi)存容量足夠容納服務(wù)器M2的所有數(shù)據(jù),不會(huì)有由于服務(wù)器M1上內(nèi)存容量不夠而容納不下服務(wù)器M2的部分?jǐn)?shù)據(jù)的情況發(fā) 生,服務(wù)器M2上的所有數(shù)據(jù)清空后,即可對(duì)服務(wù)器M2進(jìn)行升級(jí),同理,后續(xù)只要依如圖3所示的服務(wù)器M3、M4……的順序即依內(nèi)存配額由大到小的順序?qū)3、M4……進(jìn)行逐個(gè)清空和升級(jí)即可,其中,如圖3所示,服務(wù)器M3升級(jí)前將服上的服務(wù)器M3上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M2上,然后對(duì)服務(wù)器M3升級(jí),服務(wù)器M4升級(jí)前將服上的服務(wù)器M4上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M3上,然后對(duì)服務(wù)器M4升級(jí),依此類推。分布式緩存集群中排序上最小的最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)后,由于該服務(wù)器之后沒(méi)有所述排序緊次于其的服務(wù)器,因此無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,及也無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,排序上最小的最后一個(gè)服務(wù)器升級(jí)完后是一個(gè)暫時(shí)無(wú)緩存數(shù)據(jù)的服務(wù)器。在此,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響。同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上。本實(shí)施例可實(shí)現(xiàn)分布式緩存集群的服務(wù)器在升級(jí)的時(shí)候,能進(jìn)行平穩(wěn)的過(guò)渡升級(jí),升級(jí)過(guò)程中不能丟失數(shù)據(jù)、不中斷對(duì)外部的服務(wù)。
如圖4所示,本申請(qǐng)的分布式緩存集群的升級(jí)方法一優(yōu)選的實(shí)施例中,所述步驟S2之前還包括步驟S1,步驟S4之后還包括步驟S5,本實(shí)施的分布式緩存集群的升級(jí)方法,包括對(duì)每個(gè)分布式緩存集群作如下處理:
步驟S1,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,在此,所述自動(dòng)負(fù)載均衡功能用于實(shí)現(xiàn)一個(gè)分布式緩存集群中的所有服務(wù)器之間的自動(dòng)數(shù)據(jù)遷移,這里在后續(xù)分布式緩存集群中的每個(gè)服務(wù)器進(jìn)行升級(jí)之前,需要暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另外,每次數(shù)據(jù)遷移之后都會(huì)修改數(shù)據(jù)所分布的服務(wù)器的對(duì)照表,便于數(shù)據(jù)遷移后,在發(fā)生數(shù)據(jù)訪問(wèn)時(shí)根據(jù)不斷修改的對(duì)照表仍能從對(duì)應(yīng)的遷移后的服務(wù)器上查找到該數(shù)據(jù);
步驟S2,根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序,在此,每臺(tái)服務(wù)器的內(nèi)存配額用于限定該服務(wù)器上的數(shù)據(jù)存儲(chǔ)量;
步驟S3,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器;在此,內(nèi)存配額最大的服務(wù)器即所述排序中排在最前的服務(wù)器,如圖2中的服務(wù)器M1,圖2中的服務(wù)器依內(nèi)存配額由大到小排序?yàn)镸1、M2、M3、M4……,這里先將服務(wù)器M1上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器M2、M3、M4……上,以清空所述服務(wù)器M1,便于后續(xù)步驟中對(duì)清空的服務(wù)器M1上的服務(wù)程序進(jìn)行升級(jí),此時(shí),將清空數(shù)據(jù)后的服務(wù)器M1作為初始的當(dāng)前待升級(jí)服務(wù)器;
步驟S4,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,重復(fù)本步驟S4直至所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí);在此,每得到一臺(tái)清空后的即無(wú)數(shù)據(jù)的服務(wù)器機(jī)器后,就可以對(duì)該無(wú)數(shù)據(jù)的服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),即服務(wù)器M1清空和升級(jí)以后,需要依次對(duì)其它服務(wù)器M2、M3、M4……進(jìn)行清空和升級(jí),如圖3所示,本步驟采用類似于步驟S3的對(duì)服務(wù)器M1清空后升級(jí)的方式,依次分別對(duì)其它服務(wù)器M2、M3、M4……先進(jìn)行清空然后進(jìn)行升級(jí),例如,升級(jí)服務(wù)器M2時(shí),先將服務(wù)器M2上的數(shù)據(jù)遷移至服務(wù)器M1上,由于服務(wù)器M1為空且其內(nèi)存配額大于服務(wù)器M2的內(nèi)存配額,所以將服務(wù)器M2的所有數(shù)據(jù)遷移服務(wù)器M1上時(shí),服務(wù)器M1的內(nèi)存容量足夠容納服務(wù)器M2的所有數(shù)據(jù),不會(huì)有由于服務(wù)器M1上內(nèi)存容量不夠而容納不下服務(wù)器M2的部分?jǐn)?shù)據(jù)的情況發(fā)生,服務(wù)器M2上的所有數(shù)據(jù)清空后,即可對(duì)服務(wù)器M2進(jìn)行升級(jí),同理,后續(xù)只要依如圖3所示的服務(wù)器M3、M4……的順序即依內(nèi)存配額由大到小的順序?qū)3、M4……進(jìn)行逐個(gè)清空和升級(jí)即可,其中,如圖3所示,服務(wù)器M3升級(jí)前將服上的服務(wù)器M3上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M2上,然后對(duì)服務(wù)器M3升級(jí),服務(wù)器M4升級(jí)前將服上的服務(wù)器M4上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M3上,然后對(duì)服務(wù)器M4升級(jí),依此類推。分布式緩存集群中排序上最小的最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)后,由于該服務(wù)器之后沒(méi)有所述排序緊次于其的服務(wù)器,因 此無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,及也無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,排序上最小的最后一個(gè)服務(wù)器升級(jí)完后是一個(gè)暫時(shí)無(wú)緩存數(shù)據(jù)的服務(wù)器。在此,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響。同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上;
步驟S5,恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,從而將其它服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前數(shù)據(jù)為空的服務(wù)器上,即遷移到內(nèi)存配額排序上最小的服務(wù)器上,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。本實(shí)施例一方面在分布式緩存集群的所有服務(wù)器清空和升級(jí)之前,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另一方面,在分布式緩存集群的所有服務(wù)器清空和升級(jí)之后,恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。
如圖5所示,本申請(qǐng)的分布式緩存集群的升級(jí)方法一較佳的實(shí)施例中,步驟S4中的將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí)的步驟包括:
步驟S41,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序更新為新的服務(wù)程序;
步驟S42,對(duì)更新后的服務(wù)程序進(jìn)行重啟,并等待所述更新后的服務(wù)程序重啟正常。在此,等待所述更新后的服務(wù)程序重啟正常后才繼續(xù)對(duì)后續(xù)下一服務(wù)器進(jìn)行升級(jí),從而保證下一服務(wù)器升級(jí)前,該服務(wù)器可正常工作,即可以正常接收從下一服務(wù)器遷移來(lái)的數(shù)據(jù)并正常提供服務(wù)。
本申請(qǐng)的分布式緩存集群的升級(jí)方法一較佳的實(shí)施例中,步驟S1,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能包括:
當(dāng)分布式緩存集群的所有服務(wù)器不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停所有服務(wù)的自動(dòng)負(fù)載均衡功能;
當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均 衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能,從而實(shí)現(xiàn)處于自動(dòng)數(shù)據(jù)遷移的服務(wù)器在完成自動(dòng)遷移后平緩地停掉自動(dòng)負(fù)載均衡功能,避免處于自動(dòng)數(shù)據(jù)遷移狀態(tài)被突然暫停自動(dòng)負(fù)載均衡功能而丟失數(shù)據(jù)的情況。
如圖6所示,本申請(qǐng)的分布式緩存集群的升級(jí)方法一優(yōu)選的實(shí)施例中,步驟S3,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器,包括:
步驟S31,判斷當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量是否可以容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù),在此,可以通過(guò)當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量的監(jiān)控信息判斷當(dāng)前分布式緩存集群中的所有服務(wù)器是否都幾乎處于滿數(shù)據(jù)狀態(tài),如果是,那這種情況不適合立即升級(jí),需要當(dāng)前分布式緩存集群中增加新的空服務(wù)器;
若是,步驟S32,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上后轉(zhuǎn)到步驟S34;
若否,步驟S33,在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,根據(jù)分布式緩存集群的當(dāng)前所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器重新進(jìn)行由大到小排序后轉(zhuǎn)到步驟S34,其中,所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額;在此,由于當(dāng)前分布式緩存集群中增加了新的服務(wù)器,所以后續(xù)對(duì)其它服務(wù)器進(jìn)行升級(jí)前需要對(duì)當(dāng)前分布式緩存集群中的所有服務(wù)器按內(nèi)存配額的大小重新進(jìn)行排序,以便后續(xù)各服務(wù)器上的數(shù)據(jù)依序遷移;
步驟S34,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器,在此,由于所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額,所以排序更新前和更新后中內(nèi)存配額最大的服務(wù)器始終是同一個(gè)服務(wù)器,如圖2和圖3中的服務(wù)器M1。本實(shí)施例在當(dāng)前分布 式緩存集群中的所有服務(wù)器都幾乎處于滿數(shù)據(jù)狀態(tài),無(wú)法進(jìn)行服務(wù)器的清空和升級(jí)時(shí),通過(guò)在當(dāng)前分布式緩存集群中增加新的服務(wù)器,順利實(shí)現(xiàn)服務(wù)器的清空和升級(jí)。
本申請(qǐng)的分布式緩存集群的升級(jí)方法一優(yōu)選的實(shí)施例中,步驟S31之前還包括:
獲取當(dāng)前分布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量;基于此,后續(xù)步驟S31即可根據(jù)當(dāng)前分布式緩存集群的除所述排序中內(nèi)存配額最大的服務(wù)器之外的各其它服務(wù)器的當(dāng)前剩余存儲(chǔ)量確定所述其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量。
本申請(qǐng)的分布式緩存集群的升級(jí)方法一較佳的實(shí)施例中,獲取當(dāng)前分布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量的步驟之后,還包括:
根據(jù)當(dāng)前分布式緩存集群的所有服務(wù)器的內(nèi)存配額和當(dāng)前存儲(chǔ)量估計(jì)當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)耗費(fèi)時(shí)間,從而更合理的安排和調(diào)整當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)方式和時(shí)間。
本申請(qǐng)的分布式緩存集群的升級(jí)方法一優(yōu)選的實(shí)施例中,步驟S32,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上的步驟包括:
根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上,從而盡量平均掉后續(xù)各服務(wù)器上數(shù)據(jù)的訪問(wèn)壓力。
本申請(qǐng)的分布式緩存集群的升級(jí)方法一優(yōu)選的實(shí)施例中,步驟S32,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上的步驟包括,
將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上,即如圖2所示,先將服務(wù)器M1上的部分?jǐn)?shù)據(jù)遷移到服務(wù)器M2后,再將將服務(wù)器M1上的部分?jǐn)?shù)據(jù)遷移到服務(wù)器M3,依此類推,直到將服務(wù)器M1上的最后的剩余數(shù)據(jù)遷移到排序在最后的服務(wù)器上,從而保證某一時(shí)刻內(nèi)只有兩臺(tái)服務(wù) 器之間在進(jìn)行數(shù)據(jù)遷移,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響,同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上,而且即使遷移出錯(cuò),也可以根據(jù)當(dāng)前的出錯(cuò)服務(wù)器和所述排序得知哪些服務(wù)器上的數(shù)據(jù)已經(jīng)遷移成功,哪些還未成功,后續(xù)只要從出錯(cuò)的服務(wù)器進(jìn)行遷移調(diào)整即可,已經(jīng)遷移成功可以不必考慮,例如,如圖2所示,如果服務(wù)器M1在向服務(wù)器M4進(jìn)行遷移的時(shí)候出錯(cuò),那么之前已經(jīng)遷移成功的服務(wù)器M2和M3則不必考慮,后續(xù)遷移只要從服務(wù)器M4開(kāi)始,考慮服務(wù)器M4及排序在其后的服務(wù)器即可。
如圖7所示,根據(jù)本申請(qǐng)的另一面,本申請(qǐng)還提供一種分布式緩存集群的升級(jí)設(shè)備100,包括:
第一裝置1,用于根據(jù)分布式緩存集群的所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器進(jìn)行由大到小排序;在此,每臺(tái)服務(wù)器的內(nèi)存配額用于限定該服務(wù)器上的數(shù)據(jù)存儲(chǔ)量;
第二裝置2,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器;在此,內(nèi)存配額最大的服務(wù)器即所述排序中排在最前的服務(wù)器,如圖2中的服務(wù)器M1,圖2中的服務(wù)器依內(nèi)存配額由大到小排序?yàn)镸1、M2、M3、M4……,這里先將服務(wù)器M1上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器M2、M3、M4……上,以清空所述服務(wù)器M1,便于后續(xù)步驟中對(duì)清空的服務(wù)器M1上的服務(wù)程序進(jìn)行升級(jí),此時(shí),將清空數(shù)據(jù)后的服務(wù)器M1作為初始的當(dāng)前待升級(jí)服務(wù)器;
第三裝置3,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,重復(fù)執(zhí)行第三裝置3,直至所述排序中最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)。在此,每得到一臺(tái)清空后的即無(wú)數(shù)據(jù)的服務(wù)器機(jī)器后,就可以對(duì)該無(wú)數(shù)據(jù)的服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),即服務(wù)器M1清空和升級(jí)以后,需要依次對(duì)其它服務(wù)器M2、M3、M4……進(jìn)行清空和升級(jí),如圖3所示,第三裝置 3采用類似于第二裝置2的對(duì)服務(wù)器M1清空后升級(jí)的方式,依次分別對(duì)其它服務(wù)器M2、M3、M4……先進(jìn)行清空然后進(jìn)行升級(jí),例如,升級(jí)服務(wù)器M2時(shí),先將服務(wù)器M2上的數(shù)據(jù)遷移至服務(wù)器M1上,由于服務(wù)器M1為空且其內(nèi)存配額大于服務(wù)器M2的內(nèi)存配額,所以將服務(wù)器M2的所有數(shù)據(jù)遷移服務(wù)器M1上時(shí),服務(wù)器M1的內(nèi)存容量足夠容納服務(wù)器M2的所有數(shù)據(jù),不會(huì)有由于服務(wù)器M1上內(nèi)存容量不夠而容納不下服務(wù)器M2的部分?jǐn)?shù)據(jù)的情況發(fā)生,服務(wù)器M2上的所有數(shù)據(jù)清空后,即可對(duì)服務(wù)器M2進(jìn)行升級(jí),同理,后續(xù)只要依如圖3所示的服務(wù)器M3、M4……的順序即依內(nèi)存配額由大到小的順序?qū)3、M4……進(jìn)行逐個(gè)清空和升級(jí)即可,其中,如圖3所示,服務(wù)器M3升級(jí)前將服上的服務(wù)器M3上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M2上,然后對(duì)服務(wù)器M3升級(jí),服務(wù)器M4升級(jí)前將服上的服務(wù)器M4上的數(shù)據(jù)遷移至內(nèi)存配額更大的服務(wù)器M3上,然后對(duì)服務(wù)器M4升級(jí),依此類推。分布式緩存集群中排序上最小的最后一個(gè)服務(wù)器上的服務(wù)程序完成升級(jí)后,由于該服務(wù)器之后沒(méi)有所述排序緊次于其的服務(wù)器,因此無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,及也無(wú)需進(jìn)行將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升級(jí)服務(wù)器,排序上最小的最后一個(gè)服務(wù)器升級(jí)完后是一個(gè)暫時(shí)無(wú)緩存數(shù)據(jù)的服務(wù)器。在此,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響。同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上。本實(shí)施例可實(shí)現(xiàn)分布式緩存集群的服務(wù)器在升級(jí)的時(shí)候,能進(jìn)行平穩(wěn)的過(guò)渡升級(jí),升級(jí)過(guò)程中不能丟失數(shù)據(jù)、不中斷對(duì)外部的服務(wù)。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一較佳的實(shí)施例中,所述第三裝置3,用于將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序更新為新的服務(wù)程序,對(duì)更新后的服務(wù)程序進(jìn)行重啟,并等待所述更新后的服務(wù)程序重啟正常。在此,等待所述更新后的服務(wù)程序重啟正常后才繼續(xù)對(duì)后續(xù)下一服務(wù)器進(jìn)行升級(jí),從而保證下一服務(wù)器升級(jí)前,該服務(wù)器可正常工作,即可以正常接收從下一服務(wù)器遷移來(lái)的數(shù)據(jù)并正常提供服務(wù)。
如圖8所示,本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一優(yōu)選的實(shí)施例中, 所述設(shè)備100還包括第四裝置4,用于暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能;在此,所述自動(dòng)負(fù)載均衡功能用于實(shí)現(xiàn)一個(gè)分布式緩存集群中的所有服務(wù)器之間的自動(dòng)數(shù)據(jù)遷移,這里在后續(xù)分布式緩存集群中的每個(gè)服務(wù)器進(jìn)行升級(jí)之前,需要暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另外,每次數(shù)據(jù)遷移之后都會(huì)修改數(shù)據(jù)所分布的服務(wù)器的對(duì)照表,便于數(shù)據(jù)遷移后,在發(fā)生數(shù)據(jù)訪問(wèn)時(shí)根據(jù)不斷修改的對(duì)照表仍能從對(duì)應(yīng)的遷移后的服務(wù)器上查找到該數(shù)據(jù);
所述設(shè)備100還包括第五裝置5,用于恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,從而將其它服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前數(shù)據(jù)為空的服務(wù)器上,即遷移到內(nèi)存配額排序上最小的服務(wù)器上,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。本實(shí)施例一方面在分布式緩存集群的所有服務(wù)器清空和升級(jí)之前,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另一方面,在分布式緩存集群的所有服務(wù)器清空和升級(jí)之后,恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一較佳的實(shí)施例中,所述第四裝置4,用于當(dāng)分布式緩存集群的所有服務(wù)器不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停所有服務(wù)的自動(dòng)負(fù)載均衡功能;
當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能,從而實(shí)現(xiàn)處于自動(dòng)數(shù)據(jù)遷移的服務(wù)器在完成自動(dòng)遷移后平緩地停掉自動(dòng)負(fù)載均衡功能,避免處于自動(dòng)數(shù)據(jù)遷移狀態(tài)被突然暫停自動(dòng)負(fù)載均衡功能而丟失數(shù)據(jù)的情況。
如圖9所示,本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一優(yōu)選的實(shí)施例中,所述第二裝置2包括:
第二一單元21,用于判斷當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量是否可以容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù),若是,轉(zhuǎn)到第二二單元22,若否,則轉(zhuǎn)到第二三單元23;在此,可以通過(guò)當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量的監(jiān)控信息判斷當(dāng)前分布式緩存集群中的所有服務(wù)器是否都幾乎處于滿數(shù)據(jù)狀態(tài),如果是,那這種情況不適合立即升級(jí),需要當(dāng)前分布式緩存集群中增加新的空服務(wù)器;
第二二單元22,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)分別遷移到該分布式緩存集群的各其它服務(wù)器上后轉(zhuǎn)到第二四單元24;
第二三單元23,用于在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,根據(jù)分布式緩存集群的當(dāng)前所有服務(wù)器的內(nèi)存配額的大小將所有服務(wù)器重新進(jìn)行由大到小排序后轉(zhuǎn)到第二四單元24,其中,所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額;在此,由于當(dāng)前分布式緩存集群中增加了新的服務(wù)器,所以后續(xù)對(duì)其它服務(wù)器進(jìn)行升級(jí)前需要對(duì)當(dāng)前分布式緩存集群中的所有服務(wù)器按內(nèi)存配額的大小重新進(jìn)行排序,以便后續(xù)各服務(wù)器上的數(shù)據(jù)依序遷移;
第二四單元24,用于將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器。在此,由于所述新的服務(wù)器的內(nèi)存配額小于所述排序中最大的服務(wù)器的內(nèi)存配額,所以排序更新前和更新后中內(nèi)存配額最大的服務(wù)器始終是同一個(gè)服務(wù)器,如圖2和圖3中的服務(wù)器M1。本實(shí)施例在當(dāng)前分布式緩存集群中的所有服務(wù)器都幾乎處于滿數(shù)據(jù)狀態(tài),無(wú)法進(jìn)行服務(wù)器的清空和升級(jí)時(shí),通過(guò)在當(dāng)前分布式緩存集群中增加新的服務(wù)器,順利實(shí)現(xiàn)服務(wù)器的清空和升級(jí)。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一優(yōu)選的實(shí)施例中,所述設(shè)備還包括第六裝置6,用于獲取當(dāng)前分布式緩存集群的所有服務(wù)器的當(dāng)前存儲(chǔ)量?;诖耍罄m(xù)第二一單元21即可根據(jù)當(dāng)前分布式緩存集群的除所述排序中內(nèi)存配額最大的服務(wù)器之外的各其它服務(wù)器的當(dāng)前剩余存儲(chǔ)量確定所述其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一較佳的實(shí)施例中,所述設(shè)備還包括第七裝置7,用于根據(jù)當(dāng)前分布式緩存集群的所有服務(wù)器的內(nèi)存配額和當(dāng)前存儲(chǔ)量估計(jì)當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)耗費(fèi)時(shí)間,從而更合理的安排和調(diào)整當(dāng)前分布式緩存集群的所有服務(wù)器的升級(jí)方式和時(shí)間。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一優(yōu)選的實(shí)施例中,所述第二二單元22,用于根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上,從而盡量平均掉后續(xù)各服務(wù)器上數(shù)據(jù)的訪問(wèn)壓力。
本申請(qǐng)的分布式緩存集群的升級(jí)設(shè)備一優(yōu)選的實(shí)施例中,所述第二二單元22,用于將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上,即如圖2所示,先將服務(wù)器M1上的部分?jǐn)?shù)據(jù)遷移到服務(wù)器M2后,再將將服務(wù)器M1上的部分?jǐn)?shù)據(jù)遷移到服務(wù)器M3,依此類推,直到將服務(wù)器M1上的最后的剩余數(shù)據(jù)遷移到排序在最后的服務(wù)器上,從而保證某一時(shí)刻內(nèi)只有兩臺(tái)服務(wù)器之間在進(jìn)行數(shù)據(jù)遷移,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響,同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上,而且即使遷移出錯(cuò),也可以根據(jù)當(dāng)前的出錯(cuò)服務(wù)器和所述排序得知哪些服務(wù)器上的數(shù)據(jù)已經(jīng)遷移成功,哪些還未成功,后續(xù)只要從出錯(cuò)的服務(wù)器進(jìn)行遷移調(diào)整即可,已經(jīng)遷移成功可以不必考慮,例如,如圖2所示,如果服務(wù)器M1在向服務(wù)器M4進(jìn)行遷移的時(shí)候出錯(cuò),那么之前已經(jīng)遷移成功的服務(wù)器M2和M3則不必考慮,后續(xù)遷移只要從服務(wù)器M4開(kāi)始,考慮服務(wù)器M4及排序在其后的服務(wù)器即可。
綜上所述,本申請(qǐng)通過(guò)將排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到該分布式緩存集群的其它服務(wù)器上,將所述排序中內(nèi)存配額最大的服務(wù)器作為初始的當(dāng)前待升級(jí)服務(wù)器,將所述當(dāng)前待升級(jí)服務(wù)器上的服務(wù)程序進(jìn)行升級(jí),將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器上的數(shù)據(jù)遷移到當(dāng)前待升級(jí)服務(wù)器上,將所述排序緊次于當(dāng)前待升級(jí)服務(wù)器作為新的當(dāng)前待升 級(jí)服務(wù)器,可實(shí)現(xiàn)分布式緩存集群的服務(wù)器在升級(jí)的時(shí)候,能進(jìn)行平穩(wěn)的過(guò)渡升級(jí),升級(jí)過(guò)程中不能丟失數(shù)據(jù)、不中斷對(duì)外部的服務(wù)。
進(jìn)一步的,本申請(qǐng)通過(guò)一方面在分布式緩存集群的所有服務(wù)器清空和升級(jí)之前,暫停分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,以免由于后續(xù)升級(jí)過(guò)程中出現(xiàn)集群中服務(wù)器間的自動(dòng)數(shù)據(jù)遷移而導(dǎo)致升級(jí)錯(cuò)誤或失敗,另一方面,在分布式緩存集群的所有服務(wù)器清空和升級(jí)之后,恢復(fù)分布式緩存集群的所有服務(wù)器的自動(dòng)負(fù)載均衡功能,實(shí)現(xiàn)負(fù)載均衡,以平衡各服務(wù)器上后續(xù)的數(shù)據(jù)訪問(wèn)壓力。
進(jìn)一步的,本申請(qǐng)通過(guò)當(dāng)分布式緩存集群中有部分服務(wù)器處于自動(dòng)數(shù)據(jù)遷移狀態(tài)時(shí),暫停該分布式緩存集群的其它不處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器的自動(dòng)負(fù)載均衡功能,并在所述處于自動(dòng)數(shù)據(jù)遷移狀態(tài)的服務(wù)器完成自動(dòng)數(shù)據(jù)遷移后,暫停該完成自動(dòng)數(shù)據(jù)遷移的服務(wù)器的自動(dòng)負(fù)載均衡功能,從而實(shí)現(xiàn)處于自動(dòng)數(shù)據(jù)遷移的服務(wù)器在完成自動(dòng)遷移后平緩地停掉自動(dòng)負(fù)載均衡功能,避免處于自動(dòng)數(shù)據(jù)遷移狀態(tài)被突然暫停自動(dòng)負(fù)載均衡功能而丟失數(shù)據(jù)的情況。
進(jìn)一步的,在當(dāng)前分布式緩存集群中的其它服務(wù)器的當(dāng)前總剩余存儲(chǔ)量不能容納所述內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)時(shí),本申請(qǐng)通過(guò)在當(dāng)前分布式緩存集群中增加新的服務(wù)器后,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)遷移到新增加的服務(wù)器上,順利實(shí)現(xiàn)服務(wù)器的清空和升級(jí)。
進(jìn)一步的,本申請(qǐng)根據(jù)當(dāng)前分布式緩存集群中的其它服務(wù)器的各自的剩余存儲(chǔ)量,將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)以接近平均的方式將遷移到該分布式緩存集群的各其它服務(wù)器上,從而盡量平均掉后續(xù)各服務(wù)器上數(shù)據(jù)的訪問(wèn)壓力。
進(jìn)一步的,本申請(qǐng)通過(guò)將所述排序中內(nèi)存配額最大的服務(wù)器上的所有數(shù)據(jù)按照所述排序的順序依次遷移到該分布式緩存集群的各其它服務(wù)器上,從而保證某一時(shí)刻內(nèi)只有兩臺(tái)服務(wù)器之間在進(jìn)行數(shù)據(jù)遷移,盡可能的使處于遷移狀態(tài)的機(jī)器數(shù)量最少,避免造成大范圍的影響,同時(shí)即使遷移出錯(cuò),也能把范圍控制在2臺(tái)機(jī)器上,而且即使遷移出錯(cuò),也可以根據(jù)當(dāng) 前的出錯(cuò)服務(wù)器和所述排序得知哪些服務(wù)器上的數(shù)據(jù)已經(jīng)遷移成功,哪些還未成功,后續(xù)只要從出錯(cuò)的服務(wù)器進(jìn)行遷移調(diào)整即可,已經(jīng)遷移成功可以不必考慮。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
需要注意的是,本發(fā)明可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(ASIC)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本發(fā)明的軟件程序可以通過(guò)處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本發(fā)明的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤(pán)及類似設(shè)備。另外,本發(fā)明的一些步驟或功能可采用硬件來(lái)實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
另外,本發(fā)明的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過(guò)該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本發(fā)明的方法和/或技術(shù)方案。而調(diào)用本發(fā)明的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過(guò)廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本發(fā)明的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本發(fā)明的多個(gè)實(shí)施例的方法和/或技術(shù)方案。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要 求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或者硬件來(lái)實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來(lái)表示名稱,而并不表示任何特定的順序。