欢迎使用CSDN-markdown编辑器

来源:互联网 发布:替代windows cmd 编辑:程序博客网 时间:2024/06/05 19:32

1. Redis集群

Redis 3.0+才支持集群功能,Redis集群是由多个Redis服务器组成的分布式网络服务集群,
每一个Redis服务器称为节点Node,节点之间会互相通信,两两相连。Redis集群无中心节点。

2. Redis集群节点复制

Redis集群的每个节点都有两种角色可选:主节点master node、从节点slave node。其中主节点用于存储数据,而从节点则是某个主节点的复制品。
当用户需要处理更多读请求的时候,添加从节点可以扩展系统的读性能,因为Redis集群重用了单机Redis复制特性的代码,所以集群的复制行为和我们之前介绍的单机复制特性的行为是完全一样的

3. Redis集群故障转移

Redis集群的主节点内置了类似Redis Sentinel(哨兵)的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这一点,并对已下线的主节点进行故障转移。集群进行故障转移的方法和Redis Sentinel(哨兵)进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Redis Sentinel(哨兵)。

4. Redis集群分片

集群将整个数据库分为16384个槽位slot,所有key都属于这些slot中的一个,key的槽位计算公式为slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。集群中的每个主节点都可以处理0个至16383个槽,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。

5. Redis集群Redirect转向

1) 由于Redis集群无中心节点,请求会发给任意主节点。
2) 主节点只会处理自己负责槽位的命令请求,其它槽位的命令请求,该主节点会返回客户端一个转向错误。
3) 客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求。

6. Redis 集群搭建

1) 安装编译工具插件
yum install gcc tcl –y

2) 解压安装包,进入解压后的文件,编译并安装,同时指定安装路径

3) 配置环境变量,并重新加载环境变量文件

4) 安装ruby
yum install ruby rubygems -y

5) redis模块安装
在线安装
gem install redis
离线安装
https://rubygems.org/gems/redis
gem install –local redis-3.3.0.gem

6) 创建端口对应的文件夹,并在文件夹内添加配置文件,配置文件内容为
开启集群模式
cluster-enabled yes
指定不冲突的端口
port <对应端口号>

7) 在各个节点分别启动redis服务,一定要在配置文件所在路径下启动
redis-server redis.conf

8) 为节点分配槽位
在解压目录下的src中执行:
./redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

9) 连接客户端,最后已经要加上 -c参数
redis-cli -p 7000 -c

7. Redis集群总结

1) Redis集群是一个由多个节点组成的分布式服务集群,它具有复制、高可用和分片特性。
2) Redis的集群没有中心节点,并且带有复制和故障转移特性,这可用避免单个节点成为性能瓶颈,或者因为某个节点下线而导致整个集群下线。
3) 集群中的主节点负责处理槽(储存数据),而从节点则是主节点的复制品。
4) Redis集群将整个数据库分为16384个槽,数据库中的每个键都属于16384个槽中的其中一个。
5) 集群中的每个主节点都可以负责0个至16384个槽,当16384个槽都有节点在负责时,集群进入上线状态,可以执行客户端发送的数据命令
6) 主节点只会执行和自己负责的槽有关的命令,当节点接收到不属于自己处理的槽的命令时,它将会处理指定槽的节点的地址返回给客户端,而客户端会向正确的节点重新发送。
7) 如果需要完整地分片、复制和高可用特性,并且要避免使用代理带来的性能瓶颈和资源消耗,那么可以选择使用Redis集群;如果只需要一部分特性(比如只需要分片,但不需要复制和高可用等),那么单独选用twemproxy、Redis的复制和Redis Sentinel中的一个或多个。

原创粉丝点击