|
目前Redis Cluster仍處于Beta版本,Redis 3.0將會(huì)加入,在此可以先對(duì)其主要功能和原理進(jìn)行一個(gè)預(yù)覽。參考《Redis Cluster - a pragmatic approach to distribution》。 1 沒(méi)有集群的Redis沒(méi)有集群功能的Redis,每個(gè)master-slave主從復(fù)制都獨(dú)立于其他結(jié)點(diǎn),sharding需要在客戶端如Jedis中控制??梢允褂霉俜教峁┑?span lang="EN-US">Sentinel監(jiān)控主從的狀態(tài),實(shí)現(xiàn)自動(dòng)的Fail-over切換。具體請(qǐng)參見(jiàn)《Redis主從和HA配置》。 2 集群拓?fù)?/span>所有結(jié)點(diǎn)直連其他結(jié)點(diǎn),端口為baseport(6379)+4000。為了帶寬和性能,通信協(xié)議是二進(jìn)制的??蛻舳伺c結(jié)點(diǎn)之間的通信還是正常的ascii協(xié)議。
雖然結(jié)點(diǎn)是互聯(lián)并且功能等同的,但實(shí)際上結(jié)點(diǎn)還是分為master和slave兩種。例如下圖所示,每個(gè)master有兩個(gè)副本,副本不接受寫(xiě)請(qǐng)求。Redis-trib集群管理器會(huì)分配master和slave,使其盡量在不同的物理機(jī)上。 3 請(qǐng)求處理Redis集群客戶端分為兩種:Dummy和Smart: Dummy模式:?jiǎn)芜B接,隨機(jī)連接一個(gè)結(jié)點(diǎn),對(duì)現(xiàn)有客戶端代碼結(jié)構(gòu)影響最小。 Smart模式:長(zhǎng)連接到許多結(jié)點(diǎn),在客戶端緩存一份hashslot=>node的路由表,當(dāng)接收到服務(wù)器的-MOVED響應(yīng)時(shí)更新表項(xiàng)。這種方式具有低延遲,但當(dāng)集群很大時(shí),客戶端會(huì)維護(hù)許多連接,此時(shí)應(yīng)當(dāng)共享client對(duì)象實(shí)例。
當(dāng)添加新結(jié)點(diǎn),可以使用redis-trib的MIGRATE命令進(jìn)行re-sharding。 |
|
|