您的位置:首页 > 数据库 > Redis

redis4.0、codis、阿里云redis 3种redis集群对比分析

2017-08-24 14:18 281 查看
点击查看全文

本文对redis4.0版本的cluster,codis,以及阿里云redis 3种集群进行了对比分析。


1、架构对比


1.1、redis 4.0 cluster

redis 4.0版本的集群是去中心化的结构,集群元数据信息分布在每个节点上,主备切换依赖于多个节点协商选主。

redis 提供了redis-trib 工具做部署集群及运维等操作。

客户端访问散列的db节点需依赖smart client,也就是客户端需要对redis返回的节点信息做判断选择路由等操作。例如客户端请求一个节点,如果所请求的key不在该节点上,客户端需要判断返回的move或ask等指令,重定向请求到对应的节点。


1.2、codis

codis由3大组件构成:
codis-server : 修改过源码的redis, 支持slot,扩容迁移等
codis-proxy : 支持多线程,go语言实现的内核
codis Dashboard : 集群管理工具

提供web图形界面管理集群。

集群元数据存在在zookeeper或etcd。

提供独立的组件codis-ha负责redis节点主备切换。

基于proxy的codis,客户端对路由表变化无感知。客户端需要从codis dashhoard调用list proxy命令获取所有proxy列表,并根据自身的轮询策略决定访问哪个proxy节点以实现负载均衡。


1.3、阿里云redis

阿里云的redis集群版由3大组件构成:
redis-config : 集群管理工具
redis-server : 优化过源码的redis,支持slot, 扩容迁移等
redis-proxy : 单线程,c++14语言实现的内核

架构图如下:



redis-proxy 无状态,一个集群根据集群规格可挂多个proxy节点。

redis-config 双节点,支持容灾。

集群元数据存储在rds db上。

提供独立的组件HA负责集群的主备切换等。

阿里云的redis集群同样基于proxy,用户对路由信息无感知,同时提供vip给客户端访问,客户端只需一个连接地址即可,无须关心proxy访问的负载均衡等。


2、性能对比


2.1、压测环境

在3台物理机上分别搭建了以上3种redis集群。每台物理机千兆网卡,24核cpu,内存189G。3台物理机分别跑压测工具memtier_benchmark、codis proxy/阿里云proxy、redis server。redis server使用各种集群配套的redis内核。

固定key size 32个字节,set/get 操作比例为1:10。每个线程16个客户端。连续压测5分钟,分8个, 16个, 32个, 48个, 64个线程压测。

因为redis4.0集群需要额外的客户端选择节点,而memtier_benchmark不支持,所以使用了hashtag 来压测redis4.0。

每个集群有8个master db, 8个slave db, aof打开。aof rewrite的最小buffer为64MB。

压测的对象分别为单个redis 4.0 节点, 单个阿里云redis-proxy, 单核的codis-proxy, 8核的codis-proxy。

codis 使用的go版本为1.7.4。

压测结果图如下:

点击查看全文

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: