redis的集羣方式介紹

Redis集羣的目的是實現數據的橫向伸縮,把一塊數據分片保存到多個機器,可以橫向擴展數據庫大小,擴展帶寬,計算能力等。

 

實現數據分片(集羣)方式大致有三種: 

(1)客戶端實現數據分片 

即客戶端自己計算數據的key應該在哪個機器上存儲和查找,此方法的好處是降低了服務器集羣的複雜度,客戶端實現數據分片時,服務器是獨立的,服務器之前沒有任何關聯。多數redis客戶端庫實現了此功能,也叫sharding,這種方式的缺點是客戶端需要實時知道當前集羣節點的聯繫信息,同時,當添加一個新的節點時,客戶端要支持動態sharding.,多數客戶端實現不支持此功能,需要重啓redis。另一個弊端是redis的HA需要額外考慮。(memcache就是採用的這種方式)

(2)服務器實現數據分片 

其理論是,客戶端隨意與集羣中的任何節點通信,服務器端負責計算某個key在哪個機器上,當客戶端訪問某臺機器時,服務器計算對應的key應該存儲在哪個機器,然後把結果返回給客戶端,客戶端再去對應的節點操作key,是一個重定向的過程,此方式是redis3.0正在實現,目前處於beta版本, Redis 3.0的集羣同時支持HA功能,某個master節點掛了後,其slave會自動接管。

 

(3)通過代理服務器實現數據分片 

 

此方式是藉助一個代理服務器實現數據分片,客戶端直接與proxy聯繫,proxy計算集羣節點信息,並把請求發送到對應的集羣節點。降低了客戶端的複雜度,需要proxy收集集羣節點信息。Twemproxy是twitter開源的,實現這一功能的proxy。這個實現方式在客戶端和服務器之間加了一個proxy,但這是在redis 3.0穩定版本出來之前官方推薦的方式。結合redis-sentinel的HA方案,是個不錯的組合。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章