本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法和路由層設(shè)備以及系統(tǒng)。
背景技術(shù):
在分布式數(shù)據(jù)緩存服務(wù)中,為具備容災(zāi)能力,現(xiàn)有技術(shù)中可以利用數(shù)據(jù)緩存主備雙倍機(jī)器來保證,數(shù)據(jù)路由訪問為類哈希方式。其表現(xiàn)缺陷為在正常情況下冗余備份造成機(jī)器浪費(fèi)嚴(yán)重。
舉例說明,基于Keepalived的Redis分布式緩存集群是一個無共享的(shared-nothing)、分布式節(jié)點(diǎn)架構(gòu)的存儲方案,其目的是提供容錯性和高性能。Redis集群方案中有一種實現(xiàn)方式是采用Keepalived技術(shù)保證集群具備容災(zāi)和高可用能力。Keepalived是一個用C語言編寫的路由選擇軟件,配合互聯(lián)網(wǎng)協(xié)議虛擬服務(wù)器(Internet Protocol Virtual Server,IPVS)負(fù)載均衡使用,通過虛擬路由冗余協(xié)議(Virtual Router Redundancy Protocol,VRRP)協(xié)議提供高可用性能,從而實現(xiàn)一主多備,主掛后備自動選舉,漂移虛擬IP,切換速度秒級等功能,切換時可通過運(yùn)行指定腳本更改業(yè)務(wù)服務(wù)狀態(tài)。
在目前基于主備存儲來保證高可靠,具備容災(zāi)能力的集群方案中,至少存在如下技術(shù)缺陷:前端訪問數(shù)據(jù)對應(yīng)路由有固定的靜態(tài)綁定關(guān)系,并且冗余備份造成機(jī)器浪費(fèi)嚴(yán)重,在正常情況下備機(jī)處于“無用”狀態(tài),整體資源成倍浪費(fèi)。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)據(jù)處理方法和路由層設(shè)備以及系統(tǒng),用于提高數(shù)據(jù)存儲資源的利用效率。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
第一方面,本發(fā)明實施例提供一種基于數(shù)據(jù)處理方法,包括:
路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,所述數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵key;
所述路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取所述鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),所述數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),所述第一數(shù)據(jù)節(jié)點(diǎn)包括所述至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn);
所述路由層設(shè)備將所述數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給所述第一數(shù)據(jù)節(jié)點(diǎn),由所述第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)操作請求對所述待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
第二方面,本發(fā)明實施例還提供一種路由層設(shè)備,包括:
接收模塊,用于接收客戶端發(fā)送的數(shù)據(jù)操作請求,所述數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵key;
數(shù)據(jù)節(jié)點(diǎn)選擇模塊,用于根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取所述鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),所述數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),所述第一數(shù)據(jù)節(jié)點(diǎn)包括所述至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn);
調(diào)度模塊,用于將所述數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給所述第一數(shù)據(jù)節(jié)點(diǎn),由所述第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)操作請求對所述待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
第三方面,本發(fā)明實施例還提供一種分布式緩存系統(tǒng),包括:客戶端、如前述第二方面中所述的路由層設(shè)備和數(shù)據(jù)節(jié)點(diǎn)集群,其中,
所述客戶端,用于向所述路由層設(shè)備發(fā)送數(shù)據(jù)操作請求,所述數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵key;
所述數(shù)據(jù)節(jié)點(diǎn)集群,包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),所述第一數(shù)據(jù)節(jié)點(diǎn)為所述路由層設(shè)備選取出的數(shù)據(jù)節(jié)點(diǎn);
所述第一數(shù)據(jù)節(jié)點(diǎn),用于根據(jù)所述數(shù)據(jù)操作請求對所述待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點(diǎn):
在本發(fā)明實施例中,首先路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵,然后路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)包括至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn),最后路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),由第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。由于路由層設(shè)備能夠屏蔽數(shù)據(jù)節(jié)點(diǎn)的選擇和調(diào)度,為數(shù)據(jù)調(diào)用方提供了類似無差別接入的訪問接口,因此可以極大的簡化數(shù)據(jù)訪問邏輯。另外,本發(fā)明實施例中數(shù)據(jù)節(jié)點(diǎn)集群中包括的所有數(shù)據(jù)節(jié)點(diǎn)由路由層設(shè)備根據(jù)一致性哈希算法來選取其中的一個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行業(yè)務(wù)處理,因此單個數(shù)據(jù)節(jié)點(diǎn)之間的業(yè)務(wù)處理量是均衡的,不需要使用某些數(shù)據(jù)節(jié)點(diǎn)作為冗余備份,因此不會浪費(fèi)存儲資源,提高數(shù)據(jù)存儲資源的利用效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種數(shù)據(jù)處理方法的流程方框示意圖;
圖2為本發(fā)明實施例提供的分布式緩存系統(tǒng)的架構(gòu)部署示意圖;
圖3為本發(fā)明實施例提供的路由層設(shè)備的業(yè)務(wù)流程示意圖;
圖4為本發(fā)明實施例提供的路由層設(shè)備執(zhí)行狀態(tài)檢查的應(yīng)用場景示意圖;
圖5-a為本發(fā)明實施例提供的一種路由層設(shè)備的組成結(jié)構(gòu)示意圖;
圖5-b為本發(fā)明實施例提供的另一種路由層設(shè)備的組成結(jié)構(gòu)示意圖;
圖5-c為本發(fā)明實施例提供的一種數(shù)據(jù)節(jié)點(diǎn)選擇模塊的組成結(jié)構(gòu)示意圖;
圖5-d為本發(fā)明實施例提供的另一種路由層設(shè)備的組成結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的數(shù)據(jù)處理方法應(yīng)用于服務(wù)器的組成結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的一種分布式緩存系統(tǒng)的組成結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供了一種數(shù)據(jù)處理方法和路由層設(shè)備以及系統(tǒng),用于提高數(shù)據(jù)存儲資源的利用效率。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進(jìn)行詳細(xì)說明。
本發(fā)明數(shù)據(jù)處理方法的一個實施例,具體可以應(yīng)用于對數(shù)據(jù)的分布式緩存應(yīng)用場景中,不需要同時設(shè)置主備雙倍的數(shù)據(jù)緩存,提高對數(shù)據(jù)存儲資源的利用率,請參閱圖1所示,本發(fā)明一個實施例提供的數(shù)據(jù)處理方法,可以包括如下步驟:
101、路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵(英文名稱:key)。
在本發(fā)明實施例中,分布式緩存系統(tǒng)中包括有客戶端、路由層設(shè)備和數(shù)據(jù)節(jié)點(diǎn)集群。其中,客戶端是和前端用戶對接的,用于實時接收用戶發(fā)送的訪問請求,客戶端和路由層設(shè)備之間建立有通信連接,客戶端接收到前端發(fā)送的數(shù)據(jù)操作請求之后,將該數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給路由層設(shè)備。路由層設(shè)備首先接收到客戶端發(fā)送的數(shù)據(jù)操作請求,路由層設(shè)備解析接收到的數(shù)據(jù)操作請求可以從中提取到在該請求中攜帶的key,該key對應(yīng)于前端需要進(jìn)行操作的待處理數(shù)據(jù),例如前端需要對待處理數(shù)據(jù)進(jìn)行查詢和更新。本發(fā)明實施例中數(shù)據(jù)節(jié)點(diǎn)集群采用鍵值對(key-value)的方式緩存有業(yè)務(wù)數(shù)據(jù),前端需要獲取數(shù)據(jù)時先發(fā)送所請求的key,由路由層設(shè)備通過數(shù)據(jù)操作請求獲取到該key。
需要說明的是,在本發(fā)明的一些實施例中,路由層設(shè)備中包括至少一個路由節(jié)點(diǎn),具體可以由該路由節(jié)點(diǎn)接收客戶端發(fā)送的數(shù)據(jù)操作請求,在實際應(yīng)用中,客戶端從前端用戶接收到數(shù)據(jù)操作請求之后,該客戶端可以采用隨機(jī)的方式從路由層設(shè)備中選取一個路由節(jié)點(diǎn),并將該數(shù)據(jù)操作請求發(fā)送給路由節(jié)點(diǎn),本發(fā)明實施例中路由層設(shè)備中的所有路由節(jié)點(diǎn)地位完全相同,因此不存在單點(diǎn)故障的問題。
102、路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn)。
其中,數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)包括至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn)。
在本發(fā)明實施例中,路由層設(shè)備通過客戶端接收到數(shù)據(jù)操作請求之后,路由層設(shè)備獲取到數(shù)據(jù)操作請求中攜帶的key,路由層設(shè)備和數(shù)據(jù)節(jié)點(diǎn)集群連接,路由層設(shè)備可以選擇數(shù)據(jù)節(jié)點(diǎn)集群中的哪個數(shù)據(jù)節(jié)點(diǎn)來進(jìn)行后續(xù)的業(yè)務(wù)處理,具體的,路由層設(shè)備可以采用一致性哈希算法,通過一致性哈希算法進(jìn)行key-value計算,從數(shù)據(jù)節(jié)點(diǎn)集群中選取出鍵對應(yīng)的數(shù)據(jù)節(jié)點(diǎn),為了便于描述說明,可以將路由層設(shè)備選取出的數(shù)據(jù)節(jié)點(diǎn)稱為“第一數(shù)據(jù)節(jié)點(diǎn)”,則該第一數(shù)據(jù)節(jié)點(diǎn)是由路由層設(shè)備通過一致性哈希算法選擇出的數(shù)據(jù)節(jié)點(diǎn),一致性哈希算法可以實現(xiàn)數(shù)據(jù)緩存的均衡,使得哈希的結(jié)果能夠盡可能分布到所有的緩沖中去,這樣可以使得所有的數(shù)據(jù)節(jié)點(diǎn)都得到利用,而不會存在冗余備份浪費(fèi)數(shù)據(jù)存儲資源的情況。
在本發(fā)明實施例中,數(shù)據(jù)節(jié)點(diǎn)以集群的方式來部署,在數(shù)據(jù)節(jié)點(diǎn)集群中存在有至少兩個數(shù)據(jù)節(jié)點(diǎn),通常的情況是數(shù)據(jù)節(jié)點(diǎn)集群中會存在大量的數(shù)據(jù)節(jié)點(diǎn),路由層設(shè)備為提高數(shù)據(jù)的讀取速率,可以根據(jù)一致性哈希算法確定數(shù)據(jù)的存儲和讀取節(jié)點(diǎn)。以某個數(shù)據(jù)的存儲為例,數(shù)據(jù)節(jié)點(diǎn)總個數(shù)為N,通過一致性哈希算法計算出數(shù)據(jù)對應(yīng)的哈希值,根據(jù)這個哈希值就可以找到對應(yīng)的節(jié)點(diǎn)了,一致哈希算法的好處在于節(jié)點(diǎn)個數(shù)發(fā)生變化(減少或增加)時無需重新計算哈希值,保證數(shù)據(jù)儲存或讀取時可以正確、快速地找到對應(yīng)的節(jié)點(diǎn)。分布式緩存能夠高性能地讀取數(shù)據(jù)、能夠動態(tài)地擴(kuò)展緩存節(jié)點(diǎn)、能夠自動發(fā)現(xiàn)和切換故障節(jié)點(diǎn)、能夠自動均衡數(shù)據(jù)分區(qū),部署和維護(hù)都十分方便。
在本發(fā)明的一些實施例中,本發(fā)明實施例提供的數(shù)據(jù)處理方法,除了執(zhí)行前述步驟之外,該方法還可以執(zhí)行如下步驟:
A1、路由層設(shè)備周期性的發(fā)送心跳檢測包到數(shù)據(jù)節(jié)點(diǎn)集群中的所有數(shù)據(jù)節(jié)點(diǎn);
A2、路由層設(shè)備判斷在預(yù)置的時間閾值內(nèi)是否接收到數(shù)據(jù)節(jié)點(diǎn)集群中的數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包;
A3、路由層設(shè)備將沒有向路由層設(shè)備發(fā)送心跳響應(yīng)包的數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)設(shè)置為不可用服務(wù)。
其中,本發(fā)明實施例中為了保證業(yè)務(wù)處理的可靠性和高性能,路由層設(shè)備還可以實時的維護(hù)數(shù)據(jù)節(jié)點(diǎn)集群,路由層設(shè)備需要對數(shù)據(jù)節(jié)點(diǎn)集群中的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行狀態(tài)檢查,從而實時的發(fā)現(xiàn)數(shù)據(jù)節(jié)點(diǎn)是否存在故障,從而保證業(yè)務(wù)處理的可靠性。具體的,本發(fā)明實施例中路由層設(shè)備通過周期性的發(fā)送心跳檢測包的方式來完成數(shù)據(jù)節(jié)點(diǎn)的狀態(tài)檢查。例如路由層設(shè)備可以采用周期性群發(fā)的方式來發(fā)送心跳檢測包,具體預(yù)置的周期可以結(jié)合應(yīng)用場景來確定,若需要保證較高的業(yè)務(wù)處理可靠性,則心跳檢測包的發(fā)送周期可以設(shè)置的小一些。當(dāng)路由層設(shè)備向數(shù)據(jù)節(jié)點(diǎn)集群中的所有數(shù)據(jù)節(jié)點(diǎn)都發(fā)送心跳檢測包之后,路由層設(shè)備開始接收心跳響應(yīng)包,對于已經(jīng)向路由層設(shè)備發(fā)送心跳響應(yīng)包且能夠被路由層設(shè)備接收到的數(shù)據(jù)節(jié)點(diǎn),路由層設(shè)備將其節(jié)點(diǎn)狀態(tài)設(shè)置為可用服務(wù),路由層設(shè)備還可以配置時間閾值,從而判斷在時間閾值內(nèi)是否接收到數(shù)據(jù)節(jié)點(diǎn)集群中的數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包,若路由層設(shè)備在時間閾值內(nèi)沒有接收到某些數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包,則路由層設(shè)備會標(biāo)記該數(shù)據(jù)節(jié)點(diǎn)為不可用服務(wù),不可用服務(wù)是指數(shù)據(jù)節(jié)點(diǎn)無法和路由層設(shè)備保持通信、無法提供數(shù)據(jù)服務(wù)。路由層設(shè)備通過心跳檢測機(jī)制可以實時的掌握數(shù)據(jù)節(jié)點(diǎn)集群中所有數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)。
進(jìn)一步的,在本發(fā)明執(zhí)行前述步驟A1至A3所述的狀態(tài)檢查應(yīng)用場景下,步驟A3路由層設(shè)備將沒有向路由層設(shè)備發(fā)送心跳響應(yīng)包的數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)設(shè)置為不可用服務(wù)之后,本發(fā)明實施例提供的數(shù)據(jù)處理方法,還可以包括如下步驟:
A4、路由層設(shè)備向節(jié)點(diǎn)狀態(tài)為不可用服務(wù)的第二數(shù)據(jù)節(jié)點(diǎn)繼續(xù)發(fā)送心跳檢測包;
A5、路由層設(shè)備在預(yù)置的時間閾值內(nèi)接收到第二數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包時,恢復(fù)第二數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)為可用狀態(tài)。
其中,路由層設(shè)備為了實時的檢測數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài),對于通過步驟A3已經(jīng)標(biāo)記為不可用服務(wù)的數(shù)據(jù)節(jié)點(diǎn),定義節(jié)點(diǎn)狀態(tài)標(biāo)記為不可用服務(wù)的數(shù)據(jù)節(jié)點(diǎn)為第二數(shù)據(jù)節(jié)點(diǎn),這些不可用服務(wù)的數(shù)據(jù)節(jié)點(diǎn)還可以被管理員修復(fù),為了能夠?qū)崟r檢測到這種被修復(fù)的數(shù)據(jù)節(jié)點(diǎn),路由層設(shè)備向節(jié)點(diǎn)狀態(tài)為不可用服務(wù)的第二數(shù)據(jù)節(jié)點(diǎn)繼續(xù)發(fā)送心跳檢測包,從而路由層設(shè)備在預(yù)置的時間閾值內(nèi)接收到第二數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包時,可以恢復(fù)第二數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)為可用狀態(tài),可用狀態(tài)是指數(shù)據(jù)節(jié)點(diǎn)能夠和路由層設(shè)備保持通信、可以提供數(shù)據(jù)服務(wù)的狀態(tài),從而使得被修復(fù)的數(shù)據(jù)節(jié)點(diǎn)能夠自動的恢復(fù)可用狀態(tài),而不需要中斷分布式數(shù)據(jù)緩存的業(yè)務(wù)處理流程。
在本發(fā)明的一些實施例中,步驟102路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),包括:
B1、路由層設(shè)備讀取數(shù)據(jù)節(jié)點(diǎn)集群中每個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài),節(jié)點(diǎn)狀態(tài)包括:不可用服務(wù),或者可用服務(wù);
B2、路由層設(shè)備從節(jié)點(diǎn)狀態(tài)為可用服務(wù)的所有數(shù)據(jù)節(jié)點(diǎn)中根據(jù)一致性哈希算法選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn)。
具體的,本發(fā)明實施例中為了保證業(yè)務(wù)處理的可靠性和高性能,路由層設(shè)備還可以實時的維護(hù)數(shù)據(jù)節(jié)點(diǎn)集群,在每次選取數(shù)據(jù)節(jié)點(diǎn)用于業(yè)務(wù)處理時,路由層設(shè)備可以先讀取數(shù)據(jù)節(jié)點(diǎn)集群中每個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài),節(jié)點(diǎn)狀態(tài)包括:不可用服務(wù),或者可用服務(wù),例如通過前述步驟A1至A5所示的應(yīng)用場景下,路由層設(shè)備對數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)進(jìn)了標(biāo)記,則可以從節(jié)點(diǎn)狀態(tài)為可用服務(wù)的所有數(shù)據(jù)節(jié)點(diǎn)中根據(jù)一致性哈希算法選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),對于不可用服務(wù)的數(shù)據(jù)節(jié)點(diǎn)則不再選取為提供業(yè)務(wù)處理的數(shù)據(jù)節(jié)點(diǎn),從而提高業(yè)務(wù)處理的可靠性和高性能。
在本發(fā)明的一些實施例中,步驟102路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),包括:
C1、路由層設(shè)備加載初始的至少兩個數(shù)據(jù)節(jié)點(diǎn)構(gòu)成一致性哈希節(jié)點(diǎn)環(huán);
C2、路由層設(shè)備根據(jù)一致性哈希算法計算鍵對應(yīng)一致性哈希節(jié)點(diǎn)環(huán)上的位置,從該位置出發(fā)沿著一致性哈希節(jié)點(diǎn)環(huán)查找,直到遇見的數(shù)據(jù)節(jié)點(diǎn)即為鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn)。
其中,路由層設(shè)備可以通過步驟C1至C2所示完成一致性哈希算法的計算,首先加載初始的至少兩個數(shù)據(jù)節(jié)點(diǎn)構(gòu)成一致性哈希節(jié)點(diǎn)環(huán),數(shù)據(jù)節(jié)點(diǎn)集群中初始配置的至少兩個數(shù)據(jù)節(jié)點(diǎn)都添加到哈希圓環(huán)上,從而構(gòu)成一致性哈希節(jié)點(diǎn)環(huán),當(dāng)路由層設(shè)備接收到數(shù)據(jù)操作請求時,路由層設(shè)備根據(jù)一致性哈希算法計算鍵對應(yīng)一致性哈希節(jié)點(diǎn)環(huán)上的位置,這個位置作為起點(diǎn),從該位置出發(fā)沿著一致性哈希節(jié)點(diǎn)環(huán)查找,例如可以是順時針方向差值一致性哈希節(jié)點(diǎn)環(huán),直到遇見的數(shù)據(jù)節(jié)點(diǎn)即為鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),例如通常從起點(diǎn)位置開始,遇到的第一個數(shù)據(jù)節(jié)點(diǎn)即為選取出的第一數(shù)據(jù)節(jié)點(diǎn)。
進(jìn)一步的,在本發(fā)明實施例中路由層設(shè)備使用一致性哈希節(jié)點(diǎn)環(huán)來查找數(shù)據(jù)節(jié)點(diǎn)時,本發(fā)明實施例提供的數(shù)據(jù)處理方法,還可以包括如下步驟:
D1、當(dāng)數(shù)據(jù)節(jié)點(diǎn)集群中新增加數(shù)據(jù)節(jié)點(diǎn)時,路由層設(shè)備將新的數(shù)據(jù)節(jié)點(diǎn)加入到一致性哈希節(jié)點(diǎn)環(huán)中;
D2、當(dāng)數(shù)據(jù)節(jié)點(diǎn)集群中存在服務(wù)狀態(tài)為不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)時,路由層設(shè)備將服務(wù)狀態(tài)為不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)從一致性哈希節(jié)點(diǎn)環(huán)中剔除。
其中,本發(fā)明實施例中路由層設(shè)備使用一致性哈希節(jié)點(diǎn)環(huán)來查找數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)集群中的容量可以實現(xiàn)動態(tài)的有效伸縮,例如需要擴(kuò)充容量時只需要新的數(shù)據(jù)節(jié)點(diǎn)加入到一致性哈希節(jié)點(diǎn)環(huán)中即可,下次就可以使用一致性哈希節(jié)點(diǎn)環(huán)進(jìn)行數(shù)據(jù)節(jié)點(diǎn)的查找,例如需要縮小容量時可以將不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)從一致性哈希節(jié)點(diǎn)環(huán)中剔除,擴(kuò)充容量和縮小容量都只存在少量的數(shù)據(jù)遷移,保證了數(shù)據(jù)存儲資源的均衡性。
103、路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),由第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
在本發(fā)明實施例中,路由層設(shè)備通過一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選擇出第一數(shù)據(jù)節(jié)點(diǎn)之后,路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)可以根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理,例如在數(shù)據(jù)操作請求中通常指示有如何進(jìn)行業(yè)務(wù)處理,例如可以是查詢數(shù)據(jù)、更新數(shù)據(jù)等,此處不做限定,具體取決于應(yīng)用場景。
通過以上實施例對本發(fā)明實施例的描述可知,首先路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵,然后路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)包括至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn),最后路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),由第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。由于路由層設(shè)備能夠屏蔽數(shù)據(jù)節(jié)點(diǎn)的選擇和調(diào)度,為數(shù)據(jù)調(diào)用方提供了類似無差別接入的訪問接口,因此可以極大的簡化數(shù)據(jù)訪問邏輯。另外,本發(fā)明實施例中數(shù)據(jù)節(jié)點(diǎn)集群中包括的所有數(shù)據(jù)節(jié)點(diǎn)由路由層設(shè)備根據(jù)一致性哈希算法來選取其中的一個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行業(yè)務(wù)處理,因此單個數(shù)據(jù)節(jié)點(diǎn)之間的業(yè)務(wù)處理量是均衡的,不需要使用某些數(shù)據(jù)節(jié)點(diǎn)作為冗余備份,因此不會浪費(fèi)存儲資源,提高數(shù)據(jù)存儲資源的利用效率。
為便于更好的理解和實施本發(fā)明實施例的上述方案,下面舉例相應(yīng)的應(yīng)用場景來進(jìn)行具體說明。本實施例可以基于一致性哈希和心跳狀態(tài)檢測實現(xiàn)數(shù)據(jù)節(jié)點(diǎn)的動態(tài)伸縮容量,基本能保證數(shù)據(jù)節(jié)點(diǎn)集群中的節(jié)點(diǎn)負(fù)載均衡。本發(fā)明實施例中,前端的路由層設(shè)備從初始配置節(jié)點(diǎn)集建立初始連接并置連接可用,業(yè)務(wù)數(shù)據(jù)流根據(jù)key和一致性哈希算法獲取對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)連接發(fā)送請求,路由層設(shè)備還可以定時發(fā)出心跳檢測包,在預(yù)置的時間閾值內(nèi)若后端的數(shù)據(jù)節(jié)點(diǎn)沒有響應(yīng),則置該節(jié)點(diǎn)狀態(tài)為不可用服務(wù)并將其從一致性哈希節(jié)點(diǎn)環(huán)中剔除,根據(jù)數(shù)據(jù)操作請求中的key獲得該key對應(yīng)的數(shù)據(jù)所在的數(shù)據(jù)節(jié)點(diǎn)地址,應(yīng)用到下線的后端數(shù)據(jù)節(jié)點(diǎn)可以達(dá)到縮容效果,或者后端的數(shù)據(jù)節(jié)點(diǎn)異常時路由層設(shè)備仍為前端提供服務(wù)。擴(kuò)容時,只需重載節(jié)點(diǎn)配置插入一致性哈希環(huán)。具體實現(xiàn)時后端節(jié)點(diǎn)狀態(tài)變化會觸發(fā)狀態(tài)回調(diào)機(jī)制,后端數(shù)據(jù)節(jié)點(diǎn)狀態(tài)發(fā)生變化,會將該信息反饋到前端的路由層設(shè)備觸發(fā)節(jié)點(diǎn)管理,可綜合業(yè)務(wù)需求和當(dāng)前場景定制拓展邏輯,本發(fā)明實施例可以通用到數(shù)據(jù)緩存服務(wù)或其他有/無狀態(tài)服務(wù)中,在后臺用戶核心數(shù)據(jù)緩存系統(tǒng)中,本發(fā)明實施例在保障可靠性基礎(chǔ)上,其為上線后的維護(hù)使用帶來了很好的便利性。
首先對本發(fā)明實施例中路由層設(shè)備執(zhí)行的一致性哈希算法進(jìn)行舉例說明,一致性哈希算法將每個對象映射到圓環(huán)邊上的一個點(diǎn),系統(tǒng)再將可用的節(jié)點(diǎn)機(jī)器映射到圓環(huán)的不同位置。查找某個對象對應(yīng)的機(jī)器時,需要用一致哈希算法計算得到對象對應(yīng)圓環(huán)邊上位置,沿著圓環(huán)邊上查找直到遇到某個節(jié)點(diǎn)機(jī)器,這臺機(jī)器即為對象應(yīng)該保存的位置。當(dāng)刪除一臺節(jié)點(diǎn)機(jī)器時,這臺機(jī)器上保存的所有對象都要移動到下一臺機(jī)器。添加一臺機(jī)器到圓環(huán)邊上某個點(diǎn)時,這個點(diǎn)的下一臺機(jī)器需要將這個節(jié)點(diǎn)前對應(yīng)的對象移動到新機(jī)器上。更改對象在節(jié)點(diǎn)機(jī)器上的分布可以通過調(diào)整節(jié)點(diǎn)機(jī)器的位置來實現(xiàn)。一致性哈希算法具有冗余少、負(fù)載均衡、過渡平滑、存儲均衡、關(guān)鍵詞單調(diào)等優(yōu)勢特性。
如圖2所示,為本發(fā)明實施例提供的分布式緩存系統(tǒng)的架構(gòu)部署示意圖。分布式緩存系統(tǒng)由3部分組成:客戶端,路由層設(shè)備,數(shù)據(jù)節(jié)點(diǎn)集群,在圖2中,以路由層設(shè)備包括多個路由節(jié)點(diǎn)為例,數(shù)據(jù)節(jié)點(diǎn)集群包括多個數(shù)據(jù)節(jié)點(diǎn)。
路由層設(shè)備加載初始數(shù)據(jù)節(jié)點(diǎn)地址構(gòu)成一致性哈希節(jié)點(diǎn)環(huán),不同數(shù)據(jù)節(jié)點(diǎn)存儲分片數(shù)據(jù),中間路由層節(jié)點(diǎn)完全對等,管理維護(hù)后端數(shù)據(jù)節(jié)點(diǎn)的服務(wù)狀態(tài);客戶端直連對等的路由節(jié)點(diǎn)。
如圖3所示,為本發(fā)明實施例提供的路由層設(shè)備的業(yè)務(wù)流程示意圖,路由層設(shè)備可以包含三部分內(nèi)容,路由選擇、狀態(tài)檢查及伸縮容量,接下來分別進(jìn)行舉例說明。
后端數(shù)據(jù)節(jié)點(diǎn)存儲以key-value方式緩存業(yè)務(wù)數(shù)據(jù),路由節(jié)點(diǎn)接收客戶端的業(yè)務(wù)key操作(例如查詢和更新),根據(jù)一致性哈希算法選取key對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)地址,并將該數(shù)據(jù)操作請求轉(zhuǎn)發(fā)到該數(shù)據(jù)節(jié)點(diǎn),假設(shè)根據(jù)一致性哈希算法計算出數(shù)據(jù)節(jié)點(diǎn)N,由該數(shù)據(jù)節(jié)點(diǎn)N接收路由層設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)操作請求。因為路由層節(jié)點(diǎn)完全對等,所以不存在單點(diǎn)故障問題,其中,Router_addr=ConsistentHash(key)。
如圖4所示,為本發(fā)明實施例提供的路由層設(shè)備執(zhí)行狀態(tài)檢查的應(yīng)用場景示意圖,圖4中以一個路由節(jié)點(diǎn)執(zhí)行狀態(tài)檢查為例,路由節(jié)點(diǎn)周期發(fā)送心跳檢測包到后端當(dāng)前數(shù)據(jù)節(jié)點(diǎn),心跳通道與業(yè)務(wù)請求包一致,遵守先入先出的方式,數(shù)據(jù)節(jié)點(diǎn)區(qū)別業(yè)務(wù)包和心跳檢測包,如果為心跳檢測包則發(fā)送心跳響應(yīng)包給路由節(jié)點(diǎn)。如果路由節(jié)點(diǎn)超過預(yù)設(shè)置的時間閾值仍未收到對應(yīng)數(shù)據(jù)節(jié)點(diǎn)的心跳響應(yīng)包,則將該數(shù)據(jù)節(jié)點(diǎn)狀態(tài)置為不可服務(wù),圖4中以虛線框所示的數(shù)據(jù)節(jié)點(diǎn)D表示不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)。后續(xù)仍保持向該數(shù)據(jù)節(jié)點(diǎn)發(fā)送心跳檢測包,如有收到數(shù)據(jù)響應(yīng)包則重置其服務(wù)狀態(tài)為可用狀態(tài)。
當(dāng)數(shù)據(jù)規(guī)??焯顫M數(shù)據(jù)節(jié)點(diǎn)容量考慮擴(kuò)容時,僅需將新數(shù)據(jù)節(jié)點(diǎn)地址追加到初始數(shù)據(jù)節(jié)點(diǎn)配置,然后路由節(jié)點(diǎn)重載地址配置將其加入到一致性哈希節(jié)點(diǎn)環(huán)中。在新的一致性哈希節(jié)點(diǎn)環(huán)中,業(yè)務(wù)請求將依據(jù)之前一致性哈希算法將請求散列到新/老節(jié)點(diǎn)中,根據(jù)一致性哈希算法的特點(diǎn),數(shù)據(jù)只會有少量遷移,均衡性也即將表現(xiàn)。狀態(tài)檢測中的數(shù)據(jù)節(jié)點(diǎn)故障其實也是縮容的一種表現(xiàn),縮容只需要將機(jī)器下架,狀態(tài)檢測一個周期時間內(nèi)就會感知到其不可服務(wù),路由節(jié)點(diǎn)將其從一致性哈希節(jié)點(diǎn)環(huán)中剔除即完成了縮容過程??s容和擴(kuò)容一樣都會存在少量的數(shù)據(jù)遷移,但均衡性也會很快表現(xiàn)。因為路由節(jié)點(diǎn)僅做路由選擇和節(jié)點(diǎn)狀態(tài)維護(hù),相比直接訪問數(shù)據(jù)節(jié)點(diǎn),其帶來的優(yōu)勢有:性能高、輕量級、減少后端緩存服務(wù)連接數(shù)、易配置。
本發(fā)明實施例通過路由層設(shè)備屏蔽了數(shù)據(jù)節(jié)點(diǎn)的部署細(xì)節(jié)與故障切換,為調(diào)用方提供了一種類似“無差別”接入的訪問接口,極大簡化了數(shù)據(jù)訪問邏輯。路由層節(jié)點(diǎn)是對等的,可根據(jù)業(yè)務(wù)的訪問量來確定實際需要部署多少數(shù)據(jù)節(jié)點(diǎn),本發(fā)明實施例解決了傳統(tǒng)分布式緩存系統(tǒng)帶來的資源浪費(fèi)和伸縮容量不便的缺陷,在保障可靠性和高性能的同時,為該類應(yīng)用場景提供了很好的可維護(hù)便利性。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
為便于更好的實施本發(fā)明實施例的上述方案,下面還提供用于實施上述方案的相關(guān)裝置。
請參閱圖5-a所示,本發(fā)明實施例提供的一種路由層設(shè)備500,可以包括:接收模塊501、數(shù)據(jù)節(jié)點(diǎn)選擇模塊502和調(diào)度模塊503,其中,
接收模塊501,用于接收客戶端發(fā)送的數(shù)據(jù)操作請求,所述數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵key;
數(shù)據(jù)節(jié)點(diǎn)選擇模塊502,用于根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取所述鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),所述數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),所述第一數(shù)據(jù)節(jié)點(diǎn)包括所述至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn);
調(diào)度模塊503,用于將所述數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給所述第一數(shù)據(jù)節(jié)點(diǎn),由所述第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)操作請求對所述待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
在本發(fā)明的一些實施例中,如圖5-b所示,所述路由層設(shè)備500還包括:狀態(tài)檢查模塊504,其中,
所述狀態(tài)檢查模塊504,用于周期性的發(fā)送心跳檢測包到所述數(shù)據(jù)節(jié)點(diǎn)集群中的所有數(shù)據(jù)節(jié)點(diǎn);判斷在預(yù)置的時間閾值內(nèi)是否接收到所述數(shù)據(jù)節(jié)點(diǎn)集群中的數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包;將沒有向所述路由層設(shè)備發(fā)送心跳響應(yīng)包的數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)設(shè)置為不可用服務(wù)。
進(jìn)一步的,在本發(fā)明的一些實施例中,所述狀態(tài)檢查模塊504,還用于將沒有向所述路由層設(shè)備發(fā)送心跳響應(yīng)包的數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)設(shè)置為不可用服務(wù)之后,向節(jié)點(diǎn)狀態(tài)為不可用服務(wù)的第二數(shù)據(jù)節(jié)點(diǎn)繼續(xù)發(fā)送心跳檢測包;在預(yù)置的時間閾值內(nèi)接收到所述第二數(shù)據(jù)節(jié)點(diǎn)發(fā)送的心跳響應(yīng)包時,恢復(fù)所述第二數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài)為可用狀態(tài)。
在本發(fā)明的一些實施例中,所述數(shù)據(jù)節(jié)點(diǎn)選擇模塊502,具體用于讀取所述數(shù)據(jù)節(jié)點(diǎn)集群中每個數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)狀態(tài),所述節(jié)點(diǎn)狀態(tài)包括:不可用服務(wù),或者可用服務(wù);從節(jié)點(diǎn)狀態(tài)為可用服務(wù)的所有數(shù)據(jù)節(jié)點(diǎn)中根據(jù)一致性哈希算法選取所述鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn)。
在本發(fā)明的一些實施例中,如圖5-c所示,所述數(shù)據(jù)節(jié)點(diǎn)選擇模塊502,包括:
哈希圓環(huán)配置模塊5021,用于加載初始的至少兩個數(shù)據(jù)節(jié)點(diǎn)構(gòu)成一致性哈希節(jié)點(diǎn)環(huán);
圓環(huán)查找模塊5022,用于根據(jù)一致性哈希算法計算所述鍵對應(yīng)所述一致性哈希節(jié)點(diǎn)環(huán)上的位置,從該位置出發(fā)沿著所述一致性哈希節(jié)點(diǎn)環(huán)查找,直到遇見的數(shù)據(jù)節(jié)點(diǎn)即為所述鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn)。
在本發(fā)明的一些實施例中,如圖5-d所示,所述路由層設(shè)備500還包括:伸縮容量控制模塊505,用于當(dāng)所述數(shù)據(jù)節(jié)點(diǎn)集群中新增加數(shù)據(jù)節(jié)點(diǎn)時,將新的數(shù)據(jù)節(jié)點(diǎn)加入到所述一致性哈希節(jié)點(diǎn)環(huán)中;當(dāng)所述數(shù)據(jù)節(jié)點(diǎn)集群中存在服務(wù)狀態(tài)為不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)時,將所述服務(wù)狀態(tài)為不可服務(wù)的數(shù)據(jù)節(jié)點(diǎn)從所述一致性哈希節(jié)點(diǎn)環(huán)中剔除。
通過以上實施例對本發(fā)明實施例的描述可知,首先路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵,然后路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)包括至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn),最后路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),由第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。由于路由層設(shè)備能夠屏蔽數(shù)據(jù)節(jié)點(diǎn)的選擇和調(diào)度,為數(shù)據(jù)調(diào)用方提供了類似無差別接入的訪問接口,因此可以極大的簡化數(shù)據(jù)訪問邏輯。另外,本發(fā)明實施例中數(shù)據(jù)節(jié)點(diǎn)集群中包括的所有數(shù)據(jù)節(jié)點(diǎn)由路由層設(shè)備根據(jù)一致性哈希算法來選取其中的一個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行業(yè)務(wù)處理,因此單個數(shù)據(jù)節(jié)點(diǎn)之間的業(yè)務(wù)處理量是均衡的,不需要使用某些數(shù)據(jù)節(jié)點(diǎn)作為冗余備份,因此不會浪費(fèi)存儲資源,提高數(shù)據(jù)存儲資源的利用效率。
圖6是本發(fā)明實施例提供的一種服務(wù)器結(jié)構(gòu)示意圖,該服務(wù)器1100可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)1122(例如,一個或一個以上處理器)和存儲器1132,一個或一個以上存儲應(yīng)用程序1142或數(shù)據(jù)1144的存儲介質(zhì)1130(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1132和存儲介質(zhì)1130可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1130的程序可以包括一個或一個以上模塊(圖示沒標(biāo)出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1122可以設(shè)置為與存儲介質(zhì)1130通信,在服務(wù)器1100上執(zhí)行存儲介質(zhì)1130中的一系列指令操作。
服務(wù)器1100還可以包括一個或一個以上電源1126,一個或一個以上有線或無線網(wǎng)絡(luò)接口1150,一個或一個以上輸入輸出接口1158,和/或,一個或一個以上操作系統(tǒng)1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
上述實施例中由服務(wù)器所執(zhí)行的數(shù)據(jù)處理方法的步驟可以基于該圖6所示的服務(wù)器結(jié)構(gòu)。
如圖7所示,本發(fā)明實施例提供一種分布式緩存系統(tǒng)700,包括:客戶端701、如圖5-a至圖5-d中任一項所述的路由層設(shè)備702和數(shù)據(jù)節(jié)點(diǎn)集群703,其中,
所述客戶端701,用于向所述路由層設(shè)備702發(fā)送數(shù)據(jù)操作請求,所述數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵key;
所述數(shù)據(jù)節(jié)點(diǎn)集群703,包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),所述第一數(shù)據(jù)節(jié)點(diǎn)為所述路由層設(shè)備選取出的數(shù)據(jù)節(jié)點(diǎn);
所述第一數(shù)據(jù)節(jié)點(diǎn),用于根據(jù)所述數(shù)據(jù)操作請求對所述待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。
通過以上實施例對本發(fā)明實施例的描述可知,首先路由層設(shè)備接收客戶端發(fā)送的數(shù)據(jù)操作請求,數(shù)據(jù)操作請求包括:待處理數(shù)據(jù)對應(yīng)的鍵,然后路由層設(shè)備根據(jù)一致性哈希算法從數(shù)據(jù)節(jié)點(diǎn)集群中選取鍵對應(yīng)的第一數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)集群中包括:至少兩個數(shù)據(jù)節(jié)點(diǎn),第一數(shù)據(jù)節(jié)點(diǎn)包括至少兩個數(shù)據(jù)節(jié)點(diǎn)中的數(shù)據(jù)節(jié)點(diǎn),最后路由層設(shè)備將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給第一數(shù)據(jù)節(jié)點(diǎn),由第一數(shù)據(jù)節(jié)點(diǎn)根據(jù)數(shù)據(jù)操作請求對待處理數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。由于路由層設(shè)備能夠屏蔽數(shù)據(jù)節(jié)點(diǎn)的選擇和調(diào)度,為數(shù)據(jù)調(diào)用方提供了類似無差別接入的訪問接口,因此可以極大的簡化數(shù)據(jù)訪問邏輯。另外,本發(fā)明實施例中數(shù)據(jù)節(jié)點(diǎn)集群中包括的所有數(shù)據(jù)節(jié)點(diǎn)由路由層設(shè)備根據(jù)一致性哈希算法來選取其中的一個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行業(yè)務(wù)處理,因此單個數(shù)據(jù)節(jié)點(diǎn)之間的業(yè)務(wù)處理量是均衡的,不需要使用某些數(shù)據(jù)節(jié)點(diǎn)作為冗余備份,因此不會浪費(fèi)存儲資源,提高數(shù)據(jù)存儲資源的利用效率。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返取5?,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機(jī)的軟盤,U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對上述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。