1、背景
Redis的出現(xiàn)確實大大地提高系統(tǒng)大并發(fā)能力支撐的可能性,轉(zhuǎn)眼間Redis的最新版本已經(jīng)是3.X版本了,但我們的系統(tǒng)依然繼續(xù)跑著2.8,并很好地支撐著我們當前每天5億訪問量的應(yīng)用系統(tǒng)。想當年Redis的單點單線程特性無法滿足我們?nèi)找鎵汛蟮南到y(tǒng),只能硬著頭皮把Redis“集群化”負載。且這套“集群化”方案良好地運行至今。雖難度不高,勝在簡單和實用。無論簡單還是很簡單,記錄這種經(jīng)歷是一件非常有趣的事情。
2、問題
系統(tǒng)訪問量日益倍增,當前的Redis單點服務(wù)確實客觀存在連續(xù)可用性以及支撐瓶頸風險,這種主/備模式在服務(wù)故障突發(fā)的情況下就會被動停止服務(wù)進行Redis節(jié)點切換。針對單點問題,我們結(jié)合自身的業(yè)務(wù)應(yīng)用場景對Redis“集群化”提出幾個主要目標:
1、避免單點情況,確保服務(wù)高可用;
2、緊可能把數(shù)據(jù)分布式存儲,降低故障影響范圍,滿足服務(wù)靈活伸縮;
3、控制“集群化”的復(fù)雜度,從而控制邊際成本;