一種分布式緩存方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及緩存技術(shù)領(lǐng)域,尤其設(shè)及的是一種分布式緩存方法及系統(tǒng)。
【背景技術(shù)】
[0002] 緩存的概念來源于操作系統(tǒng),CPU需要通過指令實(shí)現(xiàn)內(nèi)存與寄存器之間的交互,為 加快處理速度,會(huì)將需要執(zhí)行指令需要的一些數(shù)據(jù)先在寄存器中緩存起來,而不是每次都 去內(nèi)存讀寫。而對(duì)于企業(yè)應(yīng)用來說,通常需要在內(nèi)存與硬盤之間進(jìn)行數(shù)據(jù)交互,對(duì)于一些頻 繁使用的用戶信息數(shù)據(jù),通常會(huì)將其加載到內(nèi)存,作為一個(gè)緩存,或者弄一個(gè)單獨(dú)的服務(wù)器 作為緩存節(jié)點(diǎn),從而可W提升效率和減少對(duì)底層資源的耗時(shí)操作。但是對(duì)于大型互聯(lián)網(wǎng)應(yīng) 用來說,高峰訪問量上百萬的并發(fā)讀寫數(shù)據(jù)請(qǐng)求,往往會(huì)超出單臺(tái)服務(wù)器的承受能力,此時(shí) 將會(huì)需要一個(gè)分布式的緩存服務(wù)器集群來支撐,由此,開發(fā)人員將面臨負(fù)載均衡和擴(kuò)容等 難題。
[0003] 對(duì)于分布式的負(fù)載均衡,有些為了簡(jiǎn)單,直接采用緩存數(shù)據(jù)的Key(關(guān)鍵字)值對(duì)機(jī) 器數(shù)量取模運(yùn)算來保證數(shù)據(jù)負(fù)載均衡,但為了保證擴(kuò)容后舊數(shù)據(jù)的盡量少地發(fā)生數(shù)據(jù)遷移 (也就是指數(shù)據(jù)從一臺(tái)緩存服務(wù)器遷移到另一臺(tái)緩存服務(wù)器),往往需要采用成倍擴(kuò)容的方 式來解決(成倍擴(kuò)容是指服務(wù)器數(shù)量W2的次幕來擴(kuò)容),運(yùn)樣很容易造成機(jī)器資源浪費(fèi);或 者采用一致性哈希算法來實(shí)現(xiàn),但其在解決集群數(shù)據(jù)分布不均的問題上過于復(fù)雜。
[0004] 因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明要解決的技術(shù)問題在于,提供一種分布式緩存方法及系統(tǒng),旨在解決現(xiàn)有 技術(shù)中集群數(shù)據(jù)分布不均,擴(kuò)容不方便的問題。
[0006] 本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下: 一種分布式緩存方法,其中,包括: A、 根據(jù)關(guān)鍵字值的取值范圍對(duì)緩存數(shù)據(jù)進(jìn)行分組,獲得若干個(gè)緩存數(shù)據(jù)的分組,每個(gè) 分組對(duì)應(yīng)關(guān)聯(lián)至少一緩存服務(wù)器; B、 根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值所屬取值范圍查找匹配的分組,將所述關(guān)鍵字值對(duì)該分 組關(guān)聯(lián)的所有緩存服務(wù)器數(shù)量進(jìn)行取模運(yùn)算,找到匹配的緩存服務(wù)器并對(duì)應(yīng)存儲(chǔ)所述待緩 存數(shù)據(jù)。
[0007] 所述的分布式緩存方法,其中,所述步驟A具體包括: A1、基于緩存數(shù)據(jù)的關(guān)鍵字值的取值范圍將所述緩存數(shù)據(jù)劃分為多個(gè)分組,每個(gè)分組 對(duì)應(yīng)一個(gè)取值范圍,且每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一臺(tái)緩存服務(wù)器,根據(jù)不同分組對(duì)應(yīng)的取值 范圍及緩存服務(wù)器得到相應(yīng)的配置表。
[000引所述的分布式緩存方法,其中,所述步驟B具體包括: B11、外觀服務(wù)器接收負(fù)載均衡器分配的待緩存數(shù)據(jù)的讀寫請(qǐng)求; B12、根據(jù)所述讀寫請(qǐng)求的關(guān)鍵字值及所述配置表中的分組信息找到相應(yīng)匹配的分組; B13、根據(jù)所述讀寫請(qǐng)求的關(guān)鍵字值對(duì)該分組當(dāng)前所具有的緩存服務(wù)器數(shù)量進(jìn)行取模, 找到對(duì)應(yīng)的緩存服務(wù)器并完成待緩存數(shù)據(jù)的讀寫請(qǐng)求。
[0009] 所述的分布式緩存方法,其中,在所述步驟B之后,還包括: CU當(dāng)緩存服務(wù)器的容量達(dá)到限制時(shí),添加新擴(kuò)容的緩存服務(wù)器,將新擴(kuò)容的緩存服務(wù) 器分配到新的分組中,并對(duì)應(yīng)修改所述配置表的分組信息; 或C2、當(dāng)緩存服務(wù)器的容量達(dá)到限制時(shí),將新擴(kuò)容的緩存服務(wù)器分配到原有分組中,并 對(duì)應(yīng)修改所述配置表的分組信息。
[0010] 所述的分布式緩存方法,其中,所述步驟B具體包括: B21、根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值所屬的取值范圍,找到對(duì)應(yīng)匹配的分組; B22、將所述待緩存數(shù)據(jù)的關(guān)鍵字值對(duì)該分組關(guān)聯(lián)的所有緩存服務(wù)器數(shù)量進(jìn)行取模運(yùn) 算,得到對(duì)應(yīng)的取模運(yùn)算結(jié)果; B23、根據(jù)預(yù)先設(shè)置的不同取模運(yùn)算結(jié)果與各個(gè)緩存服務(wù)器的關(guān)聯(lián)關(guān)系,找到與所述取 模運(yùn)算結(jié)果匹配的緩存服務(wù)器并對(duì)應(yīng)存儲(chǔ)所述待緩存數(shù)據(jù)。
[0011] -種分布式緩存系統(tǒng),其中,包括: 分布設(shè)置模塊,用于根據(jù)關(guān)鍵字值的取值范圍對(duì)緩存數(shù)據(jù)進(jìn)行分組,獲得若干個(gè)緩存 數(shù)據(jù)的分組,每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一緩存服務(wù)器; 分布緩存模塊,用于根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值所屬取值范圍查找匹配的分組,將所 述關(guān)鍵字值對(duì)該分組關(guān)聯(lián)的所有緩存服務(wù)器數(shù)量進(jìn)行取模運(yùn)算,找到匹配的緩存服務(wù)器并 對(duì)應(yīng)存儲(chǔ)所述待緩存數(shù)據(jù)。
[0012] 所述的分布式緩存系統(tǒng),其中,所述分布設(shè)置模塊包括: 分布關(guān)聯(lián)單元,用于基于緩存數(shù)據(jù)的關(guān)鍵字值的取值范圍將所述緩存數(shù)據(jù)劃分為多個(gè) 分組,每個(gè)分組對(duì)應(yīng)一個(gè)取值范圍,且每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一臺(tái)緩存服務(wù)器,根據(jù)不同分 組對(duì)應(yīng)的取值范圍及緩存服務(wù)器得到相應(yīng)的配置表。
[0013] 所述的分布式緩存系統(tǒng),其中,所述分布緩存模塊包括: 第一分配單元,用于通過外觀服務(wù)器接收負(fù)載均衡器分配的待緩存數(shù)據(jù)的讀寫請(qǐng)求; 第一分組單元,用于根據(jù)所述讀寫請(qǐng)求的關(guān)鍵字值及所述配置表中的分組信息找到相 應(yīng)匹配的分組; 第一取模單元,用于根據(jù)所述讀寫請(qǐng)求的關(guān)鍵字值對(duì)該分組當(dāng)前所具有的緩存服務(wù)器 數(shù)量進(jìn)行取模,找到對(duì)應(yīng)的緩存服務(wù)器并完成待緩存數(shù)據(jù)的讀寫請(qǐng)求。
[0014] 所述的分布式緩存系統(tǒng),其中,還包括: 分組增加模塊,用于當(dāng)緩存服務(wù)器的容量達(dá)到限制時(shí),添加新擴(kuò)容的緩存服務(wù)器,將新 擴(kuò)容的緩存服務(wù)器分配到新的分組中,并對(duì)應(yīng)修改所述配置表的分組信息; 或緩存增加模塊,用于當(dāng)緩存服務(wù)器的容量達(dá)到限制時(shí),將新擴(kuò)容的緩存服務(wù)器分配 到原有分組中,并對(duì)應(yīng)修改所述配置表的分組信息。
[0015] 所述的分布式緩存系統(tǒng),其中,所述分布緩存模塊包括: 第二分組單元,用于根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值所屬的取值范圍,找到對(duì)應(yīng)匹配的分 組; 第二取模單元,用于將所述待緩存數(shù)據(jù)的關(guān)鍵字值對(duì)該分組關(guān)聯(lián)的所有緩存服務(wù)器數(shù) 量進(jìn)行取模運(yùn)算,得到對(duì)應(yīng)的取模運(yùn)算結(jié)果; 緩存服務(wù)器匹配單元,用于根據(jù)預(yù)先設(shè)置的不同取模運(yùn)算結(jié)果與各個(gè)緩存服務(wù)器的關(guān) 聯(lián)關(guān)系,找到與所述取模運(yùn)算結(jié)果匹配的緩存服務(wù)器并對(duì)應(yīng)存儲(chǔ)所述待緩存數(shù)據(jù)。
[0016] 本發(fā)明所提供的一種分布式緩存方法及系統(tǒng),有效地解決了現(xiàn)有技術(shù)中集群數(shù)據(jù) 分布不均,擴(kuò)容不方便的問題,通過根據(jù)關(guān)鍵字值的取值范圍對(duì)緩存數(shù)據(jù)進(jìn)行分組,獲得若 干個(gè)緩存數(shù)據(jù)的分組,每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一緩存服務(wù)器;根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值 所屬取值范圍查找匹配的分組,將所述關(guān)鍵字值對(duì)該分組關(guān)聯(lián)的所有緩存服務(wù)器數(shù)量進(jìn)行 取模運(yùn)算,找到匹配的緩存服務(wù)器并對(duì)應(yīng)存儲(chǔ)所述待緩存數(shù)據(jù);能夠任意水平擴(kuò)容,擴(kuò)容方 便,集群數(shù)據(jù)能均衡分布,帶來了大大的方便。
【附圖說明】
[0017] 圖1為本發(fā)明提供的分布式緩存方法較佳實(shí)施例的流程圖。
[001引圖2為圖1中步驟S200第一實(shí)施例的流程圖。
[0019]圖3為圖1中步驟S200第二實(shí)施例的流程圖。
[0020]圖4為本發(fā)明提供的分布式緩存方法中系統(tǒng)架構(gòu)示意圖。
[0021 ]圖5為本發(fā)明提供的分布式緩存系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)框圖。
[0022] 圖6為圖5中分布緩存模塊第一實(shí)施例的結(jié)構(gòu)框圖。
[0023] 圖7為圖5中分布緩存模塊第二實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0024] 本發(fā)明提供一種分布式緩存方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更 加清楚、明確,W下參照附圖并舉實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述 的具體實(shí)施例僅僅用W解釋本發(fā)明,并不用于限定本發(fā)明。
[0025] 請(qǐng)參閱圖1,圖1為本發(fā)明提供的分布式緩存方法較佳實(shí)施例的流程圖,如圖所示, 所述方法包括W下步驟: 步驟S100、根據(jù)關(guān)鍵字值的取值范圍對(duì)緩存數(shù)據(jù)進(jìn)行分組,獲得若干個(gè)緩存數(shù)據(jù)的分 組,每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一緩存服務(wù)器; 步驟S200、根據(jù)待緩存數(shù)據(jù)的關(guān)鍵字值所屬取值范圍查找匹配的分組,將所述關(guān)鍵字 值對(duì)該分組關(guān)聯(lián)的所有緩存服務(wù)器數(shù)量進(jìn)行取模運(yùn)算,找到匹配的緩存服務(wù)器并對(duì)應(yīng)存儲(chǔ) 所述待緩存數(shù)據(jù)。
[0026] 下面結(jié)合具體的實(shí)施例對(duì)上述步驟進(jìn)行詳細(xì)的描述。
[0027] 在步驟SlOO中,根據(jù)關(guān)鍵字值的取值范圍對(duì)緩存數(shù)據(jù)進(jìn)行分組,獲得若干個(gè)緩存 數(shù)據(jù)的分組,每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一緩存服務(wù)器。具體來說,根據(jù)數(shù)據(jù)的key(關(guān)鍵字)值 來劃分區(qū)間,即進(jìn)行分組,每個(gè)分組對(duì)應(yīng)一臺(tái)或多臺(tái)的緩存服務(wù)器。
[0028] 在實(shí)際應(yīng)用時(shí),基于緩存數(shù)據(jù)的關(guān)鍵字值的取值范圍將所述緩存數(shù)據(jù)劃分為多個(gè) 分組,每個(gè)分組對(duì)應(yīng)一個(gè)取值范圍,且每個(gè)分組對(duì)應(yīng)關(guān)聯(lián)至少一臺(tái)緩存服務(wù)器,根據(jù)不同分 組對(duì)應(yīng)的取值范圍及緩存服務(wù)器得到相應(yīng)的配置表。具體來說,就是對(duì)緩存數(shù)據(jù)的關(guān)鍵字 值按照不同取值范圍劃分為多個(gè)分組,每個(gè)分組對(duì)應(yīng)不同的取值范圍,且每個(gè)分組對(duì)應(yīng)關(guān) 聯(lián)至少一臺(tái)緩存服務(wù)器,根據(jù)不同分組對(duì)應(yīng)的取值范圍及緩存服務(wù)器得到相應(yīng)的配置表。 也就是將對(duì)關(guān)鍵字值進(jìn)行分組的分組信息對(duì)應(yīng)W配置表的形式體現(xiàn)。配置表中有不同分組 對(duì)應(yīng)的取值范圍及緩存服務(wù)器信息。請(qǐng)參閱表1,表1為分組關(guān)系的配置表,表1只為舉例說 明,不作限制。如表1所示