Redis集群的方案

Redis集群有以下幾種方案:

1. 客戶端分片

將分片的工作交給客戶端來做

好處是不需要使用第三方分布式中間件,完全是自己控制

性能好(無需中間件分發(fā))

壞處是代碼得自己寫,耦合度和侵入性高

新增和減少Redis實(shí)例都必須修改代碼,運(yùn)維麻煩

2. 代理分片(中間件分片)

將分片工作交給第三方中間件來做,中間件接收到客戶端的請求,根據(jù)路由規(guī)則來進(jìn)行分發(fā)和應(yīng)答

好處是業(yè)務(wù)代碼解耦,無侵入性,運(yùn)維方便,可以做標(biāo)準(zhǔn)化運(yùn)維

壞處是有性能上的損耗,畢竟要經(jīng)過中間件轉(zhuǎn)發(fā)

3. Redis Cluster

Redis Cluster將所有的key映射到16384個(gè)slot中,集群中的每個(gè)Redis實(shí)例負(fù)責(zé)一部分,業(yè)務(wù)程序通過集成的Redis Cluster客戶端進(jìn)行操作。

去中心化,沒有中心節(jié)點(diǎn),客戶端可以向任何一個(gè)實(shí)例發(fā)出請求,如果所需數(shù)據(jù)不在該實(shí)例中,則該實(shí)例會引導(dǎo)客戶端自動去對應(yīng)實(shí)例讀寫數(shù)據(jù)。

Redis Cluster的成員管理(節(jié)點(diǎn)名稱,ip,端口,狀態(tài),角色)等,都通過節(jié)點(diǎn)之間兩兩通訊,定期交換更新。

整個(gè)架構(gòu)比較重,不推薦使用。

綜合考慮,使用代理分片是最好的方案。

代理分片有以下幾種中間件可支持:

1. Twemproxy,穩(wěn)定性高,但運(yùn)維麻煩

2. Codis,穩(wěn)定性高,速度快(比Twemproxy快),運(yùn)維方便

Codis介紹

Codis引入了Group概念,每個(gè)Group包括1個(gè)Redis Master和1個(gè)Redis Slave,避免Group故障,保障可靠性。

為了支持熱遷移,Codis還修改了Redis Server源碼,即Codis Server。

Codis采用預(yù)先分片的機(jī)制,分成了1024個(gè)slot,也就是所最多支持1024個(gè)Codis Server(即1024個(gè)Group),這些路由信息都可以保存在Zookeeper。


在高可用方面,Codis還提供了一個(gè)Java客戶端,即Jodis,如果當(dāng)個(gè)Codis Proxy掛掉,Jodis會自動發(fā)現(xiàn),并且自動切換,保障業(yè)務(wù)不受影響。

Codis也指出Pipeline,即客戶端發(fā)出一批情趣,然后一次性返回

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容