Redis我爱编程缓存

Redis集群方案总结

2016-09-29  本文已影响60510人  范安林

本文针对Redis以及redis的几种集群方案的调研日期在2016年8月,后续如果各框架有更新与本文不符,请自行甄别。

Redis回顾

Redis支持的数据结构

Redis支持的操作

Redis适用场景

redis集群实现方式

实现基础——分区

集群的几种实现方式

客户端分片

原理如下所示:

client-partition

特性

基于代理的分片

基本原理如下所示:

proxy-based-partition

特性

路由查询

基本原理如下所示:


query-routing

集群的挑战

redis集群各种方案原理

Twemproxy

Twemproxy高可用部署架构

Twemproxy特性

Twemproxy不足

Twitter内部已经不再使用。

redis-cluster

Redis Cluster模型

redis-cluster architecture

Redis-cluster原理

Redis-cluster请求路由方式

查询路由的流程如下所示:

query router of redis cluster

Redis cluster采用这种架构的考虑:

  • 减少redis实现的复杂度
  • 降低客户端等待的时间。Smart client可以在客户端缓存 slot 与 redis节点的映射关系,当接收到 MOVED 响应时,会修改缓存中的映射关系。请求时会直接发送到正确的节点上,减少一次交互。

Redis Cluster特性

Redis Cluster不足

Codis

Codis部署拓扑

Codis部署拓扑

Codis数据存储

Codis模块简介

Codis主从切换

Codis数据迁移流程

迁移过程如下所示:

迁移过程中,Codis-dashboard与proxy通过zk通信,路由表信息全部存放在zk,保证所有proxy的视图一致。
Codis如何保证数据迁移过程的正确及透明?

Codis VS Redis

对比参数 Codis Redis-cluster
Redis版本 基于2.8分支开发 >= 3.0
部署 较复杂。 简单
运维 Dashboard,运维方便。 运维人员手动通过命令操作。
监控 可在Dashboard里监控当前redis-server节点情况,较为便捷。 不提供监控功能。
组织架构 Proxy-Based, 类中心化架构,集群管理层与存储层解耦。 P2P模型,gossip协议负责集群内部通信。去中心化
伸缩性 支持动态伸缩。 支持动态伸缩
主节点失效处理 自动选主。 自动选主。
数据迁移 简单。支持透明迁移。 需要运维人员手动操作。支持透明迁移。
升级 基于redis 2.8分支开发,后续升级不能保证;Redis-server必须是此版本的codis,无法使用新版本redis的增强特性。 Redis官方推出,后续升级可保证。
可靠性 经过线上服务验证,可靠性较高。 新推出,坑会比较多。遇到bug之后需要等官网升级。
  1. 理论上,redis-cluster的性能更高,单次请求的延时低。另外,经过实测,两种架构后端单台redis-server的条件下,TPS基本没有差别。
  2. Codis的高可用依赖jodis,或者使用LVS进行高可用部署。

我们公司选择Codis的原因

Codis简单压测

单台Codis Server压测结果

三台Codis-Server的集群压测结果

压测结论

使用codis注意事项

上一篇下一篇

猜你喜欢

热点阅读