redis集群方案总结

一,公司现在正在使用的集群方案(redis+sentinel)

通过多个Sentinel一起监控redis集群,检测到master不可用时,通过投票来决定master是否需要切换。
Sentinel 之间互相检测(通过在共同检测的master中写入信息来进行),Sentinel
只需要配置master节点,自动通过master来获取已经连接的slave列表。当其中的某一个Sentinel
检测到master宕机之后,标示master为SDOWN,向其他的Sentinel 发送SENTINEL
is-master-down-by-addr命令来进行投票,投票确认之后标识为ODOWN,开始选择一个新的master,并且进行切换。

缺点:

1. 没有合适的客户端,需要自己处理各种事件。

2. 目前还没有release。

二,由Twitter开源的Twemproxy集群方案

主要是由Twemproxy作为代理,来接受多个程序的访问,按照路由规则,转发给后台的各个Redis服务器,再原路返回,这个方案解决了单个Redis实例承载能力的问题。

当然,Twemproxy本身也是单点,需要用keepalived做高可用方案。

缺点:

无法平滑地扩容、缩容。这样就导致了在业务量突增,需增加Redis服务器;业务量萎缩,需要减少Redis服务器,对于Twemproxy而言,基本上都很难操作。

三,基于Go和C开发的codis redis(由豌豆荚开源)

(1)体系架构

Codis引入了Group的概念,每个Group包括1个Redis Master及至少一个Redis Slave,这是和Twemproxy的区别之一。这样做的好处是,如果当前Master有问题,则运维人员可以通过Dashboard"自助式"切换到Slave,而不需要小心翼翼地修改程序配置文件。

Codis还支持数据热迁移(Auto Rebalance) ,出品方修改了Redis Server源码,并称之为Codis Server)。

Codis采用预先分片(Pre_Sharding)机制,事先规定好了,分成1024个slots(也就是说,最多能支持后端1024个Codis Server),这些路由信息保存在zookeeper中,Zookeeper还维护Codis Server Group 信息,并提供分布式锁等服务。

(2)使用技巧、注意事项

1,无缝迁移Twemproxy

使用Codis-port工具,可以实现同步的Twemproxy底下的Rdis数据到你的Codis集群,同步完成后,只需要修改一下程序配置文件,将Twemproxy的地址改成Codis的地址即可。

2,支持Java程序的HA

Codis提供一个Java客户端,并称之为Jodis,这样,如果单个Codis Proxy宕掉,Jodis自动发现,并自动规避之,使业务不受影响。

3,支持Pipeline

Pipeline使得客户端可以发出一批请求,并一次性获得这批请求的返回结果,这提升了Codis的想象空间。

4,Codis 不负责主从同步

Codis仅负责维护当前Redis Server列表,由运维人员自己去保证主从数据的一致性

5,要改进的地方

加pipeline参数后,Value长度如果较大,性能反而比Twemproxy要低一些

源码地址:https://github.com/wandoulabs/codis

时间: 2024-12-24 23:37:56

redis集群方案总结的相关文章

架构设计:系统存储(18)——Redis集群方案:高性能

1.概述 通过上一篇文章(<架构设计:系统存储(17)--Redis集群方案:高可用>)的内容,Redis主从复制的基本功能和进行Redis高可用集群监控的Sentinel基本功能基本呈现给了读者.虽然本人并不清楚上一篇根据笔者实际工作经验所撰写的文章有什么重大问题,导致那么多朋友集体点踩而且截止目前又没有任何人愿意为笔者指出这些问题,但是这不会影响笔者继续学习.总结技术知识的热情.从这篇文章开始我们一起来讨论Redis中两种高性能集群方案,并且在讨论过程中将上一篇文章介绍的高可用集群方案结合

关于redis集群方案

最近在研究redis集群方案,看到知乎上有个朋友写的观点很好,就先收过来了.原文见:http://www.zhihu.com/question/21419897 为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢? 首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,scale up不

Redis集群方案及实现 - yfk的专栏 - 博客频道 - CSDN.NET

[公告]博客系统优化升级        Unity3D学习,离VR开发还有一步        博乐招募开始啦        虚拟现实,一探究竟 Redis集群方案及实现 2014-08-30 17:20     43035人阅读     评论(15)     收藏     举报 本文章已收录于: .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px #ededed; } .embody_b{ margin

Redis集群方案(来自网络)

参考: https://www.zhihu.com/question/21419897 http://www.cnblogs.com/haoxinyue/p/redis.html 为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢? 首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,

Redis 集群方案介绍

由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数据).Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版.各大企业在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各自的Redis集群方案.这

Redis集群方案介绍

由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数据).Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版.各大企业在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各自的Redis集群方案.这

(转)Redis 集群方案

根据一些测试整理出来的一份方案: 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , Xeon E5520(4核)*2/8G,1000M网卡 Redis 版本:2.6.9 客户端机器使用redis-benchmark 简单GET.SET操作: 1. 1单实例测试 1. Value大小:10Byte~1390Byte 处理速度: 7.5 w/s,速度受单线程处理能力限制 2. Value 大小:1400 左右 处理速度突降到5w/s 样子,网卡未能

大厂们的 redis 集群方案

redis 集群方案主要有两类,一是使用类 codis 的架构,按组划分,实例之间互相独立: 另一套是基于官方的 redis cluster 的方案:下面分别聊聊这两种方案: 类 codis 架构 这套架构的特点: 分片算法:基于 slot hash桶: 分片实例之间相互独立,每组 一个master 实例和多个slave: 路由信息存放到第三方存储组件,如 zookeeper 或etcd 旁路组件探活 使用这套方案的公司: 阿里云: ApsaraCache, RedisLabs.京东.百度等 c

Redis 集群方案

根据一些测试整理出来的一份方案: 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , Xeon E5520(4核)*2/8G,1000M网卡 Redis 版本:2.6.9 客户端机器使用redis-benchmark 简单GET.SET操作: 1. 1单实例测试 1. Value大小:10Byte~1390Byte 处理速度: 7.5 w/s,速度受单线程处理能力限制 2. Value 大小:1400 左右 处理速度突降到5w/s 样子,网卡未能