zoukankan      html  css  js  c++  java
  • Redis Cluster 分布式集群

    1.什么是Redis Cluster

    1.Redis集群是一个可以在多个Redis节点之间进行数据共享的设施(installation)
    2.Redis集群不支持那些需要同时处理多个键的Redis命令,因为执行这些命令需要在多个Redis节点之间移动数据,并且在高负载的情况下,这些命令将降低Redis集群的性能,并导致不可预测的行为。(使用ack协议)
    3.Redis集群通过分区(partition)来提供一定程度的可用性(availability):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。
    4.Redis集群有将数据自动切分(split)到多个节点的能力。
    

    2.Redis Cluster的特点

    # 高性能:
    1.在多分片节点中,将16384个槽位,均匀分布到多个分片节点中
    2.存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16384之间)
    3.根据计算得出的槽位值,找到相对应的分片节点的主节点,存储到相应槽位上
    4.如果客户端当时连接的节点不是将来要存储的分片节点,分片集群会将客户端连接切换至真正存储节点进行数据存储
    5.客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
    6.Redis Cluster解决了redis资源利用率的问题
    
    # 高可用
    7.在搭建集群时,会为每一个分片的主节点,对应一个从节点,实现slaveof功能,同时当主节点down,实现类似于sentinel的自动failover的功能。
    

    3.槽的概念

    1.在集群中,会把所有节点分为16384个槽位
    2.槽位的序号是 0 - 16383,序号不重要,数量才重要
    3.每一个槽位分配到数据的概率是一样
    

    4.redis故障转移

    1.在集群里面,节点会对其他节点进行下线检测。
    2.当一个主节点下线时,集群里面的其他主节点负责对下线主节点进行故障移。
    3.换句话说,集群的节点集成了下线检测和故障转移等类似 Sentinel 的功能。
    
  • 相关阅读:
    java中finally的使用
    String基本方法
    java文件读写常用方法
    java笔试面试(转载)
    单链表的反转
    单链表的冒泡排序
    Java快速教程
    Java快速教程
    后海日记(4)
    后海日记(3)
  • 原文地址:https://www.cnblogs.com/Applogize/p/13462048.html
Copyright © 2011-2022 走看看