zoukankan      html  css  js  c++  java
  • Redis分片技术(Redis Cluster)

     

    1. redis Cluster介绍

    (1) Redis-Cluster是一种服务器Sharding技术,Redis3.0以后版本正式提供支持

    (2) 特点:

    ① Redis_cluster没有使用一致性hash,而是引入了hash槽的概念。Redis_Cluster中有16384(214次方)hash槽,每个key通过CRC16校验后对16383取模来决定放置哪个槽。Cluster中的每一个节点负责一部分hash

    ② 实例

    1) 比如集群中存在三个节点,则可能存在的一种分配如下

    1. 节点A包含0-5500号哈希槽
    2. 节点B包含5501-11000号哈希槽
    3. 节点C包含11001-16384号哈希槽
    4. 其他方案

    (1) Redis Sentinel集群+Keepalived/Haproxy

    ① 底层是Redis Sentinel集群,代理着Redis主从,web端通过VIP提供服务。当主节点发生故障,比如机器故障、Redis节点故障或者网络不可达,Redis之间的切换通过Redis Sentinel内部保障机制,VIP切换通过keepalived保障

    ② 优点

    1) 秒级切换

    2) 对应用透明

    ③ 缺点

    1) 维护成本高

    2) 存在脑裂

    3) Sentinel模式存在短时间服务不可用

    (2) Twemproxt

    ① 多个同构Twemproxy(配置相同)同时工作,根据hash算法,转发给对用的Redis

    ② 优点

    1) 开发简单,对应用几乎透明

    2) 历史悠久,方案成熟

    ③ 缺点

    1) 代理影响性能

    2) LVSTwemproxy会有节点性能瓶颈

    3) Redis扩容非常麻烦

    (3) Codis

    ① Codi是由豌豆荚开源的产品,涉及众多组件,其中Zookeeper存放路由表和代理节点元数据、分发Codis-config的命令;Codis-config是集成管理工具,有web界面提供使用;Codis-Proxy是一个兼容Redis协议的无状态代理;Codis-Redis基于Redis2.8版本二次开发,加入了slot支持,方便迁移数据

  • 相关阅读:
    【F#】 WebSharper框架
    【F#】 入门代码
    【F#】核心数据多线程处理的首选
    【Jetlang】一个高性能的Java线程库
    【项目管理】 并发服务设计的三种架构
    【Go】为什么用go; Golang Erlang 前世今生
    【Go】 http webserver
    Arcane Numbers 1
    给定4根长度的线段,求组成四边形的最大面积
    #410div2D. Mike and distribution
  • 原文地址:https://www.cnblogs.com/juddy/p/14817462.html
Copyright © 2011-2022 走看看