- 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支持,方便迁移数据