Redis学习笔记(11)——Redis缓存集群方案
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
由于單臺Redis服務(wù)器的內(nèi)存管理能力有限,使用過大內(nèi)存的Redis又會使得服務(wù)器的性能急劇下降,一旦服務(wù)器發(fā)生故障將會影響更大范圍業(yè)務(wù),而Redis 3.0 beta1支持的集群功能還不適合生產(chǎn)環(huán)境的使用。于是為了獲取更好的Redis緩存性能及可用性,很多公司都研發(fā)了Redis緩存集群方案。現(xiàn)對NetFlix、Twitter、國內(nèi)的豌豆莢在緩存集群方面的解決方案進行一個匯總,以供讀者參考,具體內(nèi)容如下:
1、NetFlix對Dynamo的開源通用實現(xiàn)Dynomite
Dynomite是NetFlix對亞馬遜分布式存儲引擎Dynamo的一個開源通用實現(xiàn),使用C/C++語言編寫、以代理的方式實現(xiàn)的Redis緩存集群方案。Dynomite不僅能夠?qū)⒒趦?nèi)存的Redis和Memcached打造成分布式數(shù)據(jù)庫,還支持持久化的MySQL、BerkeleyDB、LevelDB等數(shù)據(jù)庫,并具有簡單、高效、支持跨數(shù)據(jù)中心的數(shù)據(jù)復制等優(yōu)點。Dynomite的最終目標是提供數(shù)據(jù)庫存儲引擎不能提供的簡單、高效、跨數(shù)據(jù)中心的數(shù)據(jù)復制功能。Dynomite遵循Apache License 2.0開源協(xié)議發(fā)布,更多關(guān)于Dynomite的信息請查看NetFlix技術(shù)博客對Dynomite的介紹。
2、Twitter的Redis/Memcached代理服務(wù)Twemproxy
Twemproxy是一個使用C語言編寫、以代理的方式實現(xiàn)的、輕量級的Redis代理服務(wù)器,它通過引入一個代理層,將應(yīng)用程序后端的多臺Redis實例進行統(tǒng)一管理,使應(yīng)用程序只需要在Twemproxy上進行操作,而不用關(guān)心后面具體有多少個真實的Redis或Memcached實例,從而實現(xiàn)了基于Redis和Memcached的集群服務(wù)。當某個節(jié)點宕掉時,Twemproxy可以自動將它從集群中剔除,而當它恢復服務(wù)時,Twemproxy也會自動連接。由于是代理,所以Twemproxy會有微小的性能損失。根據(jù) Redis作者的測試結(jié)果,在大多數(shù)情況下,Twemproxy的性能相當不錯,同直接操作Redis相比,最多只有20%的性能損失。Twemproxy遵循Apache License 2.0開源協(xié)議發(fā)布,更多關(guān)于Twemproxy的信息請登錄其在GitHub的主頁查看。
3、豌豆莢的 Redis 集群解決方案Codis
Codis是豌豆莢使用Go和C語言開發(fā)、以代理的方式實現(xiàn)的一個Redis分布式集群解決方案,且完全兼容Twemproxy。Twemproxy對于上一層的應(yīng)用來說, 連接Codis Proxy(Redis代理服務(wù))和連接原生的Redis服務(wù)器沒有明顯的區(qū)別,上一層應(yīng)用能夠像使用單機的 Redis一樣對待。Codis底層會處理請求的轉(zhuǎn)發(fā)、不停機的數(shù)據(jù)遷移等工作, 所有底層的一切處理, 對于客戶端來說是透明的。總之,可以簡單的認為后臺連接的是一個內(nèi)存無限大的Redis服務(wù)。Codis遵循MIT開源協(xié)議發(fā)布,更多關(guān)于Codis的信息請登錄其在GitHub的主頁查看。
另外,還有一些未開源的解決方案,比如新浪、百度、淘寶、騰訊等的Redis集群方案。在Redis官方正式推出可用于生產(chǎn)環(huán)境的集群方案前,以上三種方案是非常值得考慮在生產(chǎn)環(huán)境使用的方案。
轉(zhuǎn)載于:https://my.oschina.net/jewill/blog/381391
總結(jié)
以上是生活随笔為你收集整理的Redis学习笔记(11)——Redis缓存集群方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软职位内部推荐-Senior PM
- 下一篇: mybatis开发常见SQL使用手册