[發明專利]一種基于一致性哈希算法進行redis橫向擴展的方法在審
| 申請號: | 201611079971.5 | 申請日: | 2016-11-30 |
| 公開(公告)號: | CN106789175A | 公開(公告)日: | 2017-05-31 |
| 發明(設計)人: | 胡志華 | 申請(專利權)人: | 武漢長江通信智聯技術有限公司 |
| 主分類號: | H04L12/24 | 分類號: | H04L12/24;H04L29/08 |
| 代理公司: | 北京清亦華知識產權代理事務所(普通合伙)11201 | 代理人: | 張大威 |
| 地址: | 438700 湖北省武漢市東湖*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 一致性 算法 進行 redis 橫向 擴展 方法 | ||
技術領域
本發明涉及計算機技術領域,更具體地,涉及一種基于一致性哈希算法進行redis橫向擴展的方法。
背景技術
目前,目前web應用系統為了解決高并發帶來的性能問題,都會在web應用系統與數據庫之間采取緩存層,使用最為廣泛的就是Redis(Redis本質上是一個鍵-值類型的內存數據庫)。Redis由于它的高性能和簡單的操作命令,完全可以作為軟件和傳統數據庫之間的緩沖作用,在保證了數據有效性的情況下,同時也保證了高性能。
Redis本身不提供分布式支持,所以在部署多臺Redis服務器時,就需要解決如何把數據分散到各個服務器的問題,并且在服務器數量變化時,能做到最大程度的不令數據重新分布。
通常使用的分布式方法是根據所要存儲數據的鍵的hash值與服務器數量N,按hash%N取模的算法來將數據分布到各個服務器。該算法的優點是足夠簡單,而且數據分布均勻。但是一旦服務器數量N發生變化的時候,緩存命中率會瞬間跌入谷底,因為絕大多數的數據需要重新分布。此時會有巨大的壓力涌向后端服務,可能會導致性能故障和服務故障,甚至宕機。
因此,期望提供一種更有效地實現Redis橫向擴展的方法。
發明內容
本發明提供一種克服上述問題或者至少部分地解決上述問題的方法。
根據本發明的一個方面,提供了一種redis橫向擴展的方法,包括以下步驟:步驟1,基于redis各服務器節點信息,利用哈希函數,獲得所述redis服務器各節點的哈希值;將所述redis服務器各節點的哈希值分布在一個具有2^32個均勻排布點的圓環上;
步驟2,基于需要存儲數據的鍵信息,利用哈希函數,獲得所述需要存儲數據各鍵的哈希值;將所述需要存儲數據各鍵的哈希值映射到所述圓環上;
步驟3,分別從需要存儲數據各鍵映射在所述圓環上的位置開始順時針查找分布在所述圓環上的服務器節點,并將所述需要存儲數據保存在查找到的第一個服務器節點上。
本申請提出了一種redis橫向擴展的方法,利用一致性哈希函數,將需要存儲的數據均勻的分散到各個服務器上,并且同時實現故障服務器節點數據快速轉移的技術效果。
附圖說明
圖1為根據本發明一種redis橫向擴展的方法的總體流程示意圖;
圖2為根據本發明一種redis橫向擴展的方法中哈希圓環的示意圖。
具體實施方式
下面結合附圖和實施例,對本發明的具體實施方式作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
如圖1,在本發明一個具體實施例中,示出一種redis橫向擴展的方法整體流程示意圖。整體上,包括:步驟1,基于redis各服務器節點信息,利用哈希函數,獲得所述redis服務器各節點的哈希值;將所述redis服務器各節點的哈希值分布在一個具有2^32個均勻排布點的圓環上;步驟2,基于需要存儲數據的鍵信息,利用哈希函數,獲得所述需要存儲數據各鍵的哈希值;將所述需要存儲數據各鍵的哈希值映射到所述圓環上;步驟3,分別從需要存儲數據各鍵映射在所述圓環上的位置開始順時針查找分布在所述圓環上的服務器節點,并將所述需要存儲數據保存在查找到的第一個服務器節點上。
本發明另一個具體實施例中,一種redis橫向擴展的方法,由于哈希(hash)算法結果一般為unsigned int型,因此對于hash函數的結果應該均勻分布在[0,2^32-1]區間,如果我們把一個圓環用2^32個點來進行均勻切割,首先按照hash(key)函數算出服務器節點的哈希值,并將其分布到0~2^32的圓環上。
用同樣的hash(key)函數求出需要存儲數據的鍵的哈希值,并映射到圓環上。然后從數據映射到的位置開始順時針查找,將數據保存到找到的第一個服務器(節點)上。如圖2所示,key1、key2、key3和server1、server2通過hash都能在這個圓環上找到自己的位置,并且通過順時針的方式來將key定位到server。按上圖來說,key1和key2存儲到server1,而key3存儲到server2。如果新增一臺server,hash后在key1和key2之間,則只會影響key1(key1將會存儲在新增的server上),其它則不變。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢長江通信智聯技術有限公司,未經武漢長江通信智聯技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611079971.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種防爆電筒的磁控開關裝置
- 下一篇:一種壓差保護電路





