Redis集群方案总结

Redis集群方案总结

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

  • 主从复制git

  • 哨兵模式github

  • redis clusterweb

  • 代理redis

  • 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架构设计和那些踩过的坑

相关文章
相关标签/搜索