说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

高性能Web应用打造攻略:扩展过程中20个最大的绊脚石

HTML文档下载 WORD文档下载 PDF文档下载
成功不可能一蹴而就,任何高性能、大规模的Web应用都是慢慢扩展而来。然而通往成功的路上从来不缺乏艰辛,这里为大家分享对扩展性影响最大的20个绊脚石以及避免之道。

Sean Hull是Heavyweight Internet Group的创始人兼高级顾问,拥有20年以上技术顾问相关经验,曾为多家知名机构提供咨询,其中包括The Hollywood Reporter、Billboard、NBC Universal、Zagats、Rent the Runway及ideeli,这些高速增长的公司每个月处理接近1亿的独立访客。Hull在Amazon EC2部署和Linux及MySQL性能上有着丰富的经验。巨大流量的处理需涉及多个方面,其中包括网站扩展性、业务连续性、安全及架构挑战等。近日,Hull分享了高性能Web应用打造的经验,剖析了扩展之路上20个最大的绊脚石。以下为译文:

1. 二阶段提交

通常情况下,当数据库中的数据发生改变时,它需要同时被写入内存和硬盘。当一个提交发生时,传统数据库需要负责数据在真实存储媒质上的持久化。牢记,内存的数据在崩溃或者重启后都会消失。即使数据已经在数据库中缓存,数据库仍然需要将其持久化到磁盘上,MySQL的二进制日志及Oracle的redo日志都符合这个要求。

通过MySQL集群或者类似DRBD(Distributed Replicated Block Device)或者Amazon Multi-AZ(Multi-Availability Zone)的分布式文件系统,提交并不仅仅是在本地发生,同时也在远端。二阶段提交意味着需要从远端得到反馈,鉴于网络及一些其它的延时,提交速度可能会被毫秒级的降低,仿佛高速公路上的所有汽车都因重载变慢。如有考虑使用Multi-AZ或者读备份,不妨查看Amazon RDS(Relational Database Service)与MySQL的比较。

同步复制同样会出现这些问题,因此MySQL解决方案是半同步的,这也可以看做是在二阶段提交上的一些让步。

2. 缓存不足

在所有层中缓存的作用都至关重要,那么什么地方最需要使用缓存:浏览器、页面、对象还是数据库存?下面不妨统统试一下。

浏览器缓存似乎遥不可及,除非你清楚浏览器是从Web Server中取出指令及其渲染的页面。因此,如果包含的对象有一个比较长的生命周期,浏览器将会缓存他们,不需要再次进行读取。这不仅会加快用户的浏览速度,同样会有益于Server对网站的托管,因为会切实的减少用户的二次读取。

猛戳这里查看更多浏览器缓存相关,确保设置了期满头文件及缓存控制。

页面缓存需要使用类似Varnish的技术,可以将它看成一个迷你的高速、低开销Web Server。它不可以支撑类似Apache可以的复杂页面,但是它可以让非常简单的页面更快。因此位于Apache之前,用于减少负载,让Apache可以处理更加复杂的页面。就像交通警察,在专注更复杂的机动车前,先给自行车放行。

对象缓存由类似memcache的组件完成,可以把它当做是应用程序的便利贴。做数据库查询时会先访问缓存寻求数据,如果发现了所需的数据,那么结果返回的时间将比访问数据库快10-100倍,这样就可以快速的构建页面,从而在眨眼间为用户呈现。如果它没有发现所需的数据,或者只发现了一部分,那么将会建立数据库请求并将返回的数据放于缓存中,让更多的后来者受益。

3. 缓慢的磁盘I/O、RAID 5、多租户存储

数据库中的一切都受到存储的限制,这里既包含了空间问题,也受设备读写的速度掣肘。

如果你使用实体服务器,那么一定要当心RAID 5,独立磁盘冗余阵列的一种,数据保护和奇偶性将严重的影响写操作。同时,如果其中一个磁盘损坏,那么这个阵列在磁盘重建时将变得非常缓慢。

这个方案一般使用RAID 10,它将为你提供独立的镜像集。这导致没有奇偶校验计算,从而不会影响重建时的速度。

