本申請涉及計算機(jī)領(lǐng)域,尤其涉及一種用于擴(kuò)展分布式一致性服務(wù)的方法和設(shè)備。
背景技術(shù):
在分布式系統(tǒng)中,通常由多個服務(wù)組件共同接受訪問請求并提供服務(wù),以保持穩(wěn)定性,同時使用分布式一致性服務(wù)(例如分布式鎖)來協(xié)調(diào)多個服務(wù)組件之間的關(guān)系和操作。當(dāng)前主流分布式鎖都會基于quorum(多數(shù)派機(jī)制,例如chubby、zookeeper)來保證一致性和可用性?,F(xiàn)有基于quorum實現(xiàn)的分布式鎖,一般會面臨下面幾個嚴(yán)重的問題:
每次更新操作,需要經(jīng)過半數(shù)以上服務(wù)組件同意,才可以認(rèn)為一次更新操作成功。當(dāng)更新操作非常頻繁時,沒有固有的辦法能夠簡單有效地提高系統(tǒng)的服務(wù)能力。典型的,簡單的添加服務(wù)組件的方法,一方面不能提高服務(wù)的處理能力,同時還會影響更新操作的響應(yīng)時間。此外,分布式鎖對自身服務(wù)的失效時間(Failover)有著異??量痰囊?,當(dāng)服務(wù)的數(shù)據(jù)規(guī)模逐漸增大時,訪問請求越來越多,存儲的數(shù)據(jù)資源越來越大,失效時間會隨之同步增長,服務(wù)的可用性會受到非常大的挑戰(zhàn)。
技術(shù)實現(xiàn)要素:
本申請要解決的技術(shù)問題是:提供一種基于服務(wù)分區(qū)的擴(kuò)展分布式一致性服務(wù)的方法和設(shè)備。
根據(jù)本申請一方面提供的一種用于擴(kuò)展分布式一致性服務(wù)的方法,其中,所述方法包括:
配置若干服務(wù)分區(qū),并基于所述服務(wù)分區(qū)的數(shù)據(jù)資源分布規(guī)則,由所述服務(wù)分區(qū)處理相應(yīng)訪問請求,其中,每一所述服務(wù)分區(qū)具有若干一致的服務(wù)組件;
將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù) 分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
進(jìn)一步地,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)包括:
將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源選定為遷移前數(shù)據(jù)資源;
將所述遷移前數(shù)據(jù)資源以復(fù)制方式遷移到所述遷移服務(wù)分區(qū),形成遷移后數(shù)據(jù)資源。
進(jìn)一步地,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)還包括:
在遷移過程中,將所述遷移后數(shù)據(jù)資源設(shè)置為無效狀態(tài);
在即將完成遷移時,將所述遷移前數(shù)據(jù)資源設(shè)置為只讀狀態(tài);
在完成遷移后,將所述遷移前數(shù)據(jù)資源設(shè)置為不可讀不可寫狀態(tài),并將所述遷移后數(shù)據(jù)設(shè)置為只讀狀態(tài)。
進(jìn)一步地,在遷移完成后由所述遷移服務(wù)分區(qū)處理與所遷移的數(shù)據(jù)資源相應(yīng)的所述訪問請求包括:
更新所述數(shù)據(jù)資源分布規(guī)則;
向所有用戶發(fā)起服務(wù)分區(qū)變更通知,并基于所述用戶的擁有者變更操作請求,將遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有效,且擁有者信息設(shè)置為相應(yīng)的請求用戶;
在完成遷移超出預(yù)設(shè)時間后,重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài),并刪除遷移數(shù)據(jù)中未獲得更改用戶者操作請求的相應(yīng)標(biāo)識文件。
進(jìn)一步地,所述標(biāo)識文件包括分布式鎖文件。
進(jìn)一步地,所述服務(wù)分區(qū)的服務(wù)組件采用多數(shù)派機(jī)制維持一致性。
進(jìn)一步地,所述遷移服務(wù)分區(qū)為已有空閑的服務(wù)分區(qū)或新配置的服務(wù)分區(qū)。
根據(jù)本申請一方面提供的一種用于擴(kuò)展分布式一致性服務(wù)的設(shè)備,其中,所述設(shè)備包括:
配置裝置,用于配置若干服務(wù)分區(qū),并基于所述服務(wù)分區(qū)的數(shù)據(jù)資源分布規(guī)則,由所述服務(wù)分區(qū)處理相應(yīng)訪問請求,其中,每一所述服務(wù)分區(qū)具有若干一致的服務(wù)組件;
遷移裝置,用于將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
進(jìn)一步地,所述遷移裝置用于:
將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源選定為遷移前數(shù)據(jù)資源;
將所述遷移前數(shù)據(jù)資源以復(fù)制方式遷移到所述遷移服務(wù)分區(qū),形成遷移后數(shù)據(jù)資源。
進(jìn)一步地,所述遷移裝置還包括:
在遷移過程中,將所述遷移后數(shù)據(jù)資源設(shè)置為無效狀態(tài);
在即將完成遷移時,將所述遷移前數(shù)據(jù)資源設(shè)置為只讀狀態(tài);
在完成遷移后,將所述遷移前數(shù)據(jù)資源設(shè)置為不可讀不可寫狀態(tài),并將所述遷移后數(shù)據(jù)設(shè)置為只讀狀態(tài)。
進(jìn)一步地,所述遷移裝置用于:在遷移完成后,
更新所述數(shù)據(jù)資源分布規(guī)則;
向所有用戶發(fā)起服務(wù)分區(qū)變更通知,并基于所述用戶的擁有者變更操作請求,將遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有效,且擁有者信息設(shè)置為相應(yīng)的請求用戶;
在完成遷移超出預(yù)設(shè)時間后,重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài),并刪除遷移數(shù)據(jù)中未獲得更改用戶者操作請求的相應(yīng)標(biāo)識文件。
進(jìn)一步地,所述標(biāo)識文件包括分布式鎖文件。
進(jìn)一步地,所述遷移裝置用于:
重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài)后超出超時時間時,刪除所述遷移前數(shù)據(jù)資源。
進(jìn)一步地,所述服務(wù)分區(qū)的服務(wù)組件采用多數(shù)派機(jī)制維持一致性。
進(jìn)一步地,所述遷移服務(wù)分區(qū)為已有空閑的服務(wù)分區(qū)或新配置的服務(wù)分區(qū)。
與現(xiàn)有技術(shù)相比,在本申請一方面提供的所述用于擴(kuò)展分布式一致性服務(wù)的方法及另一方面提供的設(shè)備,通過部署多組包括分布式鎖服務(wù)組件的服務(wù)分區(qū)、每組服務(wù)分區(qū)存儲部分?jǐn)?shù)據(jù)資源,并提供相應(yīng)訪問請求,并在運(yùn)行時動態(tài)調(diào)整每個分區(qū)服務(wù)的數(shù)據(jù)資源來平衡各組服務(wù)分區(qū)之間的處理負(fù)載壓力,以此提高了分布式一致性服務(wù)的擴(kuò)展能力。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1示出根據(jù)本申請一個方面的提供的一種用于擴(kuò)展分布式一致性服務(wù)的方法流程圖;
圖2~圖4示出本申請一個優(yōu)選實施例提供的一種用于擴(kuò)展分布式一致性服務(wù)的遷移過程示意圖;
圖5示出根據(jù)本申請一個方面的提供的一種用于擴(kuò)展分布式一致性服務(wù)的設(shè)備示意圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實施方式
下面結(jié)合附圖對本申請作進(jìn)一步詳細(xì)描述。
在分布式系統(tǒng)中,分布式一致性服務(wù)一般基于C/S架構(gòu)(客戶/服務(wù)架構(gòu))來實現(xiàn),服務(wù)一般由多個服務(wù)組件形成的多個節(jié)點提供服務(wù),以保證一致性和可用性;客戶端提供接口給用戶或應(yīng)用方用來訪問分布式一致性服務(wù)。分布式一致性服務(wù)包括分布式鎖,分布式鎖是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式。如果不同的系統(tǒng)或是同一個系統(tǒng)的不同主機(jī)之間共享了一個或一組服務(wù)組件的數(shù)據(jù)資源,那么請求訪問這些數(shù)據(jù)資源的時候,往往需要互斥來防止彼此干擾來保證一致性,在這種情況下,便需要使用到分布式鎖。
基于以上,本申請一方面提供了一種基于服務(wù)分區(qū)的分布式一致性服務(wù)的方法,通過配置若干具有一致性服務(wù)的服務(wù)分區(qū),并設(shè)定每一服務(wù)分區(qū)所服務(wù)的數(shù)據(jù)資源的分布規(guī)則,從而將數(shù)據(jù)資源分散到多個服務(wù)分區(qū)中,每個服務(wù)分區(qū)處理一部分訪問請求并存儲部分相應(yīng)數(shù)據(jù)資源;同時,當(dāng)訪問請求增多或數(shù)據(jù)資源增大時,造成某個或某幾個服務(wù)分區(qū)的處理負(fù)載過大時,則動態(tài)配置遷移服務(wù)分區(qū),遷移服務(wù)分區(qū)可以是已有空閑的服務(wù)分區(qū)或新配置的服務(wù)分區(qū),然后將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求,從而平衡多個服務(wù)分區(qū)之間的負(fù)載壓力,保證服務(wù)穩(wěn)定性。
圖1示出根據(jù)本申請一個方面的提供的一種用于擴(kuò)展分布式一致性服務(wù)的方法流程圖,其中,所述方法包括:
步驟S11:配置若干服務(wù)分區(qū),并基于所述服務(wù)分區(qū)的數(shù)據(jù)資源分布規(guī)則,由所述服務(wù)分區(qū)處理相應(yīng)訪問請求,其中,每一所述服務(wù)分區(qū)具有若干一致的服務(wù)組件;
步驟S12:將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
在所述步驟S11中,所述服務(wù)分區(qū)的服務(wù)組件采用多數(shù)派機(jī)制維持一致性,相同所述服務(wù)分區(qū)中的服務(wù)組件存儲相同的數(shù)據(jù)資源。在配置完成后,當(dāng)訪問請求到達(dá)分布式一致性服務(wù)前端時,會基于訪問請求的內(nèi)容,并根據(jù)數(shù)據(jù)資源分布規(guī)則,將訪問請求路由到相應(yīng)能夠處理該訪問請求的服務(wù)分區(qū)中,由該服務(wù)分區(qū)完成對用戶的訪問申請的處理、釋放分布式鎖,設(shè)置分布式鎖的擁有者信息等操作。
在所述步驟S12中,在分布式一致性服務(wù)工作一段時間后,某個或某些服務(wù)分區(qū)上會出現(xiàn)訪問請求過多或存儲數(shù)據(jù)資源過大,導(dǎo)致處理負(fù)載過大,此時可以根據(jù)系統(tǒng)的運(yùn)行情況,動態(tài)將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
進(jìn)一步地,在所述步驟S12中,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)包括:
將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源選定為遷移前數(shù)據(jù)資源;具體地,選定方式并不被限制,可根據(jù)數(shù)據(jù)資源的數(shù)據(jù)量及所對應(yīng)的訪問請求對服務(wù)分區(qū)進(jìn)行具體劃分;將所述遷移前數(shù)據(jù)資源以復(fù)制方式遷移到所述遷移服務(wù)分區(qū),形成遷移后數(shù)據(jù)資源。以復(fù)制的方式能夠保證在遷移過程中,不影響遷移前已擁有標(biāo)識文件(分布式鎖文件)的用戶繼續(xù)提供數(shù)據(jù)服務(wù)。
進(jìn)一步地,在所述步驟S12中,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)還包括:
在遷移過程中,將所述遷移后數(shù)據(jù)資源設(shè)置為無效狀態(tài);設(shè)置為無效狀態(tài)用以防止系統(tǒng)認(rèn)為遷移后數(shù)據(jù)資源超時時間內(nèi)未獲得訪問請求而刪除所述遷移后數(shù)據(jù)資源。
在即將完成遷移時,將所述遷移前數(shù)據(jù)資源設(shè)置為只讀狀態(tài);此時,用戶已經(jīng)持有的標(biāo)識文件并不受影響,即可以繼續(xù)利用所述標(biāo)識文件讀取遷移前數(shù)據(jù)資源,
在完成遷移后,將所述遷移前數(shù)據(jù)資源設(shè)置為不可讀不可寫狀態(tài),并將所述遷移后數(shù)據(jù)設(shè)置為只讀狀態(tài),為數(shù)據(jù)資源resource-x開始提供服務(wù)做準(zhǔn)備。
進(jìn)一步地,在所述步驟S12中,在遷移完成后由所述遷移服務(wù)分區(qū)處理與所遷移的數(shù)據(jù)資源相應(yīng)的所述訪問請求包括:
更新所述數(shù)據(jù)資源分布規(guī)則;
向所有用戶發(fā)起服務(wù)分區(qū)變更通知,并基于所述用戶的擁有者變更操作請求,將遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有效,且擁有者信息設(shè)置為相應(yīng)的請求用戶;具體地,若收到來自擁有遷移前數(shù)據(jù)資源的標(biāo)識文件的用戶的擁有者變更操作請求后,會把對應(yīng)遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有效、且將擁有者信息更改為該原擁有者用戶,若作為擁有遷移前數(shù)據(jù)資源的標(biāo)識文件的用戶在收到通知后未向服務(wù)分區(qū)發(fā)起擁有者請求操作,在等待超出預(yù)設(shè)時間后,則刪除相應(yīng)標(biāo)識文件,可以根據(jù)其他用戶的訪問請求重新釋 放分布式鎖。
在完成遷移超出預(yù)設(shè)時間后,重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài),并刪除遷移數(shù)據(jù)中未獲得更改用戶者操作請求的相應(yīng)標(biāo)識文件。其中,優(yōu)選地,所述標(biāo)識文件包括分布式鎖文件。
此外,當(dāng)重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài)后超出超時時間時,刪除所述遷移前數(shù)據(jù)資源。,最終完成數(shù)據(jù)遷移。
圖2~圖4示出本申請一個優(yōu)選實施例提供的一種擴(kuò)展分布式一致性服務(wù)的遷移過程示意圖,在具體的場景中,以服務(wù)分區(qū)quorum-n為例,來說明用于擴(kuò)展分布式一致性服務(wù)的方法中動態(tài)遷移數(shù)據(jù)的過程:
如圖2所示,初始配置后,例如,在提供服務(wù)的服務(wù)分區(qū)包括服務(wù)分區(qū)quorum-1至服務(wù)分區(qū)quorum-n,其中,服務(wù)分區(qū)quorum-n上有數(shù)據(jù)資源resource-n和數(shù)據(jù)資源resouce-x,都由服務(wù)分區(qū)quorum-n服務(wù),在quorum-n服務(wù)為用戶分配關(guān)于數(shù)據(jù)資源resource-n的鎖文件lock://resource-n/foo,為用戶分配關(guān)于數(shù)據(jù)資源resource-x的鎖文件lock://resource-x/foo,作為擁有者的用戶可以持所述鎖文件lock://resource-n/foo獲取數(shù)據(jù)資源resource-n的相關(guān)服務(wù),持所述鎖文件lock://resource-x/foo獲取數(shù)據(jù)資源resource-x的相關(guān)服務(wù)。
如圖3所示,當(dāng)服務(wù)分區(qū)quorum-n的處理負(fù)載壓力過大,決定把數(shù)據(jù)資源resource-x遷移到較空閑的服務(wù)分區(qū)quorum-x上。
首先,啟動一個遷移操作(migration操作),實時地將服務(wù)分區(qū)quorum-n上和數(shù)據(jù)資源resource-x相關(guān)的數(shù)據(jù)動態(tài)以復(fù)制的方式遷移到遷移服務(wù)分區(qū)quorum-x上。Migration操作利用分布式鎖原生的同步協(xié)議,可以實時的同步所有數(shù)據(jù)及更新操作到新的分區(qū),整個過程對原有服務(wù)不會產(chǎn)生任何影響。此時,遷移到遷移服務(wù)分區(qū)quorum-x上的遷移后數(shù)據(jù)資源resource-x’設(shè)置為無效狀態(tài)(invalid),設(shè)置為無效狀態(tài)用以防止系統(tǒng)認(rèn)為遷移后數(shù)據(jù)資源resource-x’超時時間內(nèi)未獲得訪問請求而刪除所述遷移后數(shù)據(jù)資源resource-x’。
當(dāng)遷移即將完成時,服務(wù)分區(qū)quorum-n的數(shù)據(jù)資源resource-x和服務(wù)分區(qū)quorum-x上數(shù)據(jù)資源resource-x’的相關(guān)數(shù)據(jù)的狀態(tài)基本一致時,例如需要遷移的數(shù)據(jù)資源一共有1024M,還剩8M需要遷移的數(shù)據(jù)需要傳送,剩余需 要遷移的數(shù)據(jù)資源所需傳遞的時間遠(yuǎn)小于一次訪問請求的處理時間時,在服務(wù)分區(qū)quorum-n上對數(shù)據(jù)資源resource-x設(shè)置只讀狀態(tài)(read-only)。此時,用戶已經(jīng)持有的鎖文件lock://resource-x/foo并不受影響,即可以繼續(xù)利用所述鎖文件讀取數(shù)據(jù)資源resource-x。
當(dāng)遷移完成時,待服務(wù)分區(qū)quorum-n的數(shù)據(jù)資源resource-x和服務(wù)分區(qū)quorum-x上數(shù)據(jù)資源resource-x’的相關(guān)數(shù)據(jù)的完全一致后,則在服務(wù)分區(qū)quorum-n上禁止所有對數(shù)據(jù)資源resource-x的操作,同時在服務(wù)分區(qū)quorum-x上設(shè)置數(shù)據(jù)資源resource-x’為只讀狀態(tài)(read-only),即為數(shù)據(jù)資源resource-x’開始提供服務(wù)做準(zhǔn)備。
更新所有服務(wù)分區(qū)路由規(guī)則:數(shù)據(jù)資源resource-x’由服務(wù)分區(qū)quorum-x服務(wù),數(shù)據(jù)資源resource-x’與數(shù)據(jù)資源resource-x完全一致。
通過系統(tǒng)前端通知所有用戶作擁有者變更操作(chown操作)。作為原擁有者的用戶在收到通知后會向服務(wù)分區(qū)quorum-x發(fā)起一個chown操作。則服務(wù)分區(qū)quorum-x收到來自原擁有者的用戶的chown操作后,會把對應(yīng)的鎖文件(lock://resource-x/foo)設(shè)置為有效、且擁有者信息更改為該原擁有者用戶,若作為原擁有者的用戶在收到通知后未向服務(wù)分區(qū)quorum-x發(fā)起chown操作,在等待超出預(yù)設(shè)時間后,則刪除服務(wù)分區(qū)quorum-x上未被chown操作的鎖文件lock://resource-x/foo,可以根據(jù)其他用戶的訪問請求重新釋放分布式鎖,同時,在超出預(yù)設(shè)時間后,取消數(shù)據(jù)資源resource-x和數(shù)據(jù)資源resource-x’的狀態(tài)限制,即均為可讀可寫狀態(tài),在超出超時時間內(nèi)數(shù)據(jù)資源resource-x未收到訪問請求的心跳報文,則系統(tǒng)會清除數(shù)據(jù)資源resource-x,最終完成數(shù)據(jù)遷移,如圖4所示。
當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述分布式一致性服務(wù)的動態(tài)遷移的具體場景及其中鎖文件、服務(wù)分區(qū)、數(shù)據(jù)資源、chown操作,migration操作的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的其他描述如可適用于本申請,也應(yīng)包含在本申請保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
圖5示出根據(jù)本申請一個方面的提供的一種用于擴(kuò)展分布式一致性服務(wù)的設(shè)備示意圖,其中,所述設(shè)備1包括:
配置裝置11,配置若干服務(wù)分區(qū),并基于所述服務(wù)分區(qū)的數(shù)據(jù)資源分布 規(guī)則,由所述服務(wù)分區(qū)處理相應(yīng)訪問請求,其中,每一所述服務(wù)分區(qū)具有若干一致的服務(wù)組件;
遷移裝置12,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
在此,所述設(shè)備1包括但不限于用戶設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備其包括但不限于任何一種可與用戶通過觸摸板進(jìn)行人機(jī)交互的移動電子產(chǎn)品,例如智能手機(jī)、PDA等,所述移動電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、iOS操作系統(tǒng)等。其中,所述網(wǎng)絡(luò)設(shè)備包括一種能夠按照事先設(shè)定或存儲的指令,自動進(jìn)行數(shù)值計算和信息處理的電子設(shè)備,其硬件包括但不限于微處理器、專用集成電路(ASIC)、可編程門陣列(FPGA)、數(shù)字處理器(DSP)、嵌入式設(shè)備等。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)、無線自組織網(wǎng)絡(luò)(Ad Hoc網(wǎng)絡(luò))等。優(yōu)選地,設(shè)備1還可以是運(yùn)行于所述用戶設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備、觸摸終端或網(wǎng)絡(luò)設(shè)備與觸摸終端通過網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備上的腳本程序。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述設(shè)備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設(shè)備1如可適用于本申請,也應(yīng)包含在本申請保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
上述各裝置之間是持續(xù)不斷工作的,在此,本領(lǐng)域技術(shù)人員應(yīng)理解“持續(xù)”是指上述各裝置分別實時地或者按照設(shè)定的或?qū)崟r調(diào)整的工作模式要求,直至所述設(shè)備1停止工作。
所述配置裝置11對所述服務(wù)分區(qū)的服務(wù)組件采用多數(shù)派機(jī)制維持一致性,相同所述服務(wù)分區(qū)中的服務(wù)組件存儲相同的數(shù)據(jù)資源。在配置完成后,當(dāng)訪問請求到達(dá)分布式一致性服務(wù)的前端時,會基于訪問請求的內(nèi)容,并根據(jù)數(shù)據(jù)資源分布規(guī)則,將訪問請求路由到相應(yīng)能夠處理該訪問請求的服務(wù)分區(qū)中,由該服務(wù)分區(qū)完成對用戶的訪問申請的處理、釋放分布式鎖,設(shè)置分布式鎖的擁有者信息等操作。
在所述遷移裝置12中,在分布式一致性服務(wù)在工作一段時間中,某個或某些服務(wù)分區(qū)上會出現(xiàn)訪問請求過多或存儲數(shù)據(jù)資源過大,導(dǎo)致處理負(fù)載過 大,此時可以根據(jù)系統(tǒng)的運(yùn)行情況,動態(tài)將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求。
進(jìn)一步地,在所述遷移裝置12中,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)包括:
將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源選定為遷移前數(shù)據(jù)資源;具體地,選定方式并不被限制,可根據(jù)數(shù)據(jù)資源的數(shù)據(jù)量及所對應(yīng)的訪問請求對服務(wù)分區(qū)進(jìn)行具體劃分;將所述遷移前數(shù)據(jù)資源以復(fù)制方式遷移到所述遷移服務(wù)分區(qū),形成遷移后數(shù)據(jù)資源。以復(fù)制的方式能夠保證在遷移過程中,不影響遷移前已擁有標(biāo)識文件(分布式鎖文件)的用戶繼續(xù)提供數(shù)據(jù)服務(wù)。
進(jìn)一步地,在所述遷移裝置12中,將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū)還包括:
在遷移過程中,將所述遷移后數(shù)據(jù)資源設(shè)置為無效狀態(tài);設(shè)置為無效狀態(tài)用以防止系統(tǒng)認(rèn)為遷移后數(shù)據(jù)資源超時時間內(nèi)未獲得訪問請求而刪除所述遷移后數(shù)據(jù)資源。
在即將完成遷移時,將所述遷移前數(shù)據(jù)資源設(shè)置為只讀狀態(tài);此時,用戶已經(jīng)持有的標(biāo)識文件并不受影響,即可以繼續(xù)利用所述標(biāo)識文件讀取遷移前數(shù)據(jù)資源,
在完成遷移后,將所述遷移前數(shù)據(jù)資源設(shè)置為不可讀不可寫狀態(tài),并將所述遷移后數(shù)據(jù)設(shè)置為只讀狀態(tài),為數(shù)據(jù)資源resource-x開始提供服務(wù)做準(zhǔn)備。
進(jìn)一步地,在所述遷移裝置12中,在遷移完成后由所述遷移服務(wù)分區(qū)處理與所遷移的數(shù)據(jù)資源相應(yīng)的所述訪問請求包括:
更新所述數(shù)據(jù)資源分布規(guī)則;
向所有用戶發(fā)起服務(wù)分區(qū)變更通知,并基于所述用戶的擁有者變更操作請求,將遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有效,且擁有者信息設(shè)置為相應(yīng)的請求用戶;具體地,若收到來自擁有遷移前數(shù)據(jù)資源的標(biāo)識文件的用戶的擁有者變更操作請求后,會把對應(yīng)遷移后數(shù)據(jù)資源中的標(biāo)識文件設(shè)置為有 效、且將擁有者信息更改為該原擁有者用戶,若作為擁有遷移前數(shù)據(jù)資源的標(biāo)識文件的用戶在收到通知后未向服務(wù)分區(qū)發(fā)起擁有者請求操作,在等待超出預(yù)設(shè)時間后,則刪除相應(yīng)標(biāo)識文件,可以根據(jù)其他用戶的訪問請求重新釋放分布式鎖。
在完成遷移超出預(yù)設(shè)時間后,重置所述遷移前數(shù)據(jù)資源和所述遷移后數(shù)據(jù)資源的狀態(tài)為可讀可寫狀態(tài),并刪除遷移數(shù)據(jù)中未獲得更改用戶者操作請求的相應(yīng)標(biāo)識文件。其中,優(yōu)選地,所述標(biāo)識文件包括分布式鎖文件。
圖2~圖4示出本申請一個優(yōu)選實施例提供的一種擴(kuò)展分布式一致性服務(wù)的遷移過程示意圖,在具體的場景中,以服務(wù)分區(qū)quorum-n為例,來說明用于擴(kuò)展分布式一致性服務(wù)的設(shè)備1進(jìn)行動態(tài)遷移數(shù)據(jù)的過程:
如圖2所示,初始配置后,例如,在服務(wù)分區(qū)quorum-n上有數(shù)據(jù)資源resource-n和數(shù)據(jù)資源resouce-x,都由服務(wù)分區(qū)quorum-n服務(wù),在quorum-n服務(wù)為用戶分配關(guān)于數(shù)據(jù)資源resource-n的鎖文件lock://resource-n/foo,為用戶分配關(guān)于數(shù)據(jù)資源resource-x的鎖文件lock://resource-x/foo,作為擁有者的用戶可以持所述鎖文件lock://resource-n/foo獲取數(shù)據(jù)資源resource-n的相關(guān)服務(wù),持所述鎖文件lock://resource-x/foo獲取數(shù)據(jù)資源resource-x的相關(guān)服務(wù)。
如圖3所示,當(dāng)服務(wù)分區(qū)quorum-n的處理負(fù)載壓力過大,決定把數(shù)據(jù)資源resource-x遷移到較空閑的服務(wù)分區(qū)quorum-x上。
首先,啟動一個遷移操作(migration操作),實時地將服務(wù)分區(qū)quorum-n上和數(shù)據(jù)資源resource-x相關(guān)的數(shù)據(jù)動態(tài)以復(fù)制的方式遷移到遷移服務(wù)分區(qū)quorum-x上。Migration操作利用分布式鎖原生的同步協(xié)議,可以實時的同步所有數(shù)據(jù)及更新操作到新的分區(qū),整個過程對原有服務(wù)不會產(chǎn)生任何影響。此時,遷移到遷移服務(wù)分區(qū)quorum-x上的遷移后數(shù)據(jù)資源resource-x’設(shè)置為無效狀態(tài)(invalid),設(shè)置為無效狀態(tài)用以防止系統(tǒng)認(rèn)為遷移后數(shù)據(jù)資源resource-x’超時時間內(nèi)未獲得訪問請求而刪除所述遷移后數(shù)據(jù)資源resource-x’。
當(dāng)遷移即將完成時,服務(wù)分區(qū)quorum-n的數(shù)據(jù)資源resource-x和服務(wù)分區(qū)quorum-x上數(shù)據(jù)資源resource-x’的相關(guān)數(shù)據(jù)的狀態(tài)基本一致時,例如需要遷移的數(shù)據(jù)資源一共有1024M,還剩8M需要遷移的數(shù)據(jù)需要傳送,剩余需 要遷移的數(shù)據(jù)資源所需傳遞的時間遠(yuǎn)小于一次訪問請求的處理時間時,在服務(wù)分區(qū)quorum-n上對數(shù)據(jù)資源resource-x設(shè)置只讀狀態(tài)(read-only)。此時,用戶已經(jīng)持有的鎖文件lock://resource-x/foo并不受影響,即可以繼續(xù)利用所述鎖文件讀取數(shù)據(jù)資源resource-x。
當(dāng)遷移完成時,待服務(wù)分區(qū)quorum-n的數(shù)據(jù)資源resource-x和服務(wù)分區(qū)quorum-x上數(shù)據(jù)資源resource-x’的相關(guān)數(shù)據(jù)的完全一致后,則在服務(wù)分區(qū)quorum-n上禁止所有對數(shù)據(jù)資源resource-x的操作,同時在服務(wù)分區(qū)quorum-x上設(shè)置數(shù)據(jù)資源resource-x’為只讀狀態(tài)(read-only),即為數(shù)據(jù)資源resource-x’開始提供服務(wù)做準(zhǔn)備。
更新所有服務(wù)分區(qū)路由規(guī)則:數(shù)據(jù)資源resource-x’由服務(wù)分區(qū)quorum-x服務(wù),數(shù)據(jù)資源resource-x’與數(shù)據(jù)資源resource-x完全一致。
通過系統(tǒng)前端通知所有用戶作擁有者變更操作(chown操作)。作為原擁有者的用戶在收到通知后會向服務(wù)分區(qū)quorum-x發(fā)起一個chown操作。則服務(wù)分區(qū)quorum-x收到來自原擁有者的用戶的chown操作后,會把對應(yīng)的鎖文件(lock://resource-x/foo)設(shè)置為有效、且擁有者信息更改為該原擁有者用戶,若作為原擁有者的用戶在收到通知后未向服務(wù)分區(qū)quorum-x發(fā)起chown操作,在等待超出預(yù)設(shè)時間后,則刪除服務(wù)分區(qū)quorum-x上未被chown操作的鎖文件lock://resource-x/foo,可以根據(jù)其他用戶的訪問請求重新釋放分布式鎖,同時,在超出預(yù)設(shè)時間后,取消數(shù)據(jù)資源resource-x和數(shù)據(jù)資源resource-x’的狀態(tài)限制,即均為可讀可寫狀態(tài),在超出超時時間內(nèi)數(shù)據(jù)資源resource-x未收到訪問請求的心跳報文,則系統(tǒng)會清除數(shù)據(jù)資源resource-x,最終完成數(shù)據(jù)遷移,如圖4所示。
當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述擴(kuò)展分布式一致性服務(wù)的動態(tài)遷移的具體場景及其中鎖文件、服務(wù)分區(qū)、數(shù)據(jù)資源、chown操作,migration操作的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的其他描述如可適用于本申請,也應(yīng)包含在本申請保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
與現(xiàn)有技術(shù)相比,根據(jù)本申請的實施例提供的基于服務(wù)分區(qū)的擴(kuò)展分布式一致性服務(wù)的設(shè)備,通過配置裝置配置若干具有一致性服務(wù)的服務(wù)分區(qū),并設(shè)定每一服務(wù)分區(qū)所服務(wù)的數(shù)據(jù)資源的分布規(guī)則,從而將數(shù)據(jù)資源分散到 多個服務(wù)分區(qū)中,每個服務(wù)分區(qū)處理一部分訪問請求并存儲部分相應(yīng)數(shù)據(jù)資源;同時,當(dāng)訪問請求增多或數(shù)據(jù)資源增大時,造成某個或某幾個服務(wù)分區(qū)的處理負(fù)載過大時,則通過遷移裝置動態(tài)配置遷移服務(wù)分區(qū),然后將處理負(fù)載過大的所述服務(wù)分區(qū)所存儲的部分?jǐn)?shù)據(jù)資源遷移至遷移服務(wù)分區(qū),并在遷移完成后,由所述遷移服務(wù)分區(qū)處理所遷移的數(shù)據(jù)資源對應(yīng)的所述訪問請求,從而平衡多個服務(wù)分區(qū)之間的負(fù)載壓力,保證服務(wù)穩(wěn)定性。
需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機(jī)或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
另外,本申請的一部分可被應(yīng)用為計算機(jī)程序產(chǎn)品,例如計算機(jī)程序指令,當(dāng)其被計算機(jī)執(zhí)行時,通過該計算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運(yùn)行的計算機(jī)設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機(jī)程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機(jī)程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。
對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細(xì)節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳 述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。