赞
踩
一般情况下,为了减轻数据库的访问压力,我们会把热点数据保存在内存中而不是直接从后端数据库中读取。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.数据通过异步复制,不保证数据的强一致性。
以上就是今天要讲的内容,本文仅仅简单介绍了去中心化集群的配置使用,想要更好的使用去中心化集群还需要我们更深入的学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。