天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
分类: 云计算
2025-03-24 16:51:03
本文分享自天翼云开发者社区《Redis 高可用方案》,作者:芋泥麻薯
一、常见使用方式
Redis的几种常见使用方式包括:
二、各种使用方式的优缺点
1、Redis单副本
Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。
优点:
缺点:
2、Redis多副本(主从)
Redis多副本,采用主从(replication)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。
优点:
缺点:
3、Redis Sentinel(哨兵)
Redis Sentinel是社区版本推出的原生高可用解决方案,其部署架构主要包括两部分:Redis Sentinel集群和Redis数据集群。
其中Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知。Redis Sentinel的节点数量要满足2n+1(n>=1)的奇数个。
优点:
缺点:
建议:
4、Redis Cluster
Redis Cluster是社区版推出的Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。
Redis Cluster集群节点最小配置6个节点以上(3主3从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。
Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。
优点:
缺点:
5、dynomite
dynomite使用netflix开源的一个开源将非分布式的缓存系统改造成分布式的缓存系统,根据亚马逊的Dynamo进行设计,是一个高可用,高性能,支持跨数据中副本的分布式存储代理层。
上面是官方给的两个拓扑图,其结构和elasticsearch集群的结构比较相似。
这个图里面有两个概念,datacent和rack。这两个概念举例来理解,假设我们在阿里云有集群,在腾讯云也有集群,这就叫两个datacent,或者换种说法,假设有很多集群,这些集群可以根据物理机所在位置或者其他标准,分成了两大部分,这就叫两个datacent。 然后在每个datacent内,可能某些物理机在一个机房或者机架甚至就是一个机器上的几个虚拟机,那么这些机器之间的通信等速度肯定会更快,这些机器可以组成一个集群,就叫一个rack。
在dynomite拓扑结构中,每个rack都是一个完整集群,每个rack的都拥有完整的数据,多个rack间相互备份,这就达到了高可用,具体同步机制后面讲。
dynomite结构中,每个rack都是一个一致性hash环,具体规则是rack上每个节点都是个redis master,是可读写的。在每个redis节点上都挂载着一个dynomite代理,每个代理持有一个tokens,一致性hash的分配就是根据这个tokens来的,tokens计算规则:从0开始 token = (4294967295 / numberOfNodesInRack) * nodeIndex。每个rack上存在节点都是可以不同的,不需要对应,因为每个rack上的tokens都是重新计算的。
当客户端的请求到达任意一个dynomite代理后,dynomite会根据tokens计算出这个key是否属于自己管理的节点,如果不是的话,会把请求发送到对应的dynomite代理上。
同时,还会把这个请求发送到其他的rack的dynomite代理上,以此来完成rack间的数据同步,这个rack间的数据同步时异步的,但是当我们要求强一致性的时候,可以通过配置参数,当有多少个rack完成数据写入时,才返回结果,根据对一致性要求程度的不同来设置不同的参数
简单的异地多活高可用方案:
1、两地各键一个datacent
2、每个datacent中建立两个rack
3、每个rack上的redis-server为一个sentinel集群,dynomite高可用通过一个redis上挂载多个dynomite实现
4、sentinel集群通过client-reconf-script脚本,在master节点发生switch操作时,自动去修改dynomite代理地址指向的redis server地址
优点:
1、部署简单,分别部署redis和dynomite即可使用
2、支持各种redis连接工具
3、只要有一个节点存活即可使用,适合小数据量使用
4、支持redis、memcahe等多种解决方案
6、dynomite的高可用方案。
对应的服务调用方连接多个dynomite client,每个dynomite client连接多个rack,这样server在调用任意一个dynomite client时即可查询对应数据,当某个client异常无法服务时,server调用其他client。由于每个rack直接数据互相备份。所以当某个rack发生异常时,则dynomite client则使用其他rack。从而保证只要有一个dynomite client和一个rack存在时,业务即可正常使用。
以上为Redis高可用方案相关内容。学习了解Redis相关知识,对高可用解决方案有更深的理解,有利于项目中对其灵活应用。