11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

使用 Cache Farms 和 Read Pools 提高 Web 应用的伸缩性

  • 2007-11-14
  • 本文字数:845 字

    阅读完需:约 3 分钟

Michael Nygard 是一位作家和 No Fluff Just Stuff 公司的演讲者,他最近发表了一篇文章,讨论了两种提高web 应用的性能和伸缩性的方法: Cache Farms 和Read Pools。

Cache Farms 的思想是在一个集群中的所有应用节点共享一个外部的缓存而不是每个节点维护自己的缓存。这样可以减少冗余并减少使用应用服务器的堆空间:

通过从应用服务器进程中移出缓存,你可以从多个实例中访问相同的缓存,减少重复。把那些缓存对象从应用服务器的堆空间中除去,可以让堆空间变小,同时减少了垃圾收集时间。如果你使用分布式的外部缓存,那么你可以减少更多重复。

Read Pools 利用了大多数数据驱动的应用执行读操作远多于写操作的特点。通过在一套专门的只读的复制的数据库上执行读操作,减轻了写数据库操作的负担:

你如何建立一个读缓冲池?很简单!Read Pools 仅仅使用了数据库自己内建的复制功能。基本上,你只需要配置写控制器,把它的归档日志(或者你的数据库对他们的称谓)转移到读操作缓冲池数据库。

Michael 指出读操作缓冲池数据库的更新也许不是实时的,这依赖于你所使用的数据库,但是这也许是一个完美的可以接受的平衡。MySQL 用户可以利用使用 MySQL-Proxy 分离读/ 写的特征来实现读操作缓冲。

Michael 的总结如下:

对于可伸缩性而言,有一个互为对照的答案:“在 web 层和应用层向外扩充(Scale out),在数据层向上扩充(Scale up)。”我希望这句话可以启示大家找到其他提高性能和容量的方法。(译者注:Scale out,指向系统中增加多个节点,比如向分布式系统中添加一台服务器;Scale up,指向系统中的一个节点中增加资源,通常包括给一台计算机增加 CPU 或者内存,也可以指扩充所运行线程的数量。译自 Wikipedia

查看英文原文 Scaling Web Applications using Cache Farms and Read Pools - - - - - -

译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于新技术的钻研,软件架构与敏捷开发,目前从事 Home Control 方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-11-14 00:45550
用户头像

发布了 47 篇内容, 共 86926 次阅读, 收获喜欢 2 次。

关注

评论

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

详解CAN总线:CAN节点硬件构成方案

不脱发的程序猿

嵌入式 汽车电子 CAN总线 CAN节点硬件构成方案 CAN节点

Github爆火!阿里最新发布的《高并发核心编程笔记》PDF文档

Geek_0c76c3

Java 数据库 开源 架构 开发

遭不住了!Alibaba开源内网“M9”级别高并发编程全彩版进阶手册

程序知音

Java 架构 并发编程 多线程与高并发 后端技术

详解CAN总线:标准数据帧和扩展数据帧

不脱发的程序猿

汽车电子 通信协议 CAN总线 CAN协议 标准数据帧和扩展数据帧

邓荣伟:稳定支撑每秒百万笔支付请求,支付宝数据库架构的过去、现在与未来

OceanBase 数据库

全网首次公开:Java面试参考指南V3.0版(完美契合当下所有互联网公司面试需求)

Java全栈架构师

数据库 程序人生 后端 高并发 Java 面试

信息论与编码(一)| 信源分类与数学模型

timerring

9月日更 信息熵

阿里内网流传的9w字图解网络(全彩版)GitHub现已下载量过百万

程序知音

Java 程序员 计算机网络 后端技术 计算机底层

阿里五位MySQL封神大佬耗17个月总结出53章性能优化法则

Geek_0c76c3

Java 数据库 开源 程序员 开发

阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题

程序知音

Java 大厂面试 后端技术 Java面试八股文 阿里面试

竟拿到阿里45K高薪offer!只因他刷了这份阿里微服务天花板手册

Geek_0c76c3

Java 数据库 开源 架构 面经

大厂“毕业”半月,面试数十家公司,凭借这份面试总结涨获7家Offer,成功入职

程序员小毕

spring 程序员 程序人生 JVM Java 面试

详解CAN总线:CAN协议分层结构及功能

不脱发的程序猿

CAN总线 CAN协议 CAN协议分层结构及功能

详解CAN总线:CAN总线报文格式—数据帧

不脱发的程序猿

汽车电子 CAN总线 CAN协议 CAN总线报文格式 CAN数据帧

吃透阿里大佬分享的这份Java面试神技,3个月斩获8家offer

Geek_0c76c3

Java 数据库 开源 架构 开发

MyBatisPlus学习

Geek_6689b6

入门 MyBatisPlus 九月月更

Shell编程学习(二)

Studying_swz

Shell 脚本 九月月更

架构实战营模块1作业

陌生流云

架构实战营

模块二

早安

极客时间架构师训练营

架构师的十八般武艺:可观测性

agnostic

可观测性

评判优秀程序员标准:“高并发”,竟被一份Github万星笔记讲清楚了

Geek_0c76c3

Java 数据库 架构 开发 面经

[架构实战] 课后作业

爱学习的麦子

Shell编程学习(一)

Studying_swz

Shell 初阶 九月月更

OceanBase存储层代码解读(四):宏块的垃圾回收和坏块检查

OceanBase 数据库

直冲云霄,阿里大牛耗时49天整理12W字面试手册,押题准确率直冲95%

Geek_0c76c3

Java 数据库 开源 程序员 架构

互联网架构师联合总结的Java面试攻略,GitHub标星30K!

程序知音

java面试 大厂面试 java架构师 后端技术 Java面试八股文

使用Cache Farms和Read Pools提高Web应用的伸缩性_数据库_Gavin Terrill_InfoQ精选文章