Redis學習筆記(11)——Redis緩存集羣方案

因爲單臺Redis服務器的內存管理能力有限,使用過大內存的Redis又會使得服務器的性能急劇降低,一旦服務器發生故障將會影響更大範圍業務,而Redis 3.0 beta1支持的集羣功能還不適合生產環境的使用。因而爲了獲取更好的Redis緩存性能及可用性,不少公司都研發了Redis緩存集羣方案。現對NetFlix、Twitter、國內的豌豆莢在緩存集羣方面的解決方案進行一個彙總,以供讀者參考,具體內容以下:html

一、NetFlix對Dynamo的開源通用實現Dynomite

Dynomite是NetFlix對亞馬遜分佈式存儲引擎Dynamo的一個開源通用實現,使用C/C++語言編寫、以代理的方式實現的Redis緩存集羣方案。Dynomite不只可以將基於內存的Redis和Memcached打形成分佈式數據庫,還支持持久化的MySQL、BerkeleyDBLevelDB等數據庫,並具備簡單、高效、支持跨數據中心的數據複製等優勢。Dynomite的最終目標是提供數據庫存儲引擎不能提供的簡單、高效、跨數據中心的數據複製功能。Dynomite遵循Apache License 2.0開源協議發佈,更多關於Dynomite的信息請查看NetFlix技術博客對Dynomite的介紹git

二、Twitter的Redis/Memcached代理服務Twemproxy

Twemproxy是一個使用C語言編寫、以代理的方式實現的、輕量級的Redis代理服務器,它經過引入一個代理層,將應用程序後端的多臺Redis實例進行統一管理,使應用程序只須要在Twemproxy上進行操做,而不用關心後面具體有多少個真實的Redis或Memcached實例,從而實現了基於Redis和Memcached的集羣服務。當某個節點宕掉時,Twemproxy能夠自動將它從集羣中剔除,而當它恢復服務時,Twemproxy也會自動鏈接。因爲是代理,因此Twemproxy會有微小的性能損失。根據 Redis做者的測試結果,在大多數狀況下,Twemproxy的性能至關不錯,同直接操做Redis相比,最多隻有20%的性能損失。Twemproxy遵循Apache License 2.0開源協議發佈,更多關於Twemproxy的信息請登陸其在GitHub的主頁查看。github

三、豌豆莢的 Redis 集羣解決方案Codis

Codis是豌豆莢使用Go和C語言開發、以代理的方式實現的一個Redis分佈式集羣解決方案,且徹底兼容Twemproxy。Twemproxy對於上一層的應用來講, 鏈接Codis Proxy(Redis代理服務)和鏈接原生的Redis服務器沒有明顯的區別,上一層應用可以像使用單機的 Redis同樣對待。Codis底層會處理請求的轉發、不停機的數據遷移等工做, 全部底層的一切處理, 對於客戶端來講是透明的。總之,能夠簡單的認爲後臺鏈接的是一個內存無限大的Redis服務。Codis遵循MIT開源協議發佈,更多關於Codis的信息請登陸其在GitHub的主頁查看。redis

另外,還有一些未開源的解決方案,好比新浪、百度、淘寶、騰訊等的Redis集羣方案。在Redis官方正式推出可用於生產環境的集羣方案前,以上三種方案是很是值得考慮在生產環境使用的方案。數據庫

相關文章
相關標籤/搜索