文章目录

  • 什么是集群
  • 为什么需要集群 ,集群有什么好处?
  • 集群的特点
  • 两大关键特性
  • 两大能力
  • 》》》》》》》面试题 :
  • 集群和分布式区别
  • 为什么redis要做集群
  • 如果要做集群 应该怎么做
  • 方案一 主从复制
  • 优缺点
  • 方案二: 哨兵模式
  • 优缺点
  • 方案三: Redis-Cluster
  • redis集群搭建步骤



什么是集群

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

redis集群意义 redis做集群的意义_服务器

为什么需要集群 ,集群有什么好处?

解决 高并发 大数据的问题

一台服务器不能满足开发需要的时候,需要多台服务器来支持。这个时候就需要做集群,但是集群往往伴随着分布式

redis集群意义 redis做集群的意义_redis_02

集群的特点

两大关键特性

  1. 可扩展性
    集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。可以动态的去扩展的服务器
  2. 高可用性 --> 具备容错的功能 (错误恢复)
    集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性
    当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器

两大能力

  1. 负载均衡 -->把请求 分配到不同的服务器里面
    负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源
  2. 错误恢复
    由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
    当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器

负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的

》》》》》》》面试题 :

集群和分布式区别

  • 相同点
    解决高并发 和 大数据的问题
  • 不同点

集群 是 多个服务去实现同一个功能

分布式 不同的服务器实现不同的功能

为什么redis要做集群

  1. 防止单点故障
  2. 处理高并发-太多请求一台服务器搞不定
  3. 处理大量数据-太多内存数据一台服务器搞不定

如果要做集群 应该怎么做

方案一 主从复制

redis集群意义 redis做集群的意义_redis_03

优缺点

优点: 完成主从复制 ,

缺点:不能完成容错或者恢复的功能(keepalive) 获取 手动重启

扩展服务器比较麻烦

方案二: 哨兵模式

Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能

redis集群意义 redis做集群的意义_redis_04

优缺点

有点:完成自动的主从切换

缺点:Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂

方案三: Redis-Cluster

好处:可以完成分布式存储问题,解决容量问题

Redis-Cluster 采用无中心结构

redis集群意义 redis做集群的意义_redis_05

redis集群搭建步骤

(1) 拷贝6份 redis文件

修改 端口 为 6379 , 6380,6381,6382,6383,6384

修改配置

cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes

(2) 编写一个启动脚本

在对应的文件夹里面新创建文件 startup.bat

title redis-6379
redis-server.exe redis.windows.conf

(3) 安装ruby环境

傻瓜式安装

(4) 安装ruby驱动环境

\rubygems-2.7.7 目录里面执行文件 ruby setup.rb

(5)通过驱动安装redis

切换到6379文件夹里面 安装 redis

gem install redis

(6)启动服务 创建集群

启动6379-6384服务

创建集群

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

·