阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

构建高可用的缓存集群的开源解决方案

  • 2014-10-27
  • 本文字数:1032 字

    阅读完需:约 3 分钟

很多应用都通过使用缓存来避免所有的请求都查询数据库,以加快系统的响应速度, Memcached 是常用的缓存服务器(现在比较流行的还有 Redis ),它一个高性能的分布式内存对象缓存系统,旨在通过缓存数据库查询结果,减少数据库的访问次数。但是在运行多个 Memcached 服务器时,往往还需要考虑其它的问题,比如缓存一致性、缓存失效等,缓存一致性是指要保证多个 Memcached 服务器中数据的一致,缓存失效的后果相对来说比较严重,当在大并发访问的场景下,如果 Memcached 缓存失效,所有请求会在同一瞬间并发访问数据库,可能会导致数据库宕机。为了保证缓存系统的稳定和高可用,很多公司都研发了相应的系统。本文汇总了 Twitter、Facebook、Youtube 在缓存方面的解决方案,供读者参考。

  1. Twitter 的 Redis/Memcached 代理服务:Twemproxy
    Twemproxy 是一个使用 C 语言编写的 Redis 和 Memcache 代理服务器,通过引入一个代理层,将应用程序后端的多台 Redis 或 Memcached 实例进行统一管理,使应用程序只需要在 Twemproxy 上进行操作,而不用关心后面具体有多少个真实的 Redis 或 Memcached 实例。当某个节点宕掉时,Twemproxy 可以自动将它从集群中剔除,而当它恢复服务时,Twemproxy 也会自动连接。由于是代理,所以 Twemproxy 会有微小的性能损失。
  2. Facebook 的 Memcached 协议路由器:McRouter
    McRouter 是一个使用 C++(主要语言,使用了大量的 C++ 11 特性)开发的基于 Memcached 协议的路由器,它是 Facebook 和 Instagram 缓存架构的核心组件,在高峰时期可以处理近 50 亿请求。McRouter 中客户端可以共享连接池,这样能减少连接的数量。McRouter 可以根据 key 前缀把客户端分配到不同的 Memcached 池中,允许以主机、池或者集群为单位设置任何请求的速率的阀值, 同时也支持限制请求的速度以减缓请求的发送速度,以保障服务质量。
  3. Youtube 的 Mysql 中间件:Vitess
    缓存层存在的初衷是减少应用与数据库的交互,以提高响应时间,与其将缓存与数据库分离,不如直接将缓存嵌入数据库中。 Vitess 是 Youtube 的开源分布式 MySQL 工具集,主要使用 Go 语言编写,已经用于 Youtube 生产环境。Vitess 支持行级缓存,并与 Memcached 进行了集成,可以有效提高带主键查询的速率,查询只有在 Memcached 中查询不到时才会进入数据库查询,而当数据被修改或者数据库表结构发生变化时,缓存数据会被删除。

另外,还有一些未开源的解决方案,比如 Box 的 Tron。同时,InfoQ 也非常关注国内相关问题的解决方案,欢迎读者在评论中留言与我探讨。

2014-10-27 06:026291
用户头像

发布了 219 篇内容, 共 134.9 次阅读, 收获喜欢 190 次。

关注

评论

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

Flink常见数据源

大数据技术指南

大数据 flink 5月日更

60个适合练手的C语言/C++项目,值得收藏!

C语言与CPP编程

c++ 源码 C语言

因你不同,2021 阿里云开发者大会重磅开启 @ 所有开发者!

阿里巴巴云原生

开发者 云原生 活动

android插件化面试,渣本逆袭大厂面经分享,震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

架构实战营 - 模块 4- 作业

carl

怎么学

Nydia

学习

Python 协程

若尘

协程 Python编程 5月日更

网络攻防学习笔记 Day18

穿过生命散发芬芳

5月日更 网络攻防

数据挖掘从入门到放弃(五)seaborn 的数据可视化

数据社

机器学习 5月日更

url踩坑记录

ES_her0

5月日更

Android面试题!深入理解JVM的核心知识点,值得一读!

欢喜学安卓

android 程序员 面试 移动开发

从火星的古海洋,读懂蓝星的数据湖之变

脑极体

5分钟速读之Rust权威指南(四)

wzx

JavaScript rust

看完这个刷题笔记与代码规范,距大厂又近了一步!值得收藏!

C语言与CPP编程

c++ 程序人生 算法 C语言 代码规范

C语言与C++学习路线、书籍、视频推荐和资料,值得收藏!

C语言与CPP编程

c++ 学习 C语言 视频 资料

并发王者课-青铜1:兵分三路-从创建线程开始

MetaThoughts

Java 多线程 高并发 Java高并发 每周二四六更新

阿里工作6年,熬到P7就剩这份学习笔记了,已助朋友拿到7个Offer

Java 程序员 架构 面试

博睿数据与阿里云签订云原生核心合作伙伴计划,推动企业智能运维落地

阿里巴巴云原生

人工智能 容器 微服务 运维 云原生

Flink CEP 监测刷屏用户

五分钟学大数据

flink 5月日更

浪潮云向前进一步,又向后让一步

浪潮云

云计算

ConcurrentHashMap

ltc

ConcurrentHashMap

明天重新杨帆起航

IT蜗壳-Tango

5月日更

数字化战争即将开启,区块链将成为有效防护壁垒

CECBC

一文读懂微前端架构

EAWorld

2千亿级超大模型的构建,能否突破中文场景的极限

这不科技

人工智能 nlp

位列第五大生产要素,大数据该如何突破隐私安全魔咒?

CECBC

架构学习笔记:架构定义

风翱

架构 5月日更

JavaScript 类型化数组

空城机

JavaScript 大前端 5月日更 类型化数组

Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域

阿里巴巴云原生

大数据 容器 开发者 云原生 存储

世界电信日 | 英特尔5G赋能数字化转型的实现之道

E科讯

从非洲血库到热带雨林:为什么普惠联接是社会的数字化支点?

脑极体

构建高可用的缓存集群的开源解决方案_DevOps & 平台工程_小盖_InfoQ精选文章