redis集群方案

redis cluster

架构

  • redis集群两两之间互相通信,并将16384个哈希槽分配给每个节点(程序或者手动分配,非一致性hash)。
  • 当需要在 Redis 集群中set一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽。
  • redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

特点

优点
  • 部署简单。redis自身支持,无需其他节点。
  • 支持高可用。
缺点
  • 客户端需要定制。需实现redis集群协议。
  • server节点两两通信,集群规模受限
    • 建议支持200master节点,每个节点10G,最多2T空间,如果业务要求不能用满,空间会更少
    • 弥补方式:多集群分片。

槽迁移

  • 槽迁移整体流程。
    201202.redisrebalance.png
  • 迁移key的过程。
    201202.migaratekey.png
  • 槽迁移过程中,如果请求源节点,而key被迁移到目标节点会返回ASK错误,客户端这一次请求转向目标节点。
    201202.ask.png
  • 槽迁移结束,如果请求源节点发现对应的槽已迁移,返回MOVED错误,客户端之后这个槽的请求都转向目标节点。

容错机制

codis

架构

  • 基于redis 2.8.13开发,在redis和client中间插入Proxy层,内存维护槽位(key分组)和Redis实例映射关系,zk持久化映射关系。200123.codisarch.png

特点

优点
  • 分布式逻辑和存储逻辑分离。客户端无需关注服务端部署,client和server可各自升级,proxy扩容方便。
  • 支持pinpline等redis cluster不支持的命令。
  • 大规模生产使用过,可靠。redis cluster待考验。
  • 集群可以支持1024个master server节点,容量是cluster架构的五倍以上。
缺点
  • 部署复杂。服务节点较多,除了redis还需proxy和zk。
  • 性能略微受损。proxy-server低于1ms的rt

参考

客户端分片

架构

  • redis节点之间互不通信,client直连多台redis(主从),在客户端做hash。

特点

优点
  • 架构简单,可靠。
  • 支持原生的redis命令。
缺点
  • 分布式逻辑和存储逻辑耦合在客户端。

参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值