zoukankan      html  css  js  c++  java
  • redis(五)Redis-Cluster主要部件

    概述

        文章将会总体介绍Redis Cluster的集群模式,介绍之前我们先来看一下 Redis-Sentinel 和 master-slave 和 Redis Cluster 的关系。Redis Cluster 可以是Redis集群的一种方式,可以认为是分片集群,而 master-slave 则是主从集群。     上面说到redis-cluster 是分片集群,简易图可以将下图。

    1297993-20200108151626342-514698059.png

        使用redis-cluster可以得到以下的收益 :

    • 对数据自动分片到多个节点
    • 继续运行当一部分节点出错的时候,或是当不能与剩下的 cluster 通信的时候。

    重要组件

    Redis Cluster 数据分片

        没有使用一致性hash来分片数据,而是使用一个叫 “hash slot”的东西,那样不同的键值对将会分配到不同的node中去,首先用key得到 hash_slot ,然后根据hash_slot 得到数据存放的节点,例如 :

    • Node A 包括 0 到 5500 的 slot 范围
    • Node B 包括 5501 到 11000 的 slot 范围 有个 key p, p的 hash_slot 为 400,那么就应该去 Node A 查找,假如我希望两个键值对分配到同一个node 中去可以使用 hash_tags来标识,分配到同一个node 可以进行事务处理,一些原子性操作。

    hash_slot 的计算公式为 :

    HASH_SLOT = CRC16(key) mod 16384
    

    Redis Cluster TCP 端口

    Redis Cluster 节点需要开放两个端口,高位端口号 = 低位端口号 + 10000 ;例如,Node A 的第端口号为 6379 ,高的就为 16379

    • 低位端口号: command port , 处理来自客户端的命令请求
    • 高位端口号: 用于 cluster bus ,用于 node 节点之间的协议,cluster bus 用来异常发现,配置更新,异常重启和认证等。

    Redis Cluster master-slave model

        可以看到开头的那种图,p1包含2个 slave,它们都拥有和 master 一样的数据,而 master -slave 之间的数据复制使用的是异步复制,于是也就造成了Redis Cluster is not able to guarantee strong consistency (Redis Cluster 并不能保证前一致性)

    Redis Cluster 一致性保证

        假如A1,B1,C1是A,B,C的分片从节点,而Z1是客户端,节点脑裂发生,A,A1,B1,C1,C 在一边,而 B 和 Z1 在另外一边,此时,假如是短时间内恢复了没有影响,长时间,使得 B1 成为了新的 master ,那么Z1 对 B 的写入将丢失。     Z1中的 maximum window 是保存 Z1将要发送给 B 的数量,当 B1 成为 master 时,在另外一边的 B 相关的节点停止接受写入,这也是redis cluster 不能保证强一致性的地方,它有可能会导致写丢失。

    总结

    文章总结了 redis cluster 的几个重要组件,让我们清晰地有个认识,在后面的文章我们会详细地介绍实现的细节。

    参考资料

    官网文档

    • https://redis.io/topics/partitioning
    • https://redis.io/topics/cluster-spec
    • https://redis.io/topics/cluster-tutorial (本文参考这一篇) 搭建参考
    • https://www.cnblogs.com/renpingsheng/p/9833740.html(redis-cluster集群搭建参考)
    • https://www.cnblogs.com/renpingsheng/p/9862485.html (redis-cluster知识要点)
  • 相关阅读:
    团队作业—第二阶段08
    团队作业—第二阶段07
    java--Map使用实现模拟斗地主洗牌发牌
    课程作业08 MVC框架具体使用
    课程作业 MVC框架
    课堂作业06_23种设计模式
    课堂作业05 《6种质量属性战术》
    课堂作业04
    课堂作业03
    架构漫谈阅读笔记
  • 原文地址:https://www.cnblogs.com/Benjious/p/12877385.html
Copyright © 2011-2022 走看看