Redis集群重新分片(新增/移除节点)【理论】
admin
2023-05-21 07:23:05
0次

redis集群重新分片原理:(增加或移除节点)  

     

    以增加节点为例:

        我们只需要将已经分配给节点的哈希槽(hash slot),重新分配即可。

        注:hash slot重新分配时,如果槽中存在key-value,那么key-value也将一起被分配出去。

        

    例如:

        node1的哈希槽:0-5000

        node2的哈希槽:5001-10000

        node3的哈希槽:10001-16383

    现在新增node4:

    我们可以将node3的哈希槽调整为:10001-15000、node4的哈希槽:15001-16383

    也可以在三个现有节点中,各自分出一部分哈希槽,给新的节点。


    redis集群的重新分片操作是由redis的集群管理软件redis-trib负责执行的,

    但它不支持自动分片,需要自己计算从哪些节点上分配slot。

 

 redis集群在重新分片时,客户端获取数据原理:  


    重新分片时,集群不需要下线,并且源节点和目标节点都可以继续处理命令请求。

    

    在hash slot迁移过程中(一部分key-value在node3中,另一部分key-value在node4中)

    如果客户端向node3发送一个与数据库key有关的命令:

        1)node3会先在自己的数据库里面查找请求的key,

            如果找到,直接执行客户端发送的命令。

        2)如果没找到,node3给客户端返回一个ASK错误,指引客户端转向node4,

             并且客户端需要再次发送想要执行的key相关的命令。    

        3)客户端转向node4,首先发送ASKING命令,然后再次发送想要执行的key相关的命令。

             如果直接发送想要执行的key相关的命令,node4此时并不处理,

             因为key所在的槽还未迁移完,槽还属于node3,会返回错误给客户端。

             但如果先发送ASKING命令,node4在执行key相关的命令时,

             不仅会检查key所属槽是否属于自己,

             还会检查migration_slots_to数组(正在迁往自己的槽)

             判断key相关的槽是否正在迁往自己,如果是的话,则执行key相关的命令。


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...