Redis高可用演进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis高可用演进相关的知识,希望对你有一定的参考价值。

最近整理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客户单的实现原理

以上是关于Redis高可用演进的主要内容,如果未能解决你的问题,请参考以下文章

redis专题之redis cluster高可用集群

唯品会滴滴沪江架构师,关于微服务粒度高可用持续交互的实践分享交流(下)

服务端高并发分布式架构演进之路

Redis+Keeplived实现高可用

微信群分享预告Kubernetes结合LVS实现高可用负载均衡与集群外服务访问

微信群分享预告Kubernetes结合LVS实现高可用负载均衡与集群外服务访问