云环境可能会涉及到类似于Amazon EBS(Elastic Block Store,一个类似于SAN的虚拟化磁盘)的技术。鉴于其基于网络,你必须与其它租户竞争存储的读写。因为每个存储能支撑的读写速度是固定的,所以你的邻居可能会影响到你网站及应用程序的读写速度。

最近,Amazon又公布了一个重量级产品Provisioned IOPS(每秒I/O操作)。对于技术专家来说看起来非常不错,但是对于其它人来说毫无价值。尽管如此,其依然重要,这意味着你可以锁定你数据库所需的磁盘性能。如果你想在Amazon上托管数据库,那么不妨多关注一下这个。

4. 串行处理

在超市结账时,如果有10个收银台开放,那么从事的是并行处理。如果每个收银台都在休息,只有一个登记处开放,那么从事的是串行操作。那么结账的队伍将变得非常长,不仅是结账人的心情受到影响,购物者也同样如此。这点经常发生在线路不够的大桥收费站以及许多人一起离场的体育场所。

网络应用需要严格的避免串行,因等待API调用而产生的阻塞,所有的后端节点都在等待一个搜索服务器,只要你应用程序的某处形成一个线就代表了串行化的发生,那么必须不惜一切代价去清除它。

5. 缺少Feature Flag

在给业务部门建立应用时,开发者一般从特性和功能入手。Feature Flag将至关重要,它让人们可以通过后端配置文件或管理员UI页面关闭或者打开特性。

为什么他们如此重要?如果你有早上4点的救火经验,那么你将明白启动应急计划的必要性。你需要可以关闭评级、评论以及应用程序其它的一些特性,这将不会导致整个系统崩溃。更重要的是,在新特性发布时,有些时候问题并不明显,直到一群互联网用户同时涌入。Feature Flag让你可以选择性的关闭一些功能,而不是关掉整个网站。

