zoukankan      html  css  js  c++  java
  • Redis集群方案

    介绍几种常用的 Redis 高可用方案。

    Redis 主从 + 哨兵

    Sentinel(哨兵) 进程是用于监控 Redis 集群中 Master 主服务器工作的状态。在 Master
    主服务器发生故障的时候,可以实现 Master 和 Slave 服务器的切换,保证系统的高可用(High Availability)

    Redis cluster

    3.0自带的集群,特点在于 他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。 Redis
    集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分
    slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。 Redis 客户端可以在任意一个 Redis
    实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

    第三方(codis、twemproxy)

    大概概念是,它类似于一个代理方式,使用方法和普通redis无任何区别,设置好它下属的多个redis实例后,
    使用时在本需要连接redis的地方改为连接twemproxy,它会以一个代理的身份接收请求
    并使用一致性hash算法,将请求转接到具体redis,将结果再返回twemproxy。使用方式简便(相对redis只需修改连接端口),
    对旧项目扩展的首选, 问题:twemproxy自身单端口实例的压力,
    使用一致性hash后,对redis节点数量改变时候的 计算值的改变,数据无法自动移动到新的节点。

    云服务(阿里云Redis)

    阿里云的redis集群同样基于proxy,用户对路由信息无感知,同时提供vip给客户端访问,客户端只需一个连接地址即可,
    无须关心proxy访问的负载均衡等。

    在业务代码层

    起几个毫无关联的redis实例,在代码层,对key 进行hash计算,然后去对应的redis实例操作数据。
    这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。

  • 相关阅读:
    Objective-C-使用NSMutableURLRequest发送POST请求,使用NSJSONSerialization解析JSON字符串
    js showModalDialog打开新的页面给原页面传值问题
    svn2git使用小记
    模拟等待事件row lock waits
    URAL 1994 The Emperor's plan 求组合数 大数用log+exp处理
    struts总结
    URAL 1992 CVS 链表
    android游戏物理引擎开发——粒子系统(三)
    状态模式与上机
    OpenCV——凸包
  • 原文地址:https://www.cnblogs.com/manastudent/p/12264285.html
Copyright © 2011-2022 走看看