• Redis之cluster集群


    Redis之cluster集群

    1.集群介绍

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FgyN9deS-1656679467436)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701195734260.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fkj7gDkj-1656679467437)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701195820347.png)]

    2.集群作用

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

    3.集群数据存储设计

    %16384是取模运算
    如果又添加了一个服务器,或者有一个服务器突然宕机了,怎么办?

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhZAyE1t-1656679467438)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701195945626.png)]

    37所在的小方框叫作”槽“

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7mgz9Pk-1656679467438)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701200237166.png)]

    如果现在又添加了一个服务器,或者有一个服务器突然宕机了,怎么办?
    如下举例是3个服务器,又添加了一个服务器,变成了4个,则其他三个服务器每人掏出来一部分key给新来的服务器,进行优化。
    所谓的增添节点与去节点其实是改变槽所存储的位置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-INs7krGq-1656679467438)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701201006967.png)]

    4.集群内部通讯设计

    1.加入现在有客户端进行访问数据库,进行key的查找,key被经过两个算法计算以后,得到key对应的存储槽的位置,假如计算的结果是A里面的35号槽,如果一次命中的话就直接返回,没有命中的话,35号槽会根据这个key进行查找,告诉客户端是在B那个槽里面,客户端会再去B里面的槽进行查找(注意:不是A去查找,是客户端再去查找,避免客户端自己多次去别的地方自己一个个挨着找)
    2.最多两次即可命中
    注意:各个数据库里面的槽的编号不一定是连续的,是散的

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JkqhRdyG-1656679467439)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220701201427295.png)]

    5.集群搭建方式

    1.原生安装(单条命令)
    1)配置服务器(3主3从)
    2)建立通信(Meet)
    3)分槽(Slot)
    4)搭建主从(master-slave)
    2.工具安装(批处理)

    6.cluster配置

    1.cluster-enabled yes|no
    把该服务器添加为节点
    2.cluster-config-file
    cluster配置文件名,该文件属于自动生成。
    如果我们给指定名字的话,会自动生成该指定名字的cluster-config-file ;
    如果我们给未指定名字的话,会自动生成一个默认名字的cluster-config-file ;
    举例:cluster-config-file nodes-6379.conf
    仅用于快速查找文件并查询文件内容。
    (注:我们尽量给指定名字,因为在大量节点的情况下默认生成的cluster-config-file文件名字都一样,容易混淆)
    3.cluster-node-timeout
    节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
    4.cluster-migration-barrier
    master连接的slave最小数量

    7.cluster节点操作命令

    1.查看集群节点信息

    cluster nodes
    
    • 1

    2.进入一个从节点 redis,切换其主节点

    cluster replicate <master-id>
    
    • 1

    3.发现一个新节点,新增主节点

    cluster meet ip:port
    
    • 1

    4.忽略一个没有solt的节点

    cluster forget <id>
    
    • 1

    5.手动故障转移

    cluster failover
    
    • 1

    8.redis-trib命令

    redis-trib相当于一个脚本,把cluster的一些命令进行优化,实际中用cluster自带的命令或者redis-trib命令都可以

    1.添加节点

    redis-trib.rb add-node
    
    • 1

    2.删除节点

    redis-trib.rb del-node
    
    • 1

    3.重新分片

    redis-trib.rb reshard
    
    • 1
  • 相关阅读:
    RabbitMQ 几种模式
    地图搜索 | EXCEL中搜索地址、提取坐标至表格
    LinkList集合方法(自写)
    day44
    java 字节流写入文件内容实现换行
    华为机试真题 Python 实现【日志首次上报最多积分】【2022.11 Q4 新题】
    【PLC】三菱plc控件安装 component Movedata had the following error ... Error Number:-119
    什么是接口测试,我们如何实现接口测试?
    Jmeter内置变量 vars 和props的使用详解
    前端实现文件预览(pdf、excel、word、图片)
  • 原文地址:https://blog.csdn.net/qq_53267860/article/details/125565507