写点什么

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

  • 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:026763
用户头像

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

关注

评论

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

引起故障的原因

jorden wang

基于 Flink+Iceberg 构建企业级实时数据湖

Apache Flink

大数据 flink 流计算

「每日一题」抖音面试题:请阐述vue数据绑定的实现原理

Java架构师迁哥

干货|原来IPFS是这样存储文件的

QTech

区块链技术 IPFS 星际文件系统

架构师训练营第六周作业

zamkai

阿里拆中台?从架构师角度解读中台

javaba韩老师

架构 中台战略 TOGAF 中台的前世今生 中台的由来

Spring Cloud Gateway (六) 自定义 Global Filter

Java 网关 SpringcloudGateway

“区块链+有机蔬菜”农产品溯源项目落地

CECBC

农业发展 农业

优化了MYSQL大量写入问题,老板奖励了1000块给我

华为云开发者联盟

MySQL sql 写入

内存分页不就够了?为什么还要分段?还有段页式?

yes

操作系统 内存管理

字节内部MySQL宝典意外流出!极致经典,堪称数据库的天花板

比伯

Java 编程 架构 面试 技术宅

2021 第一份唠嗑

大头虾

移动设备管理平台的搭建(基于STF/ATXServer2)

行者AI

人工智能

light-rtc: 理念与实践

阿里云CloudImagine

架构 音视频 WebRTC RTC

Flink SQL 实战:HBase 的结合应用

Apache Flink

flink

2020年不容错过的10本大咖之作 | 你最Pick哪一本?

博文视点Broadview

干了三年的Java,你竟然还不会MySQL性能优化

华为云开发者联盟

Java MySQL sql

免费下载来自阿里巴巴 双11 的《云原生大规模应用落地指南》

阿里巴巴云原生

阿里巴巴 阿里云 开发者 云原生 k8s

40亿条/秒!Flink流批一体在阿里双11首次落地的背后

Apache Flink

flink 流计算

软件测试--前后端数据交互

测试人生路

软件测试

如何利用状态同步开发一款游戏

Isa 婷婷

node.js 游戏开发 24小时自助游戏厅 联机游戏

如何通过 Serverless 轻松识别验证码?

阿里巴巴云原生

人工智能 阿里云 Serverless 云原生 数据采集

数字化浪潮下 哪些银行业务或“生变”

CECBC

金融科技

主从哨兵集群终于给你说明白了

moon聊技术

数据库 redis

LeetCode题解:264. 丑数 II,三指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

深层互联带领自动旅游讲解耳麦进入“非入耳”时代

DT极客

敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!

华为云开发者联盟

敏捷 安全 开发

面试软件测试所需要掌握的7个技能

华为云开发者联盟

sql 面试 测试

基于GaussDB(DWS)的全文检索特性,了解一下?

华为云开发者联盟

数据库 数据仓库 数据

打造新一代企业数据驱动体系

StarRocks

数据库 大数据 数据分析 数字化转型 OLAP

Flink 双流 Join 的3种操作示例

Apache Flink

flink 流计算

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