本發(fā)明涉及緩存代理系統(tǒng)領(lǐng)域,尤其涉及一種通用數(shù)據(jù)緩存代理方法及系統(tǒng),
背景技術(shù):
1、所謂緩存代理指的是在使用方與數(shù)據(jù)緩存系統(tǒng)之間增加一層透明代理(proxy),當(dāng)調(diào)用方訪問緩存系統(tǒng)的時(shí)候?qū)嶋H上請(qǐng)求是先發(fā)送到緩存代理,代理經(jīng)過一系列處理之后請(qǐng)求才會(huì)轉(zhuǎn)發(fā)到實(shí)際背后的緩存系統(tǒng)。
2、緩存代理一般都是為了特定目的而存在的,比如為了解決緩存系統(tǒng)橫向擴(kuò)展、屏蔽相同協(xié)議下的不同緩存系統(tǒng)實(shí)現(xiàn)、緩存系統(tǒng)故障轉(zhuǎn)移等問題;目前業(yè)內(nèi)的緩存代理基本都是為了解決低級(jí)別,特定的問題而實(shí)現(xiàn),因此,大多都存在如下缺點(diǎn):1.協(xié)議不具有通用性,只適配支持某一特定協(xié)議的緩存實(shí)現(xiàn);2.缺乏更高層面審計(jì)、鑒權(quán)能力;3.缺乏全面的統(tǒng)計(jì)、監(jiān)控能力;4.缺乏后端緩存實(shí)時(shí)動(dòng)態(tài)伸縮、故障切換能力;上述這些缺點(diǎn)給大數(shù)據(jù)量高并發(fā)場(chǎng)景使用緩存系統(tǒng)帶來穩(wěn)定性、可運(yùn)維、可用性挑戰(zhàn),往往需要花費(fèi)更多的資源從其他方面入手,通過折中方案具體解決部分問題,但無(wú)法從根本解決問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明從更高層視角出發(fā),提出一種通用數(shù)據(jù)緩存代理方法系統(tǒng),旨在從整體設(shè)計(jì)角度入手,克服傳統(tǒng)代理視角局限問題,提供一種通用的、功能強(qiáng)大的代理方案,具體采用以下技術(shù)方案來實(shí)現(xiàn)。
2、第一方面,本發(fā)明提供了一種通用數(shù)據(jù)緩存代理方法,包括以下步驟:
3、獲取客戶端發(fā)送的請(qǐng)求信息,并對(duì)所述請(qǐng)求信息進(jìn)行解析得到所述請(qǐng)求信息對(duì)應(yīng)的緩存訪問命令;
4、根據(jù)所述緩存訪問命令選擇對(duì)應(yīng)的命令處理器進(jìn)行處理,判斷所述請(qǐng)求信息的命名空間存在于已注冊(cè)命名空間庫(kù),且所述請(qǐng)求信息的發(fā)起請(qǐng)求服務(wù)存在于命名空間客戶端服務(wù)集合,所述命令處理器解析所述請(qǐng)求信息的緩存訪問命令內(nèi)容;
5、根據(jù)所述緩存訪問命令內(nèi)容構(gòu)造內(nèi)部抽象緩存請(qǐng)求,并根據(jù)所述內(nèi)部抽象緩存請(qǐng)求埋點(diǎn)采集緩存請(qǐng)求信息以進(jìn)行熱點(diǎn)訪問分析;
6、使用數(shù)據(jù)源實(shí)體根據(jù)所述請(qǐng)求信息的命名空間經(jīng)過hash算法確定所述數(shù)據(jù)源實(shí)體的命名空間路由信息以選擇對(duì)應(yīng)的后端數(shù)據(jù)源實(shí)體;
7、所述后端數(shù)據(jù)源實(shí)體使用所述內(nèi)部緩存請(qǐng)求訪問實(shí)際后端緩存系統(tǒng)以得到返回結(jié)果,根據(jù)所述返回結(jié)果埋點(diǎn)收集所述請(qǐng)求信息的命名空間、發(fā)起請(qǐng)求服務(wù)、緩存訪問命令和請(qǐng)求處理耗時(shí)信息并進(jìn)行請(qǐng)求分析得到響應(yīng)信息以完成通用數(shù)據(jù)緩存代理。
8、作為上述技術(shù)方案的優(yōu)選,使用數(shù)據(jù)源實(shí)體根據(jù)所述請(qǐng)求信息的命名空間經(jīng)過hash算法確定所述數(shù)據(jù)源實(shí)體的命名空間路由信息以選擇對(duì)應(yīng)的后端數(shù)據(jù)源實(shí)體,包括:
9、s31:監(jiān)聽命名空間配置、后端數(shù)據(jù)源訪問配置是否發(fā)生變化,其中,所述命名空間配置包括定義注冊(cè)命名空間、可用訪問訪問命名空間客戶端服務(wù)集合和命名空間到后端緩存系統(tǒng)路由關(guān)系,所述后端數(shù)據(jù)源訪問配置包括每個(gè)后端數(shù)據(jù)源的具體訪問配置;
10、s32:若所述后端數(shù)據(jù)源訪問配置未發(fā)生變化,則執(zhí)行s33;若所述后端數(shù)據(jù)源訪問配置發(fā)生變化,則執(zhí)行s34;
11、s33:使用當(dāng)前數(shù)據(jù)源實(shí)體的后端緩存系統(tǒng)實(shí)例作為待構(gòu)造數(shù)據(jù)源實(shí)體的后端緩存系統(tǒng)實(shí)例;
12、s34:根據(jù)新的后端數(shù)據(jù)源訪問配置構(gòu)造并初始化后端緩存系統(tǒng)實(shí)例以作為所述待構(gòu)造數(shù)據(jù)源實(shí)體的后端緩存系統(tǒng)實(shí)例。
13、作為上述技術(shù)方案的優(yōu)選,使用數(shù)據(jù)源實(shí)體根據(jù)所述請(qǐng)求信息的命名空間經(jīng)過hash算法確定所述數(shù)據(jù)源實(shí)體的命名空間路由信息以選擇對(duì)應(yīng)的后端數(shù)據(jù)源實(shí)體,還包括:
14、s35:判斷所述命名空間配置是否發(fā)生變化,若是,則執(zhí)行s37;否則執(zhí)行s36:
15、s36:使用當(dāng)前數(shù)據(jù)源實(shí)體的命名空間路由信息作為所述待構(gòu)造數(shù)據(jù)源實(shí)體的命名空間路由信息,執(zhí)行s38;
16、s37:根據(jù)新的命名空間配置構(gòu)造命名空間路由信息并作為所述待構(gòu)造數(shù)據(jù)源實(shí)體的命名空間路由信息;
17、s38:根據(jù)所述待構(gòu)造數(shù)據(jù)源實(shí)體的后端緩存系統(tǒng)實(shí)例和所述待構(gòu)造數(shù)據(jù)源實(shí)體的命名空間路由信息構(gòu)造新的數(shù)據(jù)源實(shí)體,并替換當(dāng)前在使用的數(shù)據(jù)源實(shí)體。
18、作為上述技術(shù)方案的優(yōu)選,每個(gè)后端數(shù)據(jù)源的具體訪問配置包括訪問url、用戶名、密碼和協(xié)議版本。
19、作為上述技術(shù)方案的優(yōu)選,所述命名空間配用于對(duì)客戶端的緩存資源抽象描述,通過命名空間對(duì)所述緩存資源進(jìn)行邏輯概念的邊界定義,以解耦客戶端和后端緩存系統(tǒng)。
20、作為上述技術(shù)方案的優(yōu)選,采用通用通信協(xié)議數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)所述客戶端和后端緩存系統(tǒng)的解耦,其中,通用通信協(xié)議用于客戶端與代理系統(tǒng)的通信。
21、作為上述技術(shù)方案的優(yōu)選,所述通用通信協(xié)議數(shù)據(jù)結(jié)構(gòu)用于緩存請(qǐng)求的認(rèn)證、授權(quán)、訪問許可、后端緩存系統(tǒng)故障轉(zhuǎn)移、動(dòng)態(tài)橫向擴(kuò)展、緩存流量復(fù)制或流量監(jiān)控中的至少一種。
22、作為上述技術(shù)方案的優(yōu)選,獲取客戶端發(fā)送的請(qǐng)求信息,并對(duì)所述請(qǐng)求信息進(jìn)行解析得到所述請(qǐng)求信息對(duì)應(yīng)的緩存訪問命令,包括:
23、客戶端構(gòu)造請(qǐng)求信息并序列化所述請(qǐng)求信息;
24、將序列化后的請(qǐng)求信息進(jìn)行發(fā)送。
25、作為上述技術(shù)方案的優(yōu)選,所述請(qǐng)求信息包括命名空間、發(fā)起請(qǐng)求服務(wù)、緩存訪問命令和緩存訪問命令內(nèi)容,所述響應(yīng)信息包括響應(yīng)碼、響應(yīng)消息和響應(yīng)結(jié)果。
26、第二方面,本發(fā)明還提供了一種通用數(shù)據(jù)緩存代理系統(tǒng),包括:
27、請(qǐng)求獲取單元,用于獲取客戶端發(fā)送的請(qǐng)求信息,并對(duì)所述請(qǐng)求信息進(jìn)行解析得到所述請(qǐng)求信息對(duì)應(yīng)的緩存訪問命令;
28、信息判斷單元,用于根據(jù)所述緩存訪問命令選擇對(duì)應(yīng)的命令處理器進(jìn)行處理,判斷所述請(qǐng)求信息的命名空間存在于已注冊(cè)命名空間庫(kù),且所述請(qǐng)求信息的發(fā)起請(qǐng)求服務(wù)存在于命名空間客戶端服務(wù)集合,所述命令處理器解析所述請(qǐng)求信息的緩存訪問命令內(nèi)容;
29、請(qǐng)求構(gòu)造單元,用于根據(jù)所述緩存訪問命令內(nèi)容構(gòu)造內(nèi)部抽象緩存請(qǐng)求,并根據(jù)所述內(nèi)部抽象緩存請(qǐng)求埋點(diǎn)采集緩存請(qǐng)求信息以進(jìn)行熱點(diǎn)訪問分析;
30、實(shí)體選擇單元,用于使用數(shù)據(jù)源實(shí)體根據(jù)所述請(qǐng)求信息的命名空間經(jīng)過hash算法確定所述數(shù)據(jù)源實(shí)體的命名空間路由信息以選擇對(duì)應(yīng)的后端數(shù)據(jù)源實(shí)體;
31、請(qǐng)求分析單元,用于所述后端數(shù)據(jù)源實(shí)體使用所述內(nèi)部緩存請(qǐng)求訪問實(shí)際后端緩存系統(tǒng)以得到返回結(jié)果,根據(jù)所述返回結(jié)果埋點(diǎn)收集所述請(qǐng)求信息的命名空間、發(fā)起請(qǐng)求服務(wù)、緩存訪問命令和請(qǐng)求處理耗時(shí)信息并進(jìn)行請(qǐng)求分析得到響應(yīng)信息以完成通用數(shù)據(jù)緩存代理。
32、本發(fā)明提供了一種通用數(shù)據(jù)緩存代理方法及系統(tǒng),通過獲取客戶端發(fā)送的請(qǐng)求信息,并對(duì)請(qǐng)求信息進(jìn)行解析得到請(qǐng)求信息對(duì)應(yīng)的緩存訪問命令,根據(jù)緩存訪問命令選擇對(duì)應(yīng)的命令處理器進(jìn)行處理,判斷請(qǐng)求信息的命名空間存在于已注冊(cè)命名空間庫(kù),且請(qǐng)求信息的發(fā)起請(qǐng)求服務(wù)存在于命名空間客戶端服務(wù)集合,命令處理器解析請(qǐng)求信息的緩存訪問命令內(nèi)容,根據(jù)緩存訪問命令內(nèi)容構(gòu)造內(nèi)部抽象緩存請(qǐng)求,并根據(jù)內(nèi)部抽象緩存請(qǐng)求埋點(diǎn)采集緩存請(qǐng)求信息以進(jìn)行熱點(diǎn)訪問分析,使用數(shù)據(jù)源實(shí)體根據(jù)請(qǐng)求信息的命名空間經(jīng)過hash算法確定數(shù)據(jù)源實(shí)體的命名空間路由信息以選擇對(duì)應(yīng)的后端數(shù)據(jù)源實(shí)體,后端數(shù)據(jù)源實(shí)體使用內(nèi)部緩存請(qǐng)求訪問實(shí)際后端緩存系統(tǒng)以得到返回結(jié)果,根據(jù)返回結(jié)果埋點(diǎn)收集請(qǐng)求信息的命名空間、發(fā)起請(qǐng)求服務(wù)、緩存訪問命令和請(qǐng)求處理耗時(shí)信息并進(jìn)行請(qǐng)求分析得到響應(yīng)信息以完成通用數(shù)據(jù)緩存代理,解決了傳統(tǒng)代理視角局限問題,擴(kuò)大了通用數(shù)據(jù)緩存代理范圍,也提升了數(shù)據(jù)緩存代理的可靠性。