redis 高可用方案 主从Replication、哨兵Sentinel、集群Cluster

  • 一定要看官网
    英文 https://redis.io/documentation
    中文 http://www.redis.cn/documentation.html
  • 单机、单实例有什么问题 ?
    1. 单点故障
    2. 容量有限
    3. 并发有限

redis 主从

Replication

  • 读写分离
  • 备份策略 AOF/RDB
  • CAP理论:一致性、可用性、分区容错性
    一致性问题? 主从阻塞备份 超时? 丢包?(影响可用性?)

redis sentinel (哨兵)

Redis Sentinel Documentation

  • sentinel集群功能 capabilities
    1. 监控 monitoring master/replica
    2. 通知 notification
    3. 自动故障转移 automatic failover
    4. 配置服务 configuration provider
  • 为什么过半机制? 防止脑裂现象出现不一致
  • 为什么总数是奇数? 要过半的话,6台允许2台挂掉,5台允许2台挂掉,所以
    用5不用6
  • redis sentinel集群本身没有主从?? 无主 gossip
    Redis Sentinel的信息同步

redis cluster (集群)

Redis Cluster Specification

  • redis cluster node 作用
    1. 存储数据
    2. 集群状态(包括哈希槽分配)
    3. 自动发现、检测故障节点、故障迁移(从升主)

  • redis cluster设计的目标
    1. linear scalability
      • 线性扩展:资源量以与数据库吞吐量以相同的比例增加
    2. 写安全 write safe
    3. 高可用 availability
      • Node timeout
      • replicas migration 副本迁移 (slave节点多的分配给少的)
    4. 性能 performance
      • redirect
      • persistent connections

Very high performance and scalability while preserving weak but reasonable forms of data safety and availability is the main goal of Redis Cluster.


容量有限 分片策略?-> 哈希、一致性哈希、redis代理

  • 16384 哈希槽位
  • 无主模型
  • 数据分治 -> 数据聚合不方便实现
    解决方案:人为把数据放到同一个redis实例{oo}k1 (redis自己不做处理,复杂度交给客户)

redis代理

  • predixy
  • twemproxy
  • codis

proxy层解耦客户端和服务端


其他

  • reids
  • 由于网络分区造成的redis脑裂无法避免
    redis 脑裂等极端情况分析
    redis集群怎么防止脑裂 其实是redis脑裂的情况下怎样减少数据不一致

参考

这可能是目前最全的Redis高可用技术解决方案
redis学习六 集群的原理(转载) 官网的翻译

你可能感兴趣的:(redis 高可用方案 主从Replication、哨兵Sentinel、集群Cluster)