Redis 實踐之叢集方案

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   ar   資料   sp   log   

本文原創自 http://blog.csdn.net/voipmaker  轉載註明出處。

Redis叢集的目的是實現資料的橫向伸縮,把一塊資料分區儲存到多個機器,可以橫向擴充資料庫大小,擴充頻寬,計算能力等。

 

實現資料分區(叢集)方式大致有三種:

 

(1)     用戶端實現資料分區

即用戶端自己計算資料的key應該在哪個機器上儲存和尋找,此方法的好處是降低了伺服器叢集的複雜度,用戶端實現資料分區時,伺服器是獨立的,伺服器之前沒有任何關聯。多數redis用戶端庫實現了此功能,也叫sharding,這種方式的缺點是用戶端需要即時知道當前叢集節點的聯絡資訊,

同時,當添加一個新的節點時,用戶端要支援動態sharding.,多數用戶端實現不支援此功能,需要重啟redis。另一個弊端是redis的HA需要額外考慮。

 

(2)     伺服器實現資料分區

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

伺服器端實現叢集需要用戶端語言實現伺服器叢集的協議,目前java,php,ruby用戶端多數有redis-cluster用戶端實現版本。

 

(3)     通過Proxy 伺服器實現資料分區

 

此方式是藉助一個Proxy 伺服器實現資料分區,用戶端直接與proxy聯絡,proxy計算叢集節點資訊,並把請求發送到對應的叢集節點。降低了用戶端的複雜度,需要proxy收集叢集節點資訊。Twemproxy是twitter開源的,實現這一功能的proxy.這個實現方式在用戶端和伺服器之間加了一個proxy,

但這是在redis 3.0穩定版本出來之前官方推薦的方式。結合redis-sentinel的HA方案,是個不錯的組合。

Redis 實踐之叢集方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.