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

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

Twitter的Redis/Memcached代理服务:Twemproxy
Twemproxy是一个使用C语言编写的Redis 和 Memcache 代理服务器,通过引入一个代理层,将应用程序后端的多台Redis或Memcached实例进行统一管理,使应用程序只需要在Twemproxy上进行操作,而不用关心后面具体有多少个真实的Redis或Memcached实例。当某个节点宕掉时,Twemproxy可以自动将它从集群中剔除,而当它恢复服务时,Twemproxy也会自动连接。由于是代理,所以Twemproxy会有微小的性能损失。

Facebook的Memcached协议路由器:McRouter
McRouter是一个使用C++(主要语言,使用了大量的C++ 11特性)开发的基于Memcached协议的路由器,它是Facebook和Instagram缓存架构的核心组件,在高峰时期可以处理近50亿请求。McRouter中客户端可以共享连接池,这样能减少连接的数量。McRouter可以根据key前缀把客户端分配到不同的Memcached池中,允许以主机、池或者集群为单位设置任何请求的速率的阀值,同时也支持限制请求的速度以减缓请求的发送速度,以保障服务质量。

Youtube的Mysql中间件:Vitess
缓存层存在的初衷是减少应用与数据库的交互,以提高响应时间,与其将缓存与数据库分离,不如直接将缓存嵌入数据库中。Vitess是Youtube的开源分布式MySQL工具集,主要使用Go语言编写,已经用于Youtube生产环境。Vitess支持行级缓存,并与Memcached进行了集成,可以有效提高带主键查询的速率,查询只有在Memcached中查询不到时才会进入数据库查询,而当数据被修改或者数据库表结构发生变化时,缓存数据会被删除。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-09-30 00:00:23

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

heartbeat+lvs构建高可用负载均衡集群

heartbeat+lvs实现高可用负载均衡原理: 两台heartbeat(ldirectord)主机构成高可用集群,同时监管着lvs(负载均衡集群)整体构成了heartbeat+lvs的高可用负载均衡集群.在使用heartbeat的时候加载了watchdog模块,用来检测heartbeat服务,当heartbeat服务出现故障,会进行重启主机. 注意:但是,当内核崩溃了,watchdog也无能了(modprobe softdog),因为watchdog是基于内核级别的软件服务(相当于软fenc

高可用的MongoDB集群

1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l  面向集合的存储:适合存储对象及JSON形式的数据. l  动态查询:Mongo 支持丰富的查询方式,查询指令使用 JSON 形式的标记,可轻易查询文档中内嵌的对象及数组. l  完整的索引支持:包括文档内嵌对象及数组.Mongo 的查询优化器会分析查询表达式,并生成一个高效的查询计划. l  查询监视:Mongo包含一个监控工具用于分析数据库操作性

搭建高可用的MongoDB集群

MongoDB公司原名10gen,创立于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评估已增至10亿美元级别,这个高度是知名开源公司Red Hat(创建于1993年)20年的奋斗成果. 高性能.易扩展一直是MongoDB的立足之本,同时规范的文档和接口更让其深受用户喜爱,这一点从分析DB-Engines的得分结果不难看出--仅仅1年时间,MongoDB就完成了第7名到第五名的提升,得分就从124分上升至214分,上升值是第四名PotgreSQL的两倍,同时当下与Postgre

CentOS 7上搭建安全、容灾、高可用的etcd集群

本文讲的是CentOS 7上搭建安全.容灾.高可用的etcd集群[编者的话]etcd 是 CoreOS 团队发起的开源项目,基于 Go 语言实现,做为一个分布式键值对存储,通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作. 本文目标是部署一个基于TLS(Self-signed certificates)的安全.快速灾难恢复(Disaster Recovery, SNAPSHOT)的高可用(High Availability)的etcd集群. 准备工作

高可用的MongoDB集群-实战篇

1.概述 最近有同学和网友私信我,问我MongoDB方面的问题:这里我整理一篇博客来赘述下MongoDB供大家学习参考,博客的目录内容如下: 基本操作 CRUD MapReduce 本篇文章是基于MongoDB集群(Sharding+Replica Sets)上演示的,故操作的内容都是集群层面的,所以有些命令和单独的使用MongoDB库有异样.具体集群搭建可以参考我写的<高可用的MongoDB集群>. 2.基本操作 常用的 Shell 命令如下所示: db.help() # 数据库帮助 db.

【DockerCon2017最新技术解读】如何在阿里云一键部署高可用的Kubernetes集群

摘要:在云栖TechDay34期:DockerCon2017最新的技术解读中,阿里云的容器服务团队技术专家谢瑶瑶做了题为<Kubernetes on Alibaba Cloud>的分享,主要介绍了Kubernetes的基本概念,如何在阿里云快速一键部署高可用安全的Kubernetes集群以及阿里云的Cloud Provider所提供的能力. 以下内容根据演讲嘉宾现场视频以及速记整理而成. 今天主要会分享三个方面的问题: Kubernetes的基本概念介绍 如何在阿里云快速一键部署高可用安全的K

严澜:搭建高可用的MongoDB集群(二)

http://www.aliyun.com/zixun/aggregation/13461.html">MongoDB公司原名10gen,创立于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评估已增至10亿美元级别,这个高度是知名开源公司Red Hat(创建于1993年)20年的奋斗成果. 高性能.易扩展一直是MongoDB的立足之本,同时规范的文档和接口更让其深受用户喜爱,这一点从分析DB-Engines的得分结果不难看出--仅仅1年时间,MongoDB就完成了第7名到

搭建高可用的MongoDB集群(上):MongoDB的配置与副本集

传统的关系数据库具有不错的性能及稳定性,同时,久经历史考验,许多优秀的数据库沉淀了下来,比如MySQL.然而随着数据体积的爆发性增长,数据类型的增多,许多传统关系数据库扩展难的特点也爆发了出来,NoSQL数据库也应运而生.然而区别于以往的使用方法,许多NoSQL都有着自己的限制,从而也导致了入门难的问题.这里我们为大家分享上海创行科技技术总监严澜的博文--如何搭建高效的MongoDB集群. 以下为原文 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩

如何构建高可用ZooKeeper集群

ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 ZooKeeper 便捷的使用方式.卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop.HBase.Kafka 和 Dubbo 等大型分布式系统中. 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式.集群组成.容灾和水平扩容四方面逐步深入,最终构建