zoukankan      html  css  js  c++  java
  • Redis集群方案总结

    Redis集群方案总结

    目前,Redis中目前集群有以下几种方案:

    • 主从复制

    • 哨兵模式

    • redis cluster

    • 代理

    • codis

    • 客户端分片

    因为目前使用大范围使用就是Codis方案,因此重点会放在理解Codis方案,其余方案只会简单介绍。

    Codis

    Codis是豌豆荚公司开发的一个分布式Redis服务,对于上层调用方来说是没有感知的,可以将它是无限内存的Redis服务,有动态扩容和缩容的能力,增减Redis实例对调用方完全透明,不需要重启服务,不需要担心内存的问题;

    Codis是基于proxy-base,也就是会以一个代理的身份接收请求并且使用一致性哈希算法,将请求转发到具体的redis实例,并且一个codis-group采用主从方式,包含一个master节点和多个slave节点,如果master节点出现了问题,那么一个group中的slave节点会通过选举算法推选出新的master节点,并且通知到proxy。

    Codis由几个部分组成:

    • Codis Proxy (codis-proxy),处理客户端请求,支持Redis协议,因此客户端访问Codis Proxy跟访问原生Redis没有什么区别;

    • Codis Dashboard (codis-config),Codis 的管理工具,支持添加/删除 Redis 节点、添加/删除 Proxy 节点,发起数据迁移等操作。codis-config 本身还自带了一个 http server,会启动一个 dashboard,用户可以直接在浏览器上观察 Codis 集群的运行状态;

    • Codis Redis (codis-server),Codis 项目维护的一个 Redis 分支,基于 2.8.21 开发,加入了 slot 的支持和原子的数据迁移指令;

    • ZooKeeper/Etcd,Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息,codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy;

    • Codis FE,集群管理界面;

    • Storage,为集群状态提供外部存储;

    其余方案

    Redis cluster

    这是Redis官方提供的分布式Redis解决方案,cluster使用一致性哈希算法,每个槽对应一个node节点,将请求转发到具体的redis实例,同样的,为了集群的可访问性,每个node节点配置成主从结构,同样会利用选举算法推出一个主节点;

    cluster不足点在于:

    • 没有提供图像管理工具,对于运维来说比较复杂;

    • 命令支持不够完整,比如批量命令mget不完整,不支持事务,不支持数据库切换;

    • 集群管理和数据存储耦合,也就是说如果集群有bug,需要升级整个Redis版本;

    github

    细说分布式Redis架构设计和那些踩过的坑

  • 相关阅读:
    MapiRule例子
    P/invoke in .NET Compact Framework
    MFC C++类型学习
    Windows Mobile上实现可拖动的窗口
    在Wince下使用钩子函数
    VC++动态链接库编程之MFC规则DLL
    VC++动态链接库编程之DLL典型实例
    Using keyboard hooks in WinCE
    Override VK_TTALK & VK_TEND
    Getphonenumber获得电话号码的例子
  • 原文地址:https://www.cnblogs.com/George1994/p/10687376.html
Copyright © 2011-2022 走看看