写点什么

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

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

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

关注

评论

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

时习知亮相华为中国合作伙伴大会2024,助力伙伴能力快速提升

平平无奇爱好科技

对线面试官 - 如何理解MySQL的索引覆盖和索引下推

派大星

MySQL Java 面试题 #面试

NTFS Disk by Omi NTFS:NTFS 磁盘管理器

Rose

NTFS Disk by Omi NTFS NTFS 磁盘管理器

Cookie复用大揭秘:助你在数据处理中事半功倍!

测试人

软件测试

阿里云ecs创建组、账号、并分配sudo权限

智慧源点

linux sudo

【ubuntu】DNS设置工具resolvectl安装教程

百度搜索:蓝易云

Linux ubuntu 运维 云服务器 resolvectl

功能强大的虚拟定位软件:AnyGo for Mac

Rose

虚拟定位 AnyGo 中文破解

面向中文大模型价值观的评估与对齐研究:“给AI的100瓶毒药”并解毒,守护AI纯净之心

汀丶人工智能

人工智能 大模型 大模型价值

CancellationToken:程序员必读的悬空指针灾难案例

CnosDB

开源 时序数据库 tsdb CnosDB

一文了解Validator库

百度搜索:蓝易云

html Linux 运维 云服务器 validator

PB 级速度,单一数据库操作:走进 Amazon Aurora Limitless Database 的神奇

亚马逊云科技 (Amazon Web Services)

数据库

《自动机理论、语言和计算导论》阅读笔记:p5-p27

codists

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

小畅

(小实验)理解编译原理:一个四则运算的解释器

Geek_ee6d52

GaussDB(DWS) 业务高可靠的三大利器:CN RETRY、远程读、ELB

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

最好用的万年历软件:万年历 for Mac

Rose

万年历 公历农历转换 天气预报

Prompt工程全攻略:15+Prompt框架一网打尽(BROKE、COAST、LangGPT)、学会提示词让大模型更高效

汀丶人工智能

人工智能 大模型 提示工程 提示词 Prompt工程

从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

华为云开发者联盟

Python 开发 数据可视化 华为云 华为云开发者联盟

NopReport为什么是一个非常独特的报表引擎?

canonical

低代码 报表 Nop平台 报表引擎

如何在Linux中设置SSH无密码登录

百度搜索:蓝易云

云计算 Linux 运维 SSH 云服务器

【Linux】DNS系统,ICMP协议,NAPT技术详解

百度搜索:蓝易云

云计算 Linux 运维 DNS 云服务器

报错:Cannot read properties of undefined (reading ‘$message‘)解决方法

百度搜索:蓝易云

JavaScript typescript Linux 运维 云服务器

高级数学及符号运算:Wolfram Mathematica 14.0中文破解版

Rose

数学软件 Wolfram Mathematica 14

mac创意图片编辑器:Luminar Neo破解版下载

Rose

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