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

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

TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi “BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 别再设计易碎的Web API! LinkedIn:55人支持2700位员工,2亿用户的大数据分析 Brian Krzanich是谁?这位新CEO预示英特尔未来怎样? HTML5开发者心声:浏览器兼容性成最大问题 传微软6月下旬将发布第二代Surface 7到9英寸全有 Turbulenz:HTML5 2D和3D游戏引擎开源 携程开放平台总经理夏天:内容+高转化率成就开发者 直接拿来用!最火的Android开源项目(一) Qunar 谌振宇:旅游行业的移动化如何布局? 大数据分析“铁三角”: Teradata数据仓库、Teradata Aster与Hadoop Teradata专业服务:打造行业企业的“数据科学家” Xamarin Evolve 2013:竭尽全力让C#服务iOS与Android 史上最全!57个Web框架4轮横向对比 回顾银行数据的可用性和一致性历史 Qubole:托管在AWS平台上的Hive服务 自由操作系统 Debian 正式发布7.0版本 4月份浏览器份额:IE 8仍居第一,IE 10翻番 亚马逊正式在华推Android应用商店 收入3:7分账 不要男孩,只允许女生参加的四所编程学校 下一波App机会在哪里? JS1K 2013优胜作品公布 3D蜜蜂仅获亚军 专访:前新浪网架构师徐佳转行卖水果背后的故事 谁知道哪里有bmp到jpg转换的源代码?帮帮忙! 提示怎么为空?有代码? Application是什么意思? 模范中国百姓 寻找一个类似于object inspector的控件 如何返回在sql server中自己设定的错误提示..... ocp是什么? 當手機 被盜 後的措施 好象没什么人啊 祝斑竹zxyufan(宇凡)考试顺利 :) 高手请进!!!!!!! 怎么从一个字符串中截取字符串 关于软件的序列号的问题? 哪位高手给解释一下啊??? 各位DX:怎样在填完一个文本框后光标自动跳到下一个框里?很急的,解决一定给分! treeview问题,我只能给这么多分了,拜托大家,急死我了!!!! 连接数据库的一个参数:Initial Catalog=Music 是什么东西,在那里设置? 在DELPHI中能用ADO连接远程有固定IP的数据库服务器上的数据库吗?怎么连接? 各位兄弟姐妹,快来看呀! 请教各位大虾:我在上网的时候为什么老是死机,鼠标键盘一动不动了!!! pb中访问数据库必须通过datawindow么? 为什么就差这么一点了~???快帮帮忙啊~! OO里面的"is a"和"has a"应该如何理解啊?举个例子看看 请问在哪可以找到可以做简历封面的图片呀?后天就是招聘会啦,快快帮忙呀~~~ javaServlet的一个问题。急! DELPHI高手!-----300分 ASP开发问题,如何在用户提交注册信息时自动分配给它一个用户ID号? 我想在 Excel 中给文件字加双下划线,可是编译时提示变量没有定义 有谁能给我一份简单的COM代码? 有关interface??? 昨晚,初恋情人不经意的出现在梦中,你到底离你的初恋情人有多远,撒分了 一个昨天没搞明白的问题! redhat 7.2中如何设置代理服务器 求教高手一个Java中一直困扰我的问题,急!急!急! 谁能够给我个例子实现 Dll向应用程序单向通信 Dll->EXE?50分? 请问.......... 在数据窗口拖动垂直滚动条死机。只能ctrl+alt+del结束任务。倾听你的声音。 请教各位大虾两个Sql语句 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! What is he like?正确翻译 与What does he look like?得区别 she doesn't like soccer.she thinks it's boring.英汉互译 语法专练:写出下列单词的复数形式.1.is/am 2.you ;he/she/it 3.this ;that 4.(1)desk ;orange :toy(2)class ;bus ;box (3)family最快并答对给分 为什么要给树刷白灰?请说明具体原因,谢谢!请说明具体原因啊!比如为什么刷了石灰就防冻?为什么刷了石灰就防虫? She doesn't like taking out the trash because it's _____ A.bored B.boring请说明理由,thanks a lot. 配制200毫升10%的稀硫酸溶液需98%浓硫酸多少毫升(98%的浓硫酸溶液的密度是1.84g/ml,10%的稀硫酸溶液的密度为1.07g/ml) 一条路长2600米 宽6米 铺白灰5厘米 需要多少吨白灰1方等于多少吨白灰 这个比较重要 He doesn‘t like documentaries because tey are boringHe doesn‘t like documentaries (because tey are boring)对括号提问 配置200克24.5%稀硫酸,需多少克的浓硫酸.实际操作时,取98%浓硫酸多少毫升? 某课外活动小组,在探究 沉浮条件时,将重100克的物体放... i don't like (documentary) ,because they re boring .改成适当形式 (4)配制1000毫升10%的稀硫酸溶液需98%浓硫酸多少毫升? what are they like对还是what do they like 1吨石灰能出多少立方白灰 由配置500g20%的稀硫酸,需要98%的浓硫酸和水各多少毫升?(98%的浓硫酸和水的密度分别为1.84g/ml,1g/ml) What do you like?中文翻译 what does she like?意思是什么 She is a policewoman.改为复数形式 What ___ do they like? 配置500克质量分数为20%的稀硫酸,需要多少克质量分数为98%的浓硫酸,多少克水 为什么溶质质量=500*20%=100g?我一直以为是500/20%的 要配置质量分数为百分之10的稀硫酸196克,需要百分之98的浓硫酸()克,水()克 英语翻译这句话的前后语境:people know what they do; they frequrently know why they do what they do; but what they don't know is what what they do does. 那位天才帮帮忙,I we you (单数) you(复数) he she it t那位天才帮帮忙,I we you (单数) you(复数) he she it they 的名词性物主代词是什么? 配制质量分数为40%的稀硫酸400ml,需98%的浓硫酸____ml,水____ml铅蓄电池中的电解液常用30%-50%的稀硫酸.欲配制质量分数为40%的稀硫酸400ml(密度为1.3g/立方厘米),需98%的浓硫酸(密度为1.84g/立方 如何提高白灰的钙量是按什么比例进行加工的? I的宾格形式,复数形式以及复数形式的宾格形式.还有she he it'sI的宾格形式,复数形式以及复数形式的宾格形式.还有she he和it's 配制100克百分之20的稀硫酸,需百分之98的浓硫酸多少ml?需加水多少ml?百分之98的浓硫酸的密度为1.84g/ml 白灰中的全钙怎么测定啊 用质量分数百分之九十八(密度每毫升1.84克)的浓硫酸配制500毫升质量分数为百分之二十的稀硫(密度每毫升1.14克),稀释需水体积是多少? 水泥石灰砂浆1:0.2:2的配合比是怎么样的 钙质白灰和镁质白灰怎样划分 配制200g24.5%的稀硫酸,需 ( )g98%浓硫酸和 ( )g水.实际操作时,取98%浓硫酸( )mL(精确到1mL) 有100千克浓度为50%的硫酸溶液,在加上多少千克浓度为5%的硫酸,硫酸溶液就被稀释成了25%的浓度? 白灰和脱硫石膏粉结合影响白灰的含钙量吗?为什么 一间长9米,宽6米,高4米得教室,门窗面积是15平方米,要粉刷顶棚和四壁,粉刷的面积是多少? 在100千克浓度为50%的硫酸溶液中,再加入多少千克浓度为5%的硫酸溶液,就可以配成浓度为25%的硫酸溶液? Does she like _______(swim)?Yes,she__________(do). 白灰墙面该怎么装修?租的房子是白灰墙面,会掉白灰的那种,贴不上墙纸,在墙上刷什么涂料或者漆好?白灰墙面该怎么装修?租的房子是白灰墙面,会掉白灰的那种,贴不上墙纸,在墙上刷什么涂料 数学应用题在100千克浓度为50%的硫酸液中再加入多少浓度为5%的硫酸溶液 ,可以配成浓度为25%的硫酸溶液. 选择最佳的填空:1.__Kitt like playing the violin?--Yes,she___.a.Do,do b.Does,does c.Does,do2.Are the students jumping or running in the playground?a.Yes,they are .b.They are running.c.No.They aren't jumping.3.___triangle is this?It's Peter's. she he it 复数 WE的单数形式 SHE的复数形式 一个物体的质量为2千克,体积为0.03立方米,求静止时的浮力?(在水中) Does she like her dress?yes,she does.的中文意思,那位高手知道, 实验室如何用固体氢氧化钠和浓硫酸分别配制稀的氢氧化钠溶液及硫酸溶液 一块浮在水中时,露出水面体积为0.000006立方米,它的总体积为0.000008立方米,求物块在水中受浮力为多大?(2)物块的密度为几? 找错 does she like oranges?--yes,she does't I don't liketomatosBill birthday is next weeklet's thinking about the food he\she的复数形式 she does. 这个does 如何翻译?Kate has been slow to realize the teasing, but now she does.Kate 慢慢意识到是在开玩笑,后面应该如何翻译? Does she like rabbits?Yes,she____.Ado Bdoes C doesnot 装修 中山 500号水泥,沙子,红砖.一级白灰的价格大概是多少? “Does she like music”怎么读? 白灰显碱性么,白灰的PH 大概是多少!我想调节下水的PH值,水是酸性 把水变中性加白灰可以吗? 新房白灰墙面装修,想贴壁纸,要不要把白灰铲掉呢? 白灰粉是灰钙粉吗?不是的话,那两者有什么区别? 用98%的浓硫酸(密度为1.84克/CM3)和水配置100克10%的稀硫酸,下列仪器中一般不需要使用的是( )10毫升量筒 B.托盘天平 C.100毫升量筒 D.250毫升烧杯说出理由, 若用98%用浓硫酸来配制500毫升20%的稀硫酸需用浓硫酸多少克? 如何用白灰粉除潮要是屋子里返潮呢 She doesn't like documentaries _because she thinks they're boring_(对划线部分提问) 写出下列单词的复数形式 1、this― 2、that― 3、he/she/it― 4、i― 5、is/am― 6、you― 7、friend―8、bus― 9、egg― 10、ruler― 11、pen― 12、book― 13、map― 14、apple― 15、cake― 16、teacher― 17、grade―
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn