Redis常见集群方案

Redis常见集群方案

Redis集群方案目前主流的有三种,分别是Twemproxy、Codis和Redis Cluster。
在这里插入图片描述

Redis Cluster

Redis Cluster 集群是去中心化通过客户端分片的结构,集群元数据信息分布在每个节点上,主备切换依赖于多个节点协商选主。

Redis cluster有slots 16384个,槽跟节点的映射关系保存在每个节点上,节点之间通过gossip协议交换集群元数据信息。

客户端操作key的时候先通过分片算法算出所属的槽,然后随机找一个服务端请求。可能这个槽并不归随机找的这个节点管,节点如果发现不归自己管,

就会返回一个MOVED ERROR通知,引导客户端去正确的节点访问,这个时候客户端就会去正确的节点操作数据。
在这里插入图片描述

Twemproxy

在这里插入图片描述

Twemproxy是一种代理分片机制,由Twitter开源。Twemproxy作为代理,可接受来自多个程序Client的访问,在 Twemproxy 也可以部署LVS或者 HAProxy等负载均衡设备。Twemproxy会按照路由规则,转发给后台的各个Redis/Memcache服务器,再原路返回。该方案很好的解决了单个Redis实例承载能力的问题。当然,Twemproxy本身也是单点,需要用Keepalived做高可用方案。通过Twemproxy可以使用多台服务器来水平扩张redis服务,Twemproxy减少后端资源的连接数以及为缓存横向扩展能力。 twemproxy 支持多种 hash 分片算法,同时具备失败节点自动剔除的功能,可以有效的避免单点故障问题。

Twemproxy的开源版本存在几个问题:

  • 单线程模型无法利用多核,性能不够好,极端情况下代理和资源需要 1:1 部署;
    配置无法在线 Reload,twitter 内部版本应该是支持的,单元测试里面有针对 reload 的 case,PaaS 场景需要不断更新配置;
  • Redis 不支持主从模式(Redis 在作为缓存的场景下确实没必要使用主从),但部分场景需要;
  • 数据指标过少,延时指标完全没有、

Codis

  • Codis是一个采用Proxy-based方式的分布式Redis解决方案。Codis采用一层无状态的proxy层,将分布式逻辑写在proxy上,底层的存储引擎还是Redis,数据的分布状态存储于zookeeper(etcd)中。
  • Codis功能非常全,除了请求转发功能之外,还实现了在线数据迁移、节点扩容缩容、故障自动恢复等功能。
  • 在Codis里面,它把所有的key分为1024个槽,每一个槽位都对应了一个分组,具体槽位的分配,可以进行自定义,现在如果有一个key进来,首先要根据CRC32算法,针对key算出32位的哈希值,然后除以1024取余,然后就能算出这个KEY属于哪个槽,然后根据槽与分组的映射关系,就能去对应的分组当中处理数据了

Codis的架构如下:
在这里插入图片描述

数据可靠性&高可用&容灾&故障转移

数据可靠性

作为codis的实现来讲,数据高可靠主要是redis本身的能力,通常存储层的数据高可靠,主要是单机数据高可靠+远程数据热备+定期冷备归档实现的。

高可用&容灾&故障转移

codis的架构本身分成proxy集群+redis集群,proxy集群的高可用,可以基于zk或者l5来做故障转移,而redis集群的高可用是借助于redis开源的哨兵集群来实现。proxy 通过监听sentinle集群的+switch-master事件来感知redis 主从切换。

对比

CodisTweproxyRedis Cluster
集群模式中心化中心化无中心化
使用方式通过Proxy访问通过Proxy访问使用Smart Client直连Redis,Smart Client内置路由规则
性能有性能损耗有性能损耗
支持的数据库数量多个多个一个
Pipeline支持支持仅支持单个节点Pipeline,不支持跨节点
需升级客户端SDK?
支持在线水平扩容?支持不支持支持
Redis版本仅支持3.2.8,升级困难支持最新版支持最新版
可维护性组件较多,部署复杂只有Proxy组件,部署简单运维简单,官方持续维护
故障自动恢复需部署哨兵需部署哨兵内置哨兵逻辑,无需额外部署
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoLiuRs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值