亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis集群的方法

發布時間:2020-08-25 13:44:19 來源:億速云 閱讀:146 作者:小新 欄目:關系型數據庫

這篇文章將為大家詳細講解有關redis集群的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Redis Sharding集群

Redis Sharding是一種客戶端Sharding分片技術。

redis集群的方法

Redis Sharding可以說是Redis Cluster出來之前,業界普遍使用的多Redis實例集群方法。主要思想是采用哈希算法將Redis數據的key進行散列,通過hash函數,特定的key會映射到特定的Redis節點上。

這樣,客戶端就知道該向哪個Redis節點操作數據,需要說明的是,這是在客戶端完成的。

java redis客戶端jedis,已支持Redis Sharding功能,即ShardedJedis以及結合緩存池的ShardedJedisPool。Jedis的Redis Sharding實現具有如下特點:

1、采用一致性哈希算法(consistent hashing)

將key和節點name同時哈希,然后進行映射匹配,采用的算法是MURMUR_HASH。一致性哈希主要原因是當增加或減少節點時,不會產生由于重新匹配造成的rehashing。一致性哈希只影響相鄰節點key分配,影響量小。更多一致性哈希算法介紹,可以參考:http://blog.csdn.net/cywosp/article/details/23397179/

2、虛擬節點

ShardedJedis會對每個Redis節點,根據名字虛擬化出160個虛擬節點進行散列。用虛擬節點做映射匹配,可以在增加或減少Redis節點時,key在各Redis節點移動更分配更均勻,而不是只有相鄰節點受影響。如圖,Redis節點1虛擬化成NODE1-1和NODE1-2,散列中哈希環上。這樣當object1、object2散列時,選取最近節點NODE1-1和NODE1-2,而NODE1-1和NODE1-2又是NODE節點的虛擬節點,即實際存儲在NODE節點上。

增加虛擬節點,可以保證平衡性,即每臺Redis機器,存儲的數據都差不多,而不是一臺機器存儲的數據較多,其它的少。

3、ShardedJedis支持keyTagPattern模式

抽取key的一部分keyTag做sharding,這樣通過合理命名key,可以將一組相關聯的key放入同一Redis節點,避免跨節點訪問。即客戶端將相同規則的key值,指定存儲在同一Redis節點上。

添加或減少節點時?

Redis Sharding采用客戶端Sharding方式,服務端的Redis還是一個個相對獨立的Redis實例節點。同時,我們也不需要增加額外的中間處理組件,這是一種非常輕量、靈活的Redis多實例集群方案。

當然,這種輕量靈活方式必然在集群其它能力方面做出妥協。比如擴容,當想要增加Redis節點時,盡管采用一致性哈希,那么不同的key分布到不同的Redis節點上。

當我們需要擴容時,增加機器到分片列表中。這時候客戶端根據key算出來落到跟原來不同的機器上,這樣如果要取某一個值,會出現取不到的情況。

對于這一種情況,一般的作法是取不到后,直接從后端數據庫重新加載數據,但有些時候,擊穿緩存層,直接訪問數據庫層,會對系統訪問造成很大壓力。

Redis作者給出了一個辦法--presharding。

是一種在線擴容的方法,原理是將每一臺物理機上,運行多個不同端口的Redis實例,假如三個物理機,每個物理機運行三個Redis實例,那么我們的分片列表中實際有9個Redis實例,當我們需要擴容時,增加一臺物理機,步驟如下:

1、在新的物理機上運行Redis-server

2、該Redis-server從屬于(slaveof)分片列表中的某一Redis-Server(假設叫RedisA)。

3、主從復制(Replication)完成后,將客戶端分片列表中RedisA的IP和端口改為新物理機上Redis-Server的IP和端口。

4、停止RedisA

這樣相當于將某一Redis-Server轉移到了一臺新機器上。但還是很依賴Redis本身的復制功能,如果主庫快照數據文件過大,這個復制的過程也會很久,同時也會給主Redis帶來壓力,所以做這個拆分的過程最好選擇業務訪問低峰時段進行。

節點發生故障時

并不是只有增刪Redis節點引起鍵值丟失問題,更大的障礙來自Redis節點突然宕機。

為不影響Redis性能,盡量不開啟AOF和RDB文件保存功能,因此需架構Redis主備模式,主Redis宕機,備Redis留有備份,數據不會丟失。

Sharding演變成如下:

這樣,我們的架構模式變成一個Redis節點切片包含一個主Redis和一個備Redis,主備共同組成一個Redis節點,通過自動故障轉移,保證了節點的高可用性.

Redis Sentinel哨兵

提供了主備模式下Redis監控、故障轉移等功能,達到系統的高可用性。

讀寫分離

高訪問時量下,即使采用Sharding分片,一個單獨節點還是承擔了很大的訪問壓力,這時我們還需要進一步分解。

通常情況下,讀常常是寫的數倍,這時我們可以將讀寫分離,讀提供更多的實例數。利用主從模式實現讀寫分離,主負責寫,從負責只讀,同時一主掛多個從。在Redis Sentinel監控下,還可以保障節點故障的自動監測。

關于redis集群的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

维西| 通道| 济宁市| 边坝县| 自贡市| 阿克陶县| 平罗县| 新源县| 威信县| 洪湖市| 曲周县| 葵青区| 建宁县| 马边| 龙海市| 山阳县| 孙吴县| 特克斯县| 大同县| 茶陵县| 罗江县| 巫山县| 西藏| 乌兰县| 沿河| 渭南市| 聂荣县| 夹江县| 遂平县| 翼城县| 万荣县| 通河县| 灵台县| 砀山县| 邢台县| 应城市| 阳泉市| 双峰县| 苏尼特左旗| 安宁市| 龙游县|