首页 > 数据库 >Redis:七、集群

Redis:七、集群

时间:2023-02-24 21:36:00浏览次数:46  
标签:Redis redis 从机 集群 主机 服务器 ruby

@

目录


一、集群是什么?

集群:集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。

集群的作用:

  • 分散单台服务器的访问压力,实现负载均衡;
  • 分散单台服务器的存储压力,实现可扩展性;
  • 降低单台服务器宕机带来的业务灾难。

二、集群的存储结构设计

在这里插入图片描述
对于输入的一个key,不是直接将其存储到某台服务器中,而是通过算法设计计算出应该存放的位置,之后再存储。

在这里插入图片描述

如果此时集群中加入了新的服务器,那么各个服务器需要需要给出各自的部分空间组成新的存储空间(给出的空间称为槽)。各个机器持有一定的槽,当加机器时分出自己的部分槽给新的机器,减机器时再将这些槽返回给其余机器。
不管多少台服务器,槽(slot)的总数不变都是16387,但是随着空间的增大每个槽的内存变大了。从而实现了扩容。

在这里插入图片描述
各个数据库相互通信,每个数据库都持有所有槽的编号数据。
当一个key经过两次算法计算得到具体的位置数值,如果此时访问A会去A中查找,如果命中了直接返回。如果一次未命中,则告知具体的位置直接去查找。

  • 槽用来区分数据的存储空间;
  • key 用来加密后确定数据的存储位置;
  • 一次命中或者两次命中就能够找到我们的数据。
  • 主机有槽但是从机没有槽,从机需要从主机那里复制过来。

三、集群的搭建

  1. 修改配置文件
# 开启集群
cluster-enabled   yes

# 集群中单台机器的配置文件(每台机器不同需要区分开)
cluster-config-file  nodes-6379.conf     

# 机器下线时间(下线多久后得到反馈)
cluster-node-timeout 10000
  1. 安装 ruby
    由于 redis 集群需要使用 ruby命令,因此我们需要安装 ruby,步骤如下:
yum install ruby  #安装ruby
yum install rubygems  #ruby的包管理器gems,运行gem文件
  1. 启动六个redis实例(redis-server xxx.conf)
  2. 搭建集群(新版本已经不推荐使用ruby脚本的方式来搭建集群了):
    切换到 redis安装目录下的src目录下,执行里面的 redis-trib.rb ruby脚本文件
    ./redis-trib.rb create --replicas 1 主机1ip:port 主机2ip:port .... 从机1ip:port 从机2ip:port .....
    在这里插入图片描述
    新版本建议使用:
    redis-cli --cluster create 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 --cluster-replicas 1
    在这里插入图片描述5. 数据存取
    连接客户端时使用: redis-cli -c -p xxx 这样能够做到自动路由到数据存储点
    在这里插入图片描述

四、主从下线和主从切换

1. 主从下线

  • 如果从机宕机: 从机宕机后不影响主机和其余机器,当从机恢复后重新从主机那里同步数据,恢复slave身份。
    在这里插入图片描述
  • 如果主机宕机: 主机宕机后会从从机中选举出一个服务器作为新主机。这时即使原本的主机恢复,它的身份就变为了从机。

在这里插入图片描述

总结

  • Cluster配置
    在这里插入图片描述
  • Cluster节点操作命令
    在这里插入图片描述

参考文章:
Redis集群的简单搭建
DNS递归查询与迭代查询

标签:Redis,redis,从机,集群,主机,服务器,ruby
From: https://www.cnblogs.com/istitches/p/17153149.html

相关文章

  • Redis:三、持久化操作
    Redis系列文章目录@目录Redis系列文章目录一、Redis配置文件解析INCLUDES包含GENERAL通用SECURITYLIMITS限制二、Redis持久化---RDB方式2.1RDB(RedisDataBase):2.2......
  • Redis:二、jedis线程池
    中间件---Redis@目录中间件---Redis前言一、什么是jedis二、使用步骤1.Jedis读写redis数据(案例)2.编码2.1设定业务方法:2.2设定线程类,模拟用户调用:2.3设计redis......
  • Redis设计与实现—对象
    前言 前面介绍了Redis底层的数据类型,但是Redis常用的五种数据结构是怎样的呢?@目录前言一、对象类型介绍1.1概念1.2对象类型和编码1)type:类型2)encoding:编码和底层实现......
  • Redis设计与实现—复制原理
    前言Redis中的复制命令原理@目录前言一、旧版复制原理1.1同步1.2命令传播1.3旧版复制的缺陷二、新版复制原理2.1部分重同步2.1.1复制偏移量2.1.2复制积压缓冲区2......
  • Redis设计与实现—简单动态字符串、链表、字典
    前言《Redis设计与实现》数据结构部分有关字符串类型介绍。@目录前言一、数据结构——简单动态字符串1.1SDS定义1.2SDS与C字符串的区别1.2.1常数复杂度获取字符串长度......
  • Redis设计与实现—事件机制
    前言Redis内部消息通信机制学习和了解@目录前言一、Redis中事件的分类文件事件文件事件处理器I/O多路复用程序的实现文件事件处理器时间事件时间事件怎么处理关键的时......
  • Redis设计与实现—数据库与过期键策略
    前言深入了解一下Redis内存机制如何存储数据,以及对于过期数据采取何种策略来清理。@目录前言一、Redis服务器中的数据库二、数据库键空间2.1数据存储——键空间dict2.......
  • Redis设计与实现—跳跃表、压缩列表
    前言Redis设计与实现读书笔记,基础数据结构部分——跳跃表与压缩列表@目录前言一、跳跃表1.1跳跃表概念1.2Redis中跳跃表的实现1.3跳跃表节点(zskipListNode)1.4手动......
  • redis(4)String字符串
    前言Redis中有5大数据类型,分别是字符串String、列表List、集合Set、哈希Hash、有序集合Zset,本篇介绍Redis的字符串String Redis字符串String是Redis最基本的类型,你可......
  • Eureka高可用集群服务端和客户端配置
    微服务应用中,生产环境一般都需要保障服务注册中心的高可用!高可用也分好几个等级,例如:同数据中心或区(Zone)高可用——》同地区(Region)跨数据中心或区(Zone)高可用——......