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

高性能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让你可以选择性的关闭一些功能,而不是关掉整个网站。

中国 vs. 非洲:移动医疗的前世今生 Java大数据框架初创企业Concurrent获400万美元融资 基于Edge Animate开发CSS3 Animations 后端服务商Firebase发布全新iOS SDK [爆料]百度云或在秘密打造实时移动Web App开发框架 打造最佳开发团队的几点建议 Facebook与开发者交恶 扼杀第三方应用 负载大逃亡:四十二路怪兽联军及七条逃生法则 那些年,MIT技术男们奇妙的黑客作品 深度分析:腾讯3.3亿美元收购Epic股份值吗? 传下一代iOS或将推行扁平化设计 iOS开发者注意:苹果将拒绝访问UDID的应用上架 领先Google、Amazon、Dropbox,Apple云存储用户最多 传IBM重新设计晶体管 预计五至七年内成熟 快讯:云计算大会6月召开 云计算概念企业股票飙升 集成开发环境:Qt Creator 2.7.0发布 移动周报:“今日头条”CEO,爱冒险的技术宅 从China Daily的iPad版,看中国纸媒如何摆脱“旧情结” 天睿推出大数据探索平台:“开箱即用”的数据分析 Basho开源Riak CS,与AWS S3兼容的云存储架构 MongoDB Days北京杂记 VMware携手亿阳信通 铺垫混合服务 行业应用,移动优先:移动难七大痛点剖析 HTML5开发必备:游戏开发资源合集 老而弥坚:65岁传奇Android工程师谈开发 2013中国云计算有奖大调查,每周大奖等你拿! Google Reader之死另一个不为人知的原因 小团队谈推广:豆果、金山、微博易、面包旅行 敏捷实战:如何让团队迭代交付周期缩短一半 移动设备管理初创公司AirWatch:首轮融资2亿美元 New Relic:不等应用崩溃,实时监控你的App! 帮帮忙,我急需有关ERWIN的书籍资料,请能在哪里下载?急啊!先说声谢谢! 500分求助!!!如何打印MSCHART控件画出的折线图 请问网上有没有关于UI线程比较好的例子?如果有的话,发一个网址给我,在线等待,谢了! 一道选择题 局域网,一方可以ping通一方,怎么解决?? 装了WIN2K后,如何再装LIUNIX实现双启动? TQuery的简单用法,高分大放送! 如何将controls对话框中不用的控件去掉 请问怎么用coff2omf,把Strmiids.lib、Quartz.lib、Strmbase.lib转化成BCB可以接受的格式 JDBC for mysql 的使用 -------问题 偶有重回delphi修炼了,当年偶的师傅还在吗?老千,老鱼,chech,小新,老鬼,你们过的怎样?? 你现在正在看的这种页面如何实现? 我很喜欢delphi,但老板要我转学单片机,请兄弟们说几句,是福是祸?up、gz有分! vb的安装问题 请问如何在两个数据库之间进行联合查询? 迷 !!!!!! 天使的旁边是魔鬼 数据集排序问题 哪里有 MS viso 下载,谢! 用DATAREPORT设计报表,这个怎样设计? ASP写的计数器程序问题 天女散分:process basename 中文叫什么,进程什么名? 数据库句柄清除问题 请问我用JBuilder + weblogic61 编写的 EJB,在我拿到别的地方部署,是不是只拿 XEjb.jar和客户端 就行了? 如何让两个byte类型的变量a和b进行异或(^)操作,然后将结果存入另一个byte中? 我也来一个关于ACCESS的问题,高分请教。在线等待 CDC问题:怎样从屏幕尺寸转换到厘米呢?反之呢? VC中如何给动态产生的控件写事件方法?在线等! 》》怎么没有人解决这个问题呀,谁解决,我给分!!!!! 为什么快捷方式不能用? ★★★有没有像“delphi属性编辑框”一样的控件或是源码(100-1000分)★★★ 谁有RealPlay格式详细信息 500分求救! 请问大家那里有jrun 4下载 如何自己析构单文档模板? MASM32中标号的疑问 这个错误该如何改 关于在OUTLOOK中如何自创模板的问题? com系列丛书那里有卖 一个关于鼠标事件的简单问题 为什么我在JSP中能得到TEXT文本中的数据,却得不到在SELECT中的数据呢? 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 我要一个功能强大的弹出日历 Viva La Costa Rica! 我再也不看Chinese Team的比赛了! 如何做jar包呢?还有如何做bak呢?大家救救我吧。 《inside the c++ object model》问题 这句是什么意思??? 问一个Win2000Server域用户客户端登陆问题。 小问题:在线等待:) 如何删除一个ini文件中的关键项目?急 求救!为什么我的ACESS数据库文件会莫名其妙的达到25M,我还没输任何数据呢?而生成MDE后只有500K? 秦朝灭亡后西汉建立前这段时间叫什么?为何字典上不记载这一时间段?当时是项羽的势力最大吗?为何他不改国号 化学问题H2S和NaOH反应生成什么?H2S和NaOH反应生成什么?几种情况都写下过量和不足H2Na只是一个还有什么情况 什么是石灰是熟化?生石灰熟化方法有那两种? 在KCl和CaCl2所组成的混合物中,KCl和CaCl2的物质的量的比为2比1,求1mol氯离子的该混合物的质量? H2S和氢氧化钠反应...为什么H2S和氢氧化钠反应生成的不是盐和水? 宗法制为什么是分封制中的血缘纽带?宗法制为什么是分封制的政治体现形式? 同学为证明NaOH溶液与稀盐酸发生了中和反应,从不同角度设计了如下方案,进行实验.方案一:先用PH试纸测定NaOH溶液的PH,再滴加盐酸,并不断振荡溶液,同时测定混合溶液的PH,如果(1)简述“强 周朝建立时,世界各国都处在什么阶段 为什么说分封制是宗法制在政治制度方面的体现?难道宗法制不是政治制度吗? 请大家来看看 这是个什么昆虫,叫什么名字,好漂亮哦 H2S + NAOH = 为了方便回答者准确理解,请您对问题标题或内容进行补充 秦朝郡县制郡与县的关系是什么?如题.郡县存在隶属关系吗?哪个大那个小?直接搜到就往上粘的答案就算了,表浪费我流量,回答满意给全分哦 韩国灭亡时间周朝啊 周朝是由谁所建立的啊? 我国传统经济发展方式是什么? 周朝时候.“中国”指什么A是周天子的直辖地区 B中原地区 C华夏族的诸侯国 D首都 是谁建立的周朝 向久置的氢氧化钠溶液中加入稀盐酸 怎么反应?久置的氢氧化钠 是全部变质还是部分变质?、 周朝的建立时间回答 大禹是周朝的建立者吗 写出稀盐酸与氢氧化钠溶液反应的化学方程式是什么?. 在KCl和CaCl2所组成的某混合物中,K离子和Ca离子的物质的量之比为2:1,则该混合物中含CaCl2的质量分数为 只求最后一空,要详细的阶段过程. 向一定量的氢氧化钠溶液中加入一定量的稀盐酸后,混合液PH范围取混合溶液滴加酚酞试液,溶液无色,能否证明酸碱中恰好反应,理由 如要证明上述酸碱之间确实发生了反应,这混合溶液的PH值范 稀盐酸和氢氧化钠溶液能反应吗?现象是什么? 在KCl和CaCl2的混合物中K离子和Ca离子物质的量之比2:1,则该混合物中含CaCl2的质量分数为___,含1molCl离子的该混合物的质量是__g(写出过程) 现在又 KCL和CaCL2 组成的某混合物,其中K+ 和Ca+ 的物质的量之比为2:1若将该混合物溶于水得到500ML溶液.且 C(K+)为1.0MOL/L(1) 含有1MOL CL- 的该固体混合物的质量为?CL- 物质的量浓度为?溶液中 氢氧化钠溶液能够与稀盐酸反应的理由RT kcl,cacl2组成的某种混合溶液中,k离子与ca离子物质的量之比2:1,求混合物中cacl2的质量分数? 在KCl和CaCl2的混合物中,K+和Ca2+物质的量之比为2︰1则该混合物中含CaCl2的质量分数为__________,含1mol Cl-的该混合物的质量是__________g.思路清晰一点, 向久置的氢氧化钠溶液中加入稀盐酸 怎么反应?久置的氢氧化钠 是全部变质还是部分变质?、 在KCl和CaCl2的混合溶液中K离子Ca离子的物质的量之比为2比1,KCl和CaCl2的物质的量之比为?质量之比为?还有一问,若要取出1mol氯离子的该混合物,应取该混合物的质量为? 生石灰加水熟化会有什么现象产生?生石灰在使用前为什么要陈伏两周以上?为什么陈伏时需在表面保留一层水? 血缘关系维系的宗法制的内容 工地上使用生石灰时,为什么要进行熟化?熟化时,为什么必须进行陈伏? 贞观之治,文景之治,开元盛世,康乾盛世的皇帝分别是谁? 了解宗法制和分封制的基本内容,认识中国早期政治制度的特点1.宗族关系从此成为基本的政治关系开始于______(朝代)2.商代贵族以血缘关系为纽带,实行_____,各个宗族都是政治实体.商代政治 中国历史上的盛世有多少个?到底哪个最“盛”?比如,仁宣之治,康乾盛世,贞观之治. 生石灰熟化的体积膨胀系数与生石灰块沫比之间的关系? “宗法制衰落的实质是政治关系中的地缘关系取代血缘关系”怎么理解? 盛世的内涵? 中国历史上有哪些盛世 从文景之治,贞观之治,开元盛世中得到什么启示? 宗法制得以维系的重要因素是血缘关系的题目9.宗法制得以维系的重要因素是血缘关系.最能证明这一点的材料是( )A.孔子说:“周因于殷礼,所损益,可知也……” B.《说文解字》载: 中国历史上的盛世之治有哪些?比如:贞观之治开元盛世等......只列举名称和朝代即可 在我国古代历史上曾出现过许多经济繁荣的时期,如文景之治、贞观之治、开元盛世等等.它们能够出现的共在我国古代历史上曾出现过许多经济繁荣的时期,如文景之治、贞观之治、开元盛世 浓醋酸加水和冰醋酸加水导电能力变化有什么区别吗? 中国历史上有哪些盛世 理解文景之治,贞观之治,开元盛世出现的原因和意义 冰醋酸加水稀释时为什么导电能力是0 生石灰熟化时为什么必须进行陈伏 秦朝是怎么灭亡的?四个小问题:1.秦始皇何时登基,在位多少年?2.秦朝用了多长时间灭六国最后统一全国,秦朝统治持续了多少年?3.秦始皇怎么死的,死后由谁继位,秦朝最终是怎么灭亡的?4.秦朝 向一定质量的冰醋酸中加水,导电能力先增后减.老师讲的是最初电离占主导因素,加水电离增大,离子浓度增大,导电能力增大.然后溶解完后,加水在稀释溶液,整体离子浓度减小,导电能力减弱.我 请问中国历史上41个盛世是哪41个我想说的是 我只是初中生 目前我总结出来的有27个真心想不出来了 只是这次期末考试要写四个我在试题纸上写了27个在那边选 但我看到说有41个我很好奇剩 在kcl和CaCl2所组成的某混合物中,K+和Ca2+的物质的量之比为2:1,该物质混和物中CaCl2的质量分数为多少,KCl和CaCl2的物质的量之比为多少,含1molCl-的该混和物的质量是多少g? 人吃了水银会怎么样 一般的通讯干燥剂,哪有的卖? 如何将块状生石灰熟化成石灰膏? 在kcl和cacl2所组成的某混合物中,k+与ca2+的物质的量的比为2:1,则该混合物中含cacl2的质量分数为 ,kcl与cacl2的物质的量的比为 ,含1molcl-的该混合物的质量是 克. 从秦朝灭亡至西汉建立,其间到底发生了什么 H2S和NaOH如何反应如题 在KCl和CaCl2组成的某混合物中,K+和Ca2+的物质的量的比是2:1,则KCl与CaCl2的物质的量之比是?能否告诉我为什么是2;1?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