Redis高可用演进

cuirulove 5年前

来自: http://www.cnblogs.com/chenty/p/5152878.html

最近整理Redis,对sentinel有了更深入的理解,特地总结如下

1.主从Redis

主从redis实际上是一种主备模式,即主redis宕机后,可以切换从redis继续提供服务。

缺点:

1.人为关注Master是否宕机

2.无法完成自动切换主从

3.从节点的功能未被充分利用

主从模式:

2.sentinel

为了解决上述确定,Redis官方提供了sentinel,保证redis的高可用性

图1展示的是sentinel与redis的关系,即sentinel系统对每个redis实例(主、从)均创建两个链接:命令连接、订阅连接

命令连接:发送INFO命令,与redis保持通信

订阅连接:通过订阅连接,自动发现其他sentinel实例

图2展示一个最小规模的sentinel,即至少由三个sentinel实例组成,当被监视的redis被判断为主管下线时,需要从sentinel中选举零头sentinel来进行主从切换

优点:

1.sentienl可以监控主从节点的健康状况,降低了人为监控成本

2.sentinel可以完成主从切换

缺点:

1.从节点依然未被充分利用

2.无法做到横向扩展,提供服务器的只有一个master

sentinel模式:

图1

图2

3.分片

分片思想主要是利用一致性哈希算法,完成redis的横向扩展

1.通过zookeeper存储sentinel的配置信息

2.在客户端实现一致性哈希算法,通过路由算法决定redis命令由那个redis实例进行执行

3.通过增加shard,来分担单个shard的压力

缺点:

1.扩容时涉及到数据迁移,如果redis中只是缓存数据则方便处理,但如果有业务数据强依赖redis,则迁移时只能停机处理

2.无法解决冷热数据问题

分片模式:

下节重点:

JedisClient客户单的实现原理