1.一種zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:提供zookeeper核心處理器、服務(wù)器集群監(jiān)控模塊、節(jié)點數(shù)據(jù)處理模塊、數(shù)據(jù)恢復模塊、客戶端、服務(wù)端及數(shù)據(jù)存儲服務(wù)器,所述zookeeper核心處理器包括服務(wù)器判斷模塊及服務(wù)器顯示模塊,所述zedis分布式緩存及服務(wù)器集群監(jiān)控方法包括以下步驟:
S1:所述服務(wù)器判斷模塊讀取所述服務(wù)器集群監(jiān)控模塊的redis服務(wù)器集群所需的完整信息;
S2:所述服務(wù)器判斷模塊將讀取到的信息發(fā)送給所述客戶端,所述客戶端將讀取redis服務(wù)器集群所需的完整信息,從每一個物理節(jié)點的完整信息抽取相對于其他物理節(jié)點唯一的信息,其中,所述信息包括ip地址與端口號;
S3:所述客戶端通過接收到的信息生成固定的多個key,通過負載均衡核心類ConsistentHash算法生成對應(yīng)多個hash碼,同一個信息生成的哈希碼全都映射到同一個物理節(jié)點,用哈希碼到物理節(jié)點的映射填充ConsistentHash的核心變量映射表形成哈希環(huán);
S4:所述哈希環(huán)與所述數(shù)據(jù)存儲服務(wù)器連接完成數(shù)據(jù)備份與故障規(guī)避的讀寫過程;
S5:所述故障轉(zhuǎn)移處理模塊、服務(wù)器集群監(jiān)控模塊及zookeeper核心處理器通過數(shù)據(jù)備份、規(guī)避故障節(jié)點和數(shù)據(jù)恢復實現(xiàn)故障轉(zhuǎn)移;
S6:所述服務(wù)器集群監(jiān)控模塊對集群服務(wù)器進行監(jiān)控,并將監(jiān)控得出的結(jié)果發(fā)送給zookeeper核心處理器;
所述步驟S6的實現(xiàn)步驟包括:
S601:讀取zedis集群配置,建立物理節(jié)點對應(yīng)的檢測任務(wù),把檢測出的可用性變化情況通過發(fā)送給客戶端;
S602:初始化集群,構(gòu)造服務(wù)器集群監(jiān)控模塊傳入客戶端的集群信息,所述服務(wù)器集群監(jiān)控模塊根據(jù)固定的配置規(guī)范讀取所述集群信息并初始化;
S603:所述服務(wù)器集群監(jiān)控模塊對每個讀取到的不同的物理節(jié)點構(gòu)造一個線程內(nèi)部類RedisPing任務(wù),調(diào)用所述“檢測redis服務(wù)器是否可用”的策略的ping方法,檢測物理節(jié)點的可用性;
S604:根據(jù)監(jiān)控結(jié)果,判斷物理節(jié)點是否出現(xiàn)可用性變化,若物理節(jié)點出現(xiàn)可用性變化,從可用變?yōu)椴豢捎?,修改所述zookeeper核心處理器配置并通知客戶端;若物理節(jié)點出現(xiàn)不可用性變化,從不可用變?yōu)榭捎?,先?shù)據(jù)恢復,然后再修改zookeeper核心處理器配置并通知所述客戶端;
其中,所述數(shù)據(jù)存儲服務(wù)器的數(shù)據(jù)存儲方式如下表所示:
其中,所述主節(jié)點為通過負載均衡核心類ConsistentHash算法找到的最近的物理節(jié)點,備節(jié)點是主節(jié)點的下一個節(jié)點。
2.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述步驟“數(shù)據(jù)備份與故障規(guī)避的讀過程”的實現(xiàn)步驟包括:
S401:所述讀寫代理模塊根據(jù)key參數(shù),通過哈希環(huán)找出主節(jié)點,并以此找到備節(jié)點;
S402:判斷主節(jié)點是否可用,如果主節(jié)點可用,則執(zhí)行步驟S403,如果主節(jié)點不可用但備節(jié)點可用,執(zhí)行步驟S404,如果主節(jié)點及備節(jié)點均不可用;
S403:往主節(jié)點主數(shù)據(jù)庫寫并往備節(jié)點的主數(shù)據(jù)庫寫入;
S404:往備節(jié)點的備用數(shù)據(jù)庫和臨時數(shù)據(jù)庫寫入;
S405:寫入其他可用節(jié)點的數(shù)據(jù)庫;
所述步驟“數(shù)據(jù)備份與故障規(guī)避的寫過程”的實現(xiàn)步驟包括:
S406:所述讀寫代理模塊根據(jù)key參數(shù)獲取主節(jié)點及備份節(jié)點;
S407:判斷主節(jié)點是否可用,如果主節(jié)點可用,執(zhí)行步驟S408,如果主節(jié)點不可用但備節(jié)點可用,執(zhí)行步驟S409,如果主節(jié)點及備節(jié)點均不可用,執(zhí)行步驟S410;
S408:從主節(jié)點讀??;
S409:從備節(jié)點讀取;
S410:從其他節(jié)點讀取。
3.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述客戶端包括負載均衡處理模塊,所述步驟S3中的“負載均衡核心類ConsistentHash算法”包括:
所述負載均衡處理模塊通過MurMurHash2算法接收參數(shù)key,生成并返回哈希碼;
所述負載均衡處理模塊通過void_addNode算法接收節(jié)點S和一個原始參數(shù)key,用參數(shù)key生成多個哈希碼,并將所有的哈希碼全部映射到所述節(jié)點S,將映射存入TreeMap;
所述負載均衡處理模塊通過S_getClosestNode算法接收參數(shù)key,根據(jù)key生成hashCode,用TreeMap的tailMap算法,找到最近的節(jié)點并返回。
4.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述服務(wù)器集群監(jiān)控模塊包括連接redis服務(wù)器所需的信息、表明節(jié)點可用性狀態(tài)的表量及檢測redis服務(wù)器是否可用的策略。
5.根據(jù)權(quán)利要求4所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述“檢測redis服務(wù)器是否可用”的策略包括:初始化所述服務(wù)器集群監(jiān)控模塊并根據(jù)信息與redis服務(wù)器建立連接;
通過客戶端的ping方法檢測節(jié)點是否存活,再通過客戶端的set方法,檢查是否能正常存入數(shù)據(jù),如果檢查均通過則返回服務(wù)器可用,否則返回服務(wù)器不可用;
連續(xù)N次調(diào)用pingOnce(),記錄調(diào)用成功或失敗比率并返回;
所述服務(wù)器集群監(jiān)控模塊先調(diào)用一次pingOnce(),若返回結(jié)果與所述服務(wù)器集群監(jiān)控模塊一致,則redis服務(wù)器可用性狀態(tài)無變化,并返回檢測結(jié)果,若首次檢測結(jié)果與所述服務(wù)器集群監(jiān)控模塊不一致,則調(diào)用checkStateRatio進行判斷,以checkStateRatio返回結(jié)果為準,返回檢測結(jié)果。
6.根據(jù)權(quán)利要求4所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述哈希環(huán)包括Redis節(jié)點,Redis節(jié)點標號到Redis節(jié)點本身的映射表、集群的最大標號和最小標號。
7.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述步驟S5的實現(xiàn)步驟包括:
所述故障轉(zhuǎn)移處理模塊根據(jù)key參數(shù)生成哈希碼并找到主節(jié)點,然后找到主節(jié)點的備節(jié)點,對主備節(jié)點進行相同的寫操作,主節(jié)點=n,則備節(jié)點=n+1,寫操作在主節(jié)點主數(shù)據(jù)庫空間和備節(jié)點的備數(shù)據(jù)庫空間一起進行。
8.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述步驟S5的“規(guī)避故障節(jié)點步驟”的實現(xiàn)步驟包括:
所述故障轉(zhuǎn)移處理模塊根據(jù)java代理攔截接口調(diào)用的數(shù)據(jù),并通過key參數(shù)找到主節(jié)點,判斷主節(jié)點是否可用,如果可用則在主節(jié)點上與數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)交換的工作;如果主節(jié)點不可用,則在備節(jié)點與數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)交換的工作;如果主節(jié)點和備節(jié)點均不可用,則在剩余的物理節(jié)點中,尋找可用的節(jié)點與數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)交換的工作。
9.根據(jù)權(quán)利要求1所述的zedis分布式緩存及服務(wù)器集群監(jiān)控方法,其特征在于:所述步驟S5的“數(shù)據(jù)恢復”的實現(xiàn)步驟包括:
判斷故障節(jié)點規(guī)避是否已經(jīng)完成,如果已經(jīng)完成,則進行數(shù)據(jù)恢復,否則續(xù)費進行故障節(jié)點規(guī)避;
找出恢復正常的節(jié)點相對的主節(jié)點和備節(jié)點,假設(shè)主數(shù)據(jù)庫=n,恢復節(jié)點=n+2,恢復節(jié)點為目標節(jié)點,主節(jié)點=n+1,備節(jié)點=n+3;從備節(jié)點臨時數(shù)據(jù)庫空間恢復數(shù)據(jù)到目標節(jié)點主數(shù)據(jù)庫空間,然后清空備節(jié)點臨時數(shù)據(jù)庫空間,從主節(jié)點主數(shù)據(jù)庫空間恢復數(shù)據(jù)到目標節(jié)點備用數(shù)據(jù)庫空間。