• redis集群


    哨兵模式

    1主n从

    原理:client端先请求哨兵,哨兵返回主master的ip,client端通过ip访问redis服务。

      哨兵也是一个程序,监控redis服务器情况,对外有服务端口。

    问题:client端一直只访问一个节点,单台服务器内存不能提供到很大。

    高可用集群模式

    n主n*m从,多个子集群

    搭建集群步骤

    待完成...

    复制因子:1个主节点配几个子节点

    分片:理论上划分出16384个槽位,每个集群上大体上均分槽位。只有master节点分配槽位。

    命令:(在下面章节有 Redis Cluster日常操作命令)

      访问集群  redis-cli -a password -c(cluster) -h hostip -p port

      查看节点信息  cluster nodes 

        nodeid ip:port master ... connect 分配的槽位范围

        nodeip ip:port slave master_nodeip ..

        一般主节点和从节点不在同一台机器上,如机器出故障,这个集群就全部有问题,不能做到高可用了。

    原理分析

    槽位定位算法

      槽位计算:hash_slot = cre16(key) mode 16384  

      get、set 操作都会计算key的槽位,判断在哪个集群上;

      节点信息(主节点和从节点的匹配关系)在服务器端的nodes-port.conf中(自己配置的名称);客户端也会存一份,当客户端第一次读取到redis信息后,会得到一份节点信息,缓存到jvm中。

    跳转重定向

      redirect to slot[槽位] located at ip:port

      在发现指令key不在当前节点的槽位上时,会向客户端发送一个特殊的跳转指令

    网络抖动:

      主节点之间会有心跳监控机制,若检测期间网络延迟,可能会误认为某个主节点已死,从而选举新的主节点。解决:设置超时时间。

    适宜的节点数:

      redis官方做过测试,节点不要超过1000个。

    redis集群水平扩展(扩容)

    existing_host:existing_port(任意存活的节点)目的主要是与集群联系上。

    1.新节点以集群方式启动

    主节点:

    2.redis-cli add-node new_host:new_port existing_host:existing_port(任意存活的节点)  默认设置为主节点

    3.重新分槽:redis-cli --cluster reshard existing_host:existing_port

      选择分多少,为哪个id分

      选择哪种方式:

        all  从其他所有主节点平均分片过来

        done 从某个具体的节点分片

      注意:分槽过程中,redis会阻塞。

    从节点:

    4.redis-cli add-node new_host:new_port existing_host:existing_port(任意存活的节点)

    5.默认为主节点,改为从节点,进入新节点客户端:

      redis-cli -c -h ip -p port

      cluster replicate 主节点的nodeip

    扩容的配置,在主节点心跳检测时,会进行同步

    redis集群缩容

    1.数据迁移,将当前节点的数据迁移到其他节点

    redis-cli --cluster reshard existing_host:existing_port

    source node 目标nodeip

    done

    2.删除从节点

    redis-cli del-node existing_host:existing_port node_id

    3. 删除主节点

    redis-cli del-node existing_host:existing_port node_id

    数据迁移

    涉及槽位迁移的redis服务,都会阻塞;是在节点existing存活时,做数据迁移

    两种方式:

    1. redis-cli --cluster reshard 

    2. redis-cli --cluster rebalance existing_host:existing_port 

    选举原理

    分布一致性协议,少数服从多数 

    Redis Cluster日常操作命令

    https://www.cnblogs.com/kevingrace/p/7910692.html

  • 相关阅读:
    【原创】绝对居中
    MSSQL数据库各角色权限
    如何升级至 XHTML?
    XHTML 语法
    5.4 删除一个元素节点或者文本节点
    Ajax实现无刷新的获取数据并绑定到GridView,以及无刷新更新数据[转]
    鼠标滑过时显示图片内容隐藏和鼠标滑过图片隐藏内容显示的两种小方法
    纯CSS3魔方的制作
    201920201学期 20192415 《网络空间安全专业导论》XOR加密
    201920201学期 20192415 《网络空间安全专业导论》第四周学习总结
  • 原文地址:https://www.cnblogs.com/hongyedeboke/p/12825648.html
Copyright © 2020-2023  润新知