Redis-Cluster集群

Redis-Cluster

首先了解下Redis集群的概念?

集群

就是将很多台服务器组成的一个网络.也就是说是多台服务器集中在一起,实现同一业务

但是为何要集群?

因为如果一个项目,部署在一个服务器上(tomcat),那么所有的请求都会由这一个服务器发出,所以这个服务器的压力就会很大,我们就会需要多台服务器来分摊压力

集群的两大特性

1.可扩展性

集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。是动态的添加服务器

2.高可用性

如果有一个集群中有某个服务器崩溃了,那么另外一个服务器可以顶上。增强了其可用性,

集群的两大能力

1.负载均衡

负载均衡实际上就是多个服务器分摊压力,打个比方:比如一位营业员A平常工作中能够接待10位顾客,然而节日期间顾客众多,这位营业员就接待不过来了,效率就降低了,甚至营业员可能就崩溃了,那么就需要再招聘一位营业员B来分摊顾客,减轻A的压力.

2.错误恢复

错误恢复 :假设两台服务器执行同一任务,A服务器由于某种原因挂了,那么B服务器接着执行该任务的过程就是错误恢复,实际上就是B顶替A并接收A的所有数据继续完成工作

分布式

分布式的概念?

分布式就是指 将不同的业务分布在不同的地方,web应有和数据库服务分开.将不同业务分布到不同集群,比如一个项目中分为不同模块,每一个模块都是单独运行

分布式和集群的相同点和区别

相同点:
都是处理高并发,而且都需要多台服务器协同.一般在一个系统中同时存在分布式和集群.
不同点:
分布式中不同服务器处理的是不同业务.而集群处理的是同一业务

Redis集群的三种不同方案

我们一般为何要用Redis做集群呢?

首先它有三个优点:
1)防止单点故障(防止一台服务器崩溃导致其他机器也跟着挂掉)
2)处理高并发-太多请求一台服务器搞不定
3)处理大量数据-太多内存数据一台服务器搞不定

方案1:主从复制

主从同步:主机(Master)自动将数据同步到从机(Slave)
读写分离:主机(Master)读取数据,而从机可以提供只读操作.
主备切换:主机(Master)和从机(Slave)同步期间,客户端仍然可以查询或者修改请求
优缺点
优点:
主机自动将数据同步到从机,可以读写分离(主机写/从机读)

缺点:
1、主机从机的宕机都会导致前端部分读写请求失败,需要重启机器或手动切换前端IP才能恢复
2、主机宕机,宕机前有部分数据未能及时同步到从机,那么切换IP时就会造成数据不一致的情况,降低了系统可用性
3、Readis只解决高并发,较难支持在线扩容(集群数量)

方案2:哨兵模式

当主服务器中断服务后,可以将一个从服务器升级为主服务器,以便继续提供服务,但是这个过程需要人工手动来操作。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。

哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。
(1)监控主服务器和从服务器是否正常运行。
(2)主服务器出现故障时自动将从服务器转换为主服务器。
优缺点:
优点:具备主从复制方案的所有优点,并且主从可以自动切换,可用性更加高一点
缺点:较难支持在线扩容(集群数量),浪费内存

方案3:Redis-Cluster集群(优于其他,采纳)

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他节点连接(并且所有的 redis 节点彼此互联(PING-PONG 机制))

Redis-Cluster集群

首先 Redis-Cluster集群是Redis官方提出的解决方案,但是为何要采用Redis-Cluster集群做最优方案呢?
正是因为Cluster模式实现了Redis的分布式存储,就是每个Readis节点上存储不同的内容,而这就要说到Cluster的分布式存储机制-槽

什么是分布式存储机制-槽?

1、redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护
node<->slot<->value
2、Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。另外Cluster负责维护
例如三个节点:槽分布的值如下:
SERVER1: 0-5460
SERVER2: 5461-10922
SERVER3: 10923-16383


集群环境搭建

1、首先让集群正常运行至少得需要3个主节点,其余三个作为各个主节点的从节点。同一台电脑,不同端口号[6379-6384]模拟(伪集群)!
安装并拷贝6个服务器
在这里插入图片描述2、进行配置
打开每个Redis目录下的文件 redis.windows.conf,修改里面的端口号分别对应相对应的文件夹名:6379、6380、6381、6382、6383、6384。
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes

3、编写启动脚本,或者进入每个端口命名的文件夹下启动服务方便启动
编写一个 bat 来启动 redis,在每个节点目录下建立 启动.bat,内容如下:
title redis-6379 redis-server.exe redis.windows.conf

4、安装Ruby
redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境
在这里插入图片描述5、安装Redis的Ruby驱动redis-xxxx.gem
下载地址 :https://rubygems.org/pages/download
在这里插入图片描述

下载后解压,当前目录切换到解压目录中,如 D:\JavaSoftware\redis-cluster\rubygems-3.0.6 然后命令行执行 ruby setup.rb

再用 GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis
在这里插入图片描述
6、启动每个节点并且执行集群构建脚本
点击每个节点start.bat进行启动
拷贝redis-trib.rb到6379的redis节点
执行命令:
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

在这里插入图片描述

在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下:

在这里插入图片描述
在这里插入图片描述最后一步就是测试了!

使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息
命令:redis-cli –c –h ”地址” –p “端口号” ; c 表示集群
在这里插入图片描述1)查看集群的信息,命令:cluster info
在这里插入图片描述2)命令: info replication
主:
在这里插入图片描述从:
在这里插入图片描述3)查看各个节点分配slot,命令 cluster nodes
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值