写点什么

高可用、开源的 Redis 缓存集群方案

  • 2014-11-13
  • 本文字数:1254 字

    阅读完需:约 4 分钟

由于单台 Redis 服务器的内存管理能力有限,使用过大内存的 Redis 又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而 Redis 3.0 beta1 支持的集群功能还不适合生产环境的使用。于是为了获取更好的 Redis 缓存性能及可用性,很多公司都研发了 Redis 缓存集群方案。现对 NetFlix 、Twitter、国内的豌豆荚在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内容如下:

1、NetFlix 对 Dynamo 的开源通用实现 Dynomite

Dynomite 是 NetFlix 对亚马逊分布式存储引擎 Dynamo 的一个开源通用实现,使用 C/C++ 语言编写、以代理的方式实现的 Redis 缓存集群方案。Dynomite 不仅能够将基于内存的 Redis 和 Memcached 打造成分布式数据库,还支持持久化的 MySQL、 BerkeleyDB LevelDB 等数据库,并具有简单、高效、支持跨数据中心的数据复制等优点。Dynomite 的最终目标是提供数据库存储引擎不能提供的简单、高效、跨数据中心的数据复制功能。Dynomite 遵循 Apache License 2.0 开源协议发布,更多关于 Dynomite 的信息请查看 NetFlix 技术博客对 Dynomite 的介绍

2、Twitter 的 Redis/Memcached 代理服务 Twemproxy

Twemproxy 是一个使用 C 语言编写、以代理的方式实现的、轻量级的 Redis 代理服务器,它通过引入一个代理层,将应用程序后端的多台 Redis 实例进行统一管理,使应用程序只需要在 Twemproxy 上进行操作,而不用关心后面具体有多少个真实的 Redis 或 Memcached 实例,从而实现了基于 Redis 和 Memcached 的集群服务。当某个节点宕掉时,Twemproxy 可以自动将它从集群中剔除,而当它恢复服务时,Twemproxy 也会自动连接。由于是代理,所以 Twemproxy 会有微小的性能损失。根据 Redis 作者的测试结果,在大多数情况下,Twemproxy 的性能相当不错,同直接操作 Redis 相比,最多只有 20% 的性能损失。Twemproxy 遵循 Apache License 2.0 开源协议发布,更多关于 Twemproxy 的信息请登录其在 GitHub 的主页查看。

3、豌豆荚的 Redis 集群解决方案 Codis

Codis 是豌豆荚使用 Go 和 C 语言开发、以代理的方式实现的一个 Redis 分布式集群解决方案, 且完全兼容 Twemproxy。Twemproxy 对于上一层的应用来说, 连接 Codis Proxy(Redis 代理服务)和连接原生的 Redis 服务器没有明显的区别, 上一层应用能够像使用单机的 Redis 一样对待。Codis 底层会处理请求的转发、不停机的数据迁移等工作, 所有底层的一切处理, 对于客户端来说是透明的。总之,可以简单的认为后台连接的是一个内存无限大的 Redis 服务。Codis 遵循 MIT 开源协议发布,更多关于 Codis 的信息请登录其在 GitHub 的主页查看。

另外,还有一些未开源的解决方案,比如新浪、百度、淘宝、腾讯等的 Redis 集群方案。在 Redis 官方正式推出可用于生产环境的集群方案前,以上三种方案是非常值得考虑在生产环境使用的方案。


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-13 06:5827308
用户头像

发布了 92 篇内容, 共 46.8 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

在开源项目或工作项目中使用git建立fork仓库

良知犹存

git

技术公众号小白互助网络

Felix

GitHub 微信公众号 自媒体

10. python入门速通教程之类、继承类、类中的特殊方法

梦想橡皮擦

10月月更

风雨兼程,零代码训练营第四期顺利结业

明道云

数据库优化之explain 的使用和常用的SQL优化或索引优化

Regan Yue

数据库 数据库优化 Regan Yue 10月月更

如何进行用户故事估算——Ethan分享观后感

Bruce Talk

敏捷 随笔 Agile User Story Product Owner

MacBook的隐藏功能

IT蜗壳-Tango

10月月更

设计千万级学生管理系统的考试试卷存储方案

Rabbit

k8s replicaset controller源码分析(1)-初始化与启动分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

SpringBoot 实战:优雅的使用枚举参数(原理篇)

看山

Java Spring Boot Effective Spring 10月月更

模块九毕业设计

以吻封笺

马拉车算法,其实并不难!!!

秦怀杂货店

数据结构 算法 LeetCode

半年时间,拍摄8省市10个案例,我们见到了这样的智能中国

脑极体

微博评论高性能高可用计算架构

白开水又一杯

#架构实战营

大神Jeff Dean相关的一些项目

春秋易简

业务中台数据一致性方案

慕枫技术笔记

后端 引航计划

敬畏用户

FunTester

软件测试 测试 用户 FunTester 用户思维

【SpringCloud技术专题】「Hystrix源码」分析故障切换的运作流程

洛神灬殇

源码分析 SpringCloud Hystrix 熔断器 10月月更

5款良心工具,专治各种流氓顽固软件!

Jackpop

容器 & 服务:Kubernetes API Server访问问题

程序员架构进阶

架构 Kubernetes 容器 Helm Charts 10月月更

stm32-HAL使用usart发送中断判断发送标志库问题

良知犹存

stm32

stm32-HAL使用stop模式后DMA初始化的问题

良知犹存

stm32

012云原生之微服务

穿过生命散发芬芳

云原生 10月月更

产品经理职业发展框架

俞凡

产品经理 产品管理 认知

iOS开发独家秘籍-代码块Code Snippets

iOSer

ios 代码 ios开发

别被vector最后一个元素erase错误

良知犹存

c++

Linux开发coredump文件分析实战分享

良知犹存

Linux

一文带你盘点“微服务”中的技术点

Simon郎

微服务 Spring Cloud spring cloud alibaba java

模块九作业:设计电商秒杀系统

Felix

小程序中如何显示Markdown文本

Changing Lin

10月月更

模块9

Geek_ywh40v

高可用、开源的Redis缓存集群方案_语言 & 开发_李士窑_InfoQ精选文章