- redis Cluster介紹
(1) Redis-Cluster是一種服務器Sharding技術,Redis3.0以後版本正式提供支持
(2) 特點:
① Redis_cluster沒有使用一致性hash,而是引入了hash槽的概念。Redis_Cluster中有16384(即2的14次方)個hash槽,每個key通過CRC16校驗後對16383取模來決定放置哪個槽。Cluster中的每一個節點負責一部分hash槽
② 實例
1) 比如集羣中存在三個節點,則可能存在的一種分配如下
- 節點A包含0-5500號哈希槽
- 節點B包含5501-11000號哈希槽
- 節點C包含11001-16384號哈希槽
- 其他方案
(1) Redis Sentinel集羣+Keepalived/Haproxy
① 底層是Redis Sentinel集羣,代理着Redis主從,web端通過VIP提供服務。當主節點發生故障,比如機器故障、Redis節點故障或者網絡不可達,Redis之間的切換通過Redis Sentinel內部保障機制,VIP切換通過keepalived保障
② 優點
1) 秒級切換
2) 對應用透明
③ 缺點
1) 維護成本高
2) 存在腦裂
3) Sentinel模式存在短時間服務不可用
(2) Twemproxt
① 多個同構Twemproxy(配置相同)同時工作,根據hash算法,轉發給對用的Redis
② 優點
1) 開發簡單,對應用幾乎透明
2) 歷史悠久,方案成熟
③ 缺點
1) 代理影響性能
2) LVS和Twemproxy會有節點性能瓶頸
3) Redis擴容非常麻煩
(3) Codis
① Codi是由豌豆莢開源的產品,涉及衆多組件,其中Zookeeper存放路由表和代理節點元數據、分發Codis-config的命令;Codis-config是集成管理工具,有web界面提供使用;Codis-Proxy是一個兼容Redis協議的無狀態代理;Codis-Redis基於Redis2.8版本二次開發,加入了slot支持,方便遷移數據