Redis集群搭建——去中心化集群


前言

一般情况下,为了减轻数据库的访问压力,我们会把热点数据保存在内存中而不是直接从后端数据库中读取。Redis虽然是一个极其优秀的非关系型数据库,但是在大型网站应用,热点数据的并发访问量达到百万千万是很正常的,这个时候单个redis就不能够保证数据量的访问和存储。这个时候我们就可以搭建redis集群,可以保证数据的分散存储与数据的一致性,实现redis的高可用,发生故障时保证程序的正常运行与数据的保存。
Redis有几种集群模式,每种模式都有它各自的特点,下面将介绍redis的集群搭建模式之一:去中心化集群。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是去中心化集群?

redis的主从模式(Redis Cluster),原理采用hash槽的概念,预先分配16384个卡槽,并且将该卡槽分配给提供具体服务的Redis片区节点用来存放每个Redis主机对应卡槽范围的数据,对于每次读写操作的的Key值都会计算对应的卡槽数,根据计算出的卡槽数会把Key存入到卡槽区间范围包含这个卡槽数的Redis主机中,或者从包含这个Key卡槽数的卡槽范围的Redis主机中获取Key。
在这里插入图片描述

二、主从模式集群的搭建案例

必须保证aof开启,保证redis中没有数据。
1.创建新的目录存放redis.conf

1.打开redis安装目录,新建目录
mikdir decentralized-cluster
2. 把redis配置文件复制到新建目录,我的是decentralized-cluster
cp  redis.conf  redis安装目录/decentralized-cluster

2.进入decentralized-cluster目录,修改redis.conf文件名和内容,开启RDB快照并且修改快照文件保存名字

mv redis.conf redis8001.conf
vi redis.conf
conf文件修改内容:
daemonize yes
appendonly yes
# 开启集群
cluster-enabled yes             833行
# 集群的配置文件,该文件自动生成   
cluster-config-file nodes-8001.conf  841行
# 集群的超时时间
cluster-node-timeout 5000         847行

在这里插入图片描述
在这里插入图片描述

3.再复制5个配置文件,修改对应的端口为8002,8003…,对应文件名appendonly8002.aof…对应的#集群的配置文件, cluster-config-file nodes-8002.conf…(如上)

cp redis.conf redis8002.conf
cp redis.conf redis8003.conf
cp redis.conf redis8004.conf
cp redis.conf redis8005.conf
cp redis.conf redis8006.conf

4.启动redis时指定上面的6个配置文件

redis-server redis8001.conf
redis-server redis8002.conf
......

在这里插入图片描述

5.为主节点分配槽以及分配从节点
cluster-replica:每个主节点跟随的从节点的个数

redis-cli --cluster create --cluster-replicas 1 主机IP:端口 …

redis-cli --cluster create --cluster-replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004  127.0.0.1:8005  127.0.0.1:8006

在这里插入图片描述

这样一个简易的去中心化集群就配置成功了

三、主从模式的优缺点

优点:
去中心化模式
数据按照槽存储分布在多个节点,节点间数据共享,可动态调整数据分布;
可扩展性:可线性扩展到 1000 多个节点,节点可动态添加或删除;
高可用性:部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升;
降低运维成本,提高系统的扩展性和可用性。
缺点:
1.Client 实现复杂,驱动要求实现 Smart Client,缓存 slots mapping 信息并及时更新,提高了开发难度,客户端的不成熟影响业务的稳定性。目前仅 JedisCluster 相对成熟,异常处理部分还不完善,比如常见的“max redirect exception”。
2.节点会因为某些原因发生阻塞(阻塞时间大于 clutser-node-timeout),被判断下线,这种 failover 是没有必要的。
3.数据通过异步复制,不保证数据的强一致性。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了去中心化集群的配置使用,想要更好的使用去中心化集群还需要我们更深入的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值