所见即所得:四款免编程移动游戏开发引擎推荐 PaaS乱局:Container的新机遇 IDC再度下调2013年全球PC销量预期 平板电脑中枪 Waze联合创始人做FeeX 用众包方式增加银行服务透明度 Ripple CTO Stefan Thomas:Bitcoin与未来支付应用开发 第二届Coding For Fun编程马拉松实时快报→→ 数字化你的脸:14个智能眼镜开发平台 Unite2013开发者大会:Unity新增多项重磅革新 微软大中华区副总裁谢恩伟:微软云+端应用模型前瞻 移动周报:从硬件马拉松到Barra加盟,本周小米很火 小而美的Diffbot:将Web页面转化为数据库,获多位科技大佬注资 “叙利亚电子军”对美国多家网站发起“电子制裁” 麻省理工TR35之IT界年轻有为创新者(上) Linux用户须知的16款实用软件 新平台,新惊喜:记第二届Coding For Fun 创业建议泛滥成灾 实用的不多 腾讯云俱乐部北京站:知名手游商畅谈云时代开发运营策略 LG再战平板市场:将推出8.3英寸平板G Pad 编程语言与工具专题论坛:各类编程语言使用体会分享 淘宝、腾讯、豆瓣、支付宝、网易专家热议大数据分析与BI实战 “创新或灭亡”:Google的80/20只是转移视线的说辞罢了 自动化编排,配合SDN的iMC V7更加开放 [回顾]比尔·盖茨传奇的前半生 IT基础设施与运维论坛:IT基础设施及运维经验分享 记华为HCC2013 Day1:发力高端存储 HCC 2013虚拟化论坛:虚拟化未来发展方向 Windows 8操作系统市场份额增至7.41% Windows 7仍最受欢迎 【开源专访】Sea.js创始人玉伯的前端开发之路 SDCC 2013:阿里周宝方谈“去IOE”战略及实施 百度和高德:最后谁是地图的王者? 【CTO论道】瑞智和康CEO陶建辉:软硬结合是消费电子新潮流 如何让网上资源不被别人下载到本地 天津的朋友们谁能告诉我哪里能买到《Windows程序设计》!!! 求助help & manual(2.7.0版)的注册码 如果win98中的pws中不包括mts,能正常工作吗 ? 为何在BCB中用TDBimage 存取Mysql数据库的图象时出错:invalid blob size ? 如何实现全自动拔号(无用户交互) 请看这个sql语句,怎么错了? 请问,如何设置 键盘开机呀? 关于光驱 如何获取delphi中dbgrid的单元格的内容 问题征解,关于一个智力题的程序解法。 sos!!求救!!!java运行时环境设置的初级问题!各位大侠帮忙了!!!! :-(( 關于delphi6的ActionMainMenuBar组件和ActionToolBar组件 的菜鳥級問題?? 李维的电子商务篇的第二章的例子没法运行,这是为何? 谁能告诉我学VC的步骤和教材啊,还会加分啊 如何将一个可以滚动的窗口的全部内容转换为BMP保存起来(如:IE)?(提供线索就有分)欢迎参与成果供享!!! 请教关于VsPrint Oracle8i Enterprise Manager Release 2.1 相当于ORACLE8.1.几啊? 使用ListView如何操作数据 ★★★简单问题送100分★★★:如何打印框架容器里的的全部内容,包括mschart图表,label,combox等? 我的DW里加入FLASH特效时为什么中文会变成乱码?我给分的............ 我感到天昏地暗、日月无光、前途渺茫、无心睡眠、精神恍惚、双目痴呆相恋8年准备结婚的女友突然和别人结婚了!我受不了了!我快疯了! 请教有关IE5带的ActiveX控件Dhtmled.ocx的98下安装问题 程序员与高级程序员到底那个好过 关于 delphi的一点东东 access一个日期时间字段是短格式的,用什么SQL语句改成长格式的? 怎样才能在主页中显示自己的qq是否在线?????? 有没有平面按钮控件 Interdev6.0 IDE 环境下无法使用MSDN access一个日期时间字段是短格式的,用什么SQL语句改成长格式的?? 大家来帮帮我想想?应该怎么样来删除呢!!!! 各位用VB.net的兄弟,请问你们使得是 Beta1 还是 Beta2 ? 迷周星弛的请来签名啊! 如何操纵RichTextEdit控件??? 我得到GIF图像的这一点的值,怎样得到它的正确的RGB值? 我想请问在CHTML(compact html)中如何对页面进行刷新。 各位老大,你们是如何找到工作的? 在VB.net中,如何实现VB6中的 set A=createobject("XXXX.XXXX") 诸位大虾救命,如何在EDIT控件中判断DBCS字符 !!求救!!对时!!! 在VC中使用Crystal report 8的问题 如何编写c程序自动对GIF图片设置大小 请教:鼠标在windows桌面上按键是否会引发某个事件? 查看DLL的输出函数 menu的问题 web的组件由什么来编写? 嵌入式数据窗口,怎样可以动态往里插数据窗口??? 在DELPHI中如何调用NETBIOS的API函数 AddNew 怎么用?- 怎么办那,啊? 问题标题前的绿色的对号是什么意思?是不是表示问题已经解决? 方程x五次方-3x-1=0在区间(1,2)内至少有一实根. 已知多项式2x的五次方+(m+1)x的四次方+3x-(n-2)x的平方+3 ,不含x的,求2m+n的值 当x*二分之一=y*五分之二时;y=( ) 证明方程x的三次方加x减三等于零至少有一个正根 在多项式x的三次方-x+4-2x的三次方-2+3x的二次方+2x在多项式中x的3次方-x+4-2x的3次方-2+3x的2次方+2的x次方,( )与( ( )与( ( )与( )是同类项,合并结果是( (-五分之二x的2次方)的2次方·5y的2次方-(-二分之一x的2次方y)的2次方 证明 方程 X的3次方 减5X的平方加2等于0在(0,1)内至少有一个实跟 2(3X的平方减2x加4)减3(2x的平方加3x减1) 化简, 二分之一X÷三分之二=五分之二求x是多少 2的a次方等于三,2的b次方等于5,2c次方等于30,试用a.b表示c (2x-3)的平方-(3x-2)的平方=0 x除以十二分之五,等于五分之三,x等于多少 3的30次方等于几? (3x-2)(2x+3)-(x-1)的平方 已知x/x²-3x+1=2求x²/x的4次方+x²+1的值 证明x五次方-3x=1至少有一个根在1 2之间 3x平方+2x-2=3 已知X²-3X+1=0,求X的四次方+X的-4次方得值,X≠0 证明:方程 e的x次方=3x 至少有一个小于1的正根. 2X平方+6X-1=3 X平方+3X-2=? 若x²-3x+1=0,则x²/x四次方+x²+1的值为___ 证明方程X的5次方-3X的三次方+1=0在去甲你(0,1)内至少偶一个根 一个整式A减去-3x+2,再加x的二次方-x-7后得5x的二次方-2x-5,求这个整式A x+x分之一=2 求分式x的4次方—x的2次方+1分之3x的2次方的值 分解因式x的三次方+3x的平方+3x+2 一个整式A减去—3x 2,再加x的平方—X—7后得到5x的平方—2x—5,求这个整式A. 使分式3x+6/x平方-4的值为整数的整数x的值有几个? X三次方减去3X方加2加X=0RT 2x的平方+5x+2 2x的平方-5x-3 2x的平方-3x-20 2x的平方+5x-7 要使分式3x+4/x-1的值为整数的正整数x= x的3次方减3x加2 如何因式分解 280÷4X=14解方程, x为整数,且分式3x-1/x+3的值也为整数,求满足要求的所有x的和 3x的2次方加2x的3次方=? 15分之4x(2分之1加O.8除以7分之8)等于几 若x的平方+3x+1=0,试求分式x的平方+1/x的平方 解方程:x的四次方+3x的平方-10=02x的四次方+9x的平方-5=0 (3x-1)除以3=1-(4x-1)除以6 如果x为整数,且分式(x的平方-1)分之(2x+2)的值为正整数,那么x的值为 x二次方-3x-1=0 解方程 1除以3x-6=3除以4x-8 已知X为整数,且分式2X+2X\X的平方-1的值 若A的X次方=2,a的Y次方=3,则A的3X-2Y的次方等于? 解方程:x的三次方+3x的平方+3x-7=0 5y+1/6=9y+1/8-1-y/3 -3x的三次方)的二次方-【(2x)的二次方】的三次方 已知:1-(3m-5)的平方有最大值,则方程5m-4=3x+2的解是什么是最大值?1-[(3m-5)的平方] 答案不是5/3 解下列一元一次方程;(5y)/6=(9y+1)/8×24-(1-y)×24 请问数轴穿根法解(2x-1)的平方(x+2)(4-3x)(x-7)的三次方小于等于0 已知2-(3m-5)^2有最大值,则方程5m-4=3x+2的解为? 如果x等于5y(x、y均不等于0)那么x和y成什么比例,x:y等于什么比什么 1、(x+2)的三次方+1=8分之7等于多少?2、如果2x+19的立方根是3,求3x+4的平方根急!1、(x+2)的三次方+1=8分之7等于多少?2、如果2x+19的立方根是3,求3x+4的平方根急! 已知:1-(3m-5)的平方有最大值,则方程5m-4=3x+2的解是( ) A.7\9 B.9\7 C.-7\9 D.-9\7解题思路说一下哈! 9y等于5y+120这个方程是多少 一个代数式减去3x的四次方-x三次方+2x-1等于一个代数式减去3x的四次方-x三次方+2x-1得-5x+3x二次方-7x+2求这个代数式 一个多项式与2X的二次方-X+2的和是3X的二次方-2X+1,则这个多项式为 (5Y+1)/6=(9Y+1)/8-(1-Y)/3 证明方程x的5次方-3x+1=0在1与2之间至少存在一个小于1的实根 已知关于X的二次多项式A(X的三次方-X的二次方+3X)+B(2X的平方+X)+X的三次方-5当x=2时的值为-17,求x=-2值 {11x-9y=12,-4x+3y=-5y,解方程
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn