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

高性能、高流量Java Web站点打造的22条建议

HTML文档下载 WORD文档下载 PDF文档下载
流量的激增让众多机构“疲于奔命”,高扩展性、面向服务的架构已成为当务之急。这里为大家分享打造高流量网站的22个建议,其中包括数据库、缓存、架构等多个方面。

从2005年-2013年,Ashwanth Fernando曾供职于Best Buy、Pearson VUE、Walgreens、Walmart eCommerce等多家知名公司,现在Apple从事高级工程师、平台工程师一职,拥有丰富的高流量Web应用程序打造及架构经验,近日Ashwanth撰文分享了他的高流量Web软件打造经验。

下为译文

受Joshua Bloch写的《Effective Java》启发,我想分享自己关于建立高流量Web软件的整体建议。这些术语中的一些可能不仅仅关于软件设计也关于工程组织、文化等相关领域。

免责声明

  • 只代表个人观点
  • 如发现与现实情况相违背的原则,请谨慎对待,或使用一般认识

1. 考虑使用不止一个数据中心

在商务领域,一直存在许多恐怖的道听途说,而这些恐慌都因为他们只使用了单一的数据中心。如果你想在自然灾害或者电力供应故障中幸免,那么请使用多于1个的数据中心,使用active-active模式来配置你所有的数据中心。虽然在开销上可能会有所增加,但是比只使用单active的配置要值得多——因为在passive和active副本上,总会发现有些数据片不一致。

2. 考虑使用稀疏数据中心部署

不管是通过PaSS,还是运营团队进行,当软件集群被部署到同一个数据中心的机架上时,确保这些机架使用不同的电力供应。你不可能保证机架供电的万无一失,一旦失败将会导致整个机架上服务器的丢失,这个时候你绝对不会希望整个数据中心都只连在一个电路上。

3. 考虑使用私有云来组织资源

IaaS开源解决方案Openstack等其他的软件至今尚未成熟,需要庞大的团队来运营,在运行期间会产生各种各样的问题,除非你有足够的预算,否则别考虑建立一个私有的云服务。然而,私有云可以提供众多优势。首先在部署方面就可以进行众多的定制化,这远比AWS或者是Rackspace货架上的选择要多。其次它允许你做许多的硬件定制化,就好比在硬件层次的Oracle就比准虚拟化环境快得多。

4. 考虑使用PaaS做解决方案

为软件释放投入巨量人力进行部署的日子已接近尽头,各个机构在敏捷及快速市场投放上绞尽脑汁,而PaaS无疑会加速这个部署过程。它允许特性尽可能快的发布,同时也能让开发者得到极大的满足。这是个非常好的开始,给予开发者部署集维护自己软件的工具,这将给工作积极性带来很大的提高。同时,越来越多的开发者甚至不愿意加入没有自动化软件部署系统的公司。更少的领导,更简化的环节,将给你带来无与伦比的效率。

5. 如果使用Oracle或者MySQL,只做基于主键的查询

只有在RAC中存在很少的Artifacts时,Oracle才能在流量高峰时获得最佳性能。尽可能避免使用Referential Integrity、Triggers、Materialized Views、Views、Stored Procedures和其他的Oracle Artifacts。Triggers可以在从数据访问层实现。Stored Procedures可以完全转移到应用层。数据库只用来存储数据,基于字段进行存储而不是主键,使用类似Lucene的索引器做表的索引,使用一个允许在结果集上做基于其他字段的查询,这将会返回这个记录的主键,而这个主关键字可以进一步被用来拿取记录。

6. 考虑使用Oracle或者MySQL分片

当schema达到临界点,Oracle的可伸缩性将被限制,这里建议你对schema做基于功能(比如订单,产品目录,促销活动,客户等)上的分片,同时也为高密度表做key shards。为key shards使用一致性哈希,这样当一个新的RAC被添加RAC集时,你不再需要遍历所有RAC中的键,以获悉哪些键需要被移动到键的分片中。

7. 如果你使用Oracle做RDBMS,考虑使用Data Guard及Golden Gate

使用这两种技术将大大简化甲骨文的运营周期,Data Guard允许一个近实时passive读副本(没有客户端会与之连接),而Golden Gate则允许一个近实时的active读写副本。

推荐的部署拓扑之一就是为同个数据中心的每个分片配置1个Data Guard;使用Golden Gate来备份其他数据中心的每一个分片。

注意:Golden Gate只是近实时

8. 为Oracle或者MySQL添加数据访问层

假设你有一个可以接受500个连接的Oracle RAC,而你有25个jBoss实例和这个甲骨文RAC对话,每个Jboss实例配置范围10到50的数据库连接池。

当jBoss集群开启时,连接到Oracle的数目为250(25乘10),一切运行良好。随着流量快到jBoss集群的峰值,想象一下将会发生什么。在某个点后,Oracle将开始拒绝连接。

因此建议通过一个Multiplexer层建立一个Multiplexe应用程序服务器连接。可以是一个简单的 netty应用,这个应用运行在一个每个netty节点仅能够与Oracle建立25个连接的集群上,但是对入站连接来者不拒。它会将所有的连接循环传递给Oracle,但是绝对不会超过25个,同时还使用Oracle JDBC驱动与Oracle通信。

9. 避免跨数据中心事务

当下,这已经是非常简单的事情,但是在任何地方都非常适用,包括Oracle。在两个数据不同数据中心,不要适用1个XA适配器去做跨数据中心事务,这将导致相当长时间的应用线程阻塞,直到两个阶段的提交完成,因此将带来你的应用程序服务、服务和所有同步上传流崩溃,最终会因为线程数量增加而导致整个应用程序崩溃,比如在类似Black Friday流量情况下。

10. 考虑分布式缓存框架

Memcached、Counbase是最常用的选择。但实际上,卸载非易失性数据到一个中心缓存集群上,确实没必要在每个JVM上做相同的拷贝。但是确实需要设置小数量的JVM堆作为分布式缓存的一个MRU缓存,这样的话,缓存集群本身将会受到非常少的网络调用。

  • 在JVM上大多数分布式缓存支持本地缓存的概念,它将储存最常用的对象。
  • JVM上,GC的pause time同样被最小化了,因为对象图中需要遍历的对象比以前更少了。
  • Warmup过程是必不可少的,这可以帮助将数据导入分布式缓存,这个过程应该在晚上或者是用户访问量低的时候。

角逐Hadoop市场,Cloudera与Hortonworks竞争白热化 OpenStack将提供对Docker的支持 Facebook Q1财报:营收25.02亿美元、59%来自于移动 黑客们盯上了卫星,IOActive的惊人发现 开发汽车应用之前,你必须了解的7件事 埃森哲:智能电视潮流,势不可挡 直接拿来用!Facebook移动开源项目大合集 高大上Hadoop技术培训:Hadoop在企业中的应用实战 【走近讲师】新浪丛磊:通过MAE构建企业内部私有PaaS平台 API增长新趋势 消息应用类独占鳌头 软件项目为何会失败? 严澜:搭建高可用的MongoDB集群(二) 微软、思科、Google、Facebook等联合推出CII 狙击“Heartbleed” 这是个神奇的国度:细数五大印度裔IT牛人CEO Atmel CMO Sander Arts眼中的创客运动 Unity“三巨头”:全心全意为开发者服务 全球移动广告现状报告:哪种平台、应用最赚钱? 《近匠》Smart Wallit,钱包找不到了?给它“打个电话”吧 Mozilla新CTO:JavaScript、 Firefox OS专家Andreas Gal 李彦宏发布百度大数据引擎,及与谷歌、亚马逊等类似项目对比 大数据领域,实时打击欺诈犯罪的4个战场 一周消息树:谷歌Project Ara,将开启下一个智能手机时代 数据恢复服务商的6个最佳实践 【走近讲师】谭晓生:魔高一尺道高一丈,360基于大数据的网络攻击检测 一周热点:摩尔定律让位于贝索斯定律 阿里巴巴集团CTO王坚确认出席第六届中国云计算大会 【走近讲师】青云甘泉:混合云的构建及其对企业的帮助 RadiumOne创始人兼CEO因家暴被公司解雇 3D打印狂潮:可检测皮肤疾病的低价手机显微镜 浅谈导航设计,开发者必备的十大实用技巧 【云先锋 41】上海越诚:基于云服务的建站类iService软件超市 请问各位高手,用语句建立(create trigger)触发器怎么建立? 老是出现安装98提示,答者有分,谢谢 关于-------DataGrid-------的一个郁闷问题!高手们来吧! 一个菜鸟感到头痛的问题:关于treeview COM + ADO编程 救命啊,大侠们关于IE 不能执行JavaScript 在页面上显示书名和图书简介两个字段的内容的问题:前者正常显示,而后者显示出现乱码?真奇怪!求助!谢谢! ADO的游标是什么意思? JB7和weblogic 7.0 配置 EntityBean的问题,有异常? 写了个程序用来修改SyGate的数据库,谁有兴趣? 初次使用mysql 关于服务器的用户全部被人删除 真的很是问题 如何保留rtf的文本格式啊? 哪有免费论坛程序? GetFieldValue( nIndex, varValue, nFieldType )函数出错 请问Updata和Refresh有什么区别? DBNull问题,高手指教! 怎么样用xml做树形目录菜单,如csdn的左边的目录菜单,up者有分 关于菜单项的问题 是用outlook到如数据的问题 test7777 求救!!!!! 随机从表中抽出N条记如何写? 如何用脚本动态的生成一个新网页? 如何做出象DELPHI中的菜单在ControlBar1中的样子? 急·!!怎样能把磁盘上的文件删出一行 有关多字段排序的问题? 什么是发布与订阅? 1、五一节快到了,大家打算怎么过啊?:P 我从网上Down下一个VB的事例,但是窗体上控件的位置没法移动??? 如何在访问不同域的COM+服务,如何配置? 求购CRM源码(delphi) 我写了一个exif读取的程序,欢迎大家热心测试,给出好的建议的赠送代码 2、五一散分帖,收集一些东东。 问个弱弱的问题! 帮忙了,谁有XP的序列号? 一个很菜的问题,求助!!! 超时已过期错误提示问题 河北保定,转让大量C++世界经典。 关于控件堆叠的问题 session的问题 今天发工资,太少不爽,大散分,谁要是能帮我找一个挣钱的私活,我给他200分(令给) 请教数据库! 请教有关对话框的问题? 3.五一散分帖,我一个朋友说。。。。。。。。 高分相求:JBUILDER8 Enterprise 版,或下载地址。 怎么才能获得editbox的值 请问rasWinGod 这个控件如何用!(在线等待) 请问如何用CB生成可以在集成到网页上的activeX控件?急阿........ 如何把用逗号隔开的字符串赋给一个数组? 铵根和氧化合后是什么东西NH4和O组成什么, 翻译:“这就是我暑假最难忘的事情” 分辨率≦0.0012ns 后面的单位是是纳秒么? 那电子噪音 一种商品,先降价百分之二十五,再提价百分之二十五,现价比原价降低还是减少了? "这是一个难忘的暑假"用英语怎么翻译 将洁净的铁钉放入稀盐酸会有什么现象 一件商品先提价百分之二十五,再降低百分之二十五,现价是原价的百分之几? 富人和穷人的区别 试述锻造用高速钢坯加热操作的要点. 有关穷人和富人的那篇文章——幸福是什么?的作者是谁啊? 穷人和富人的区别就差那一点点 将铁片加到1L0.5Mol/LFeCl3溶液中,当Fe2+和Fe3+的浓度相等时,贴片的质量减少多少? 以穷人和富人为题写一篇不少于800 字的作文 天下转漕,仰此一渠.(1) "一渠"是什么?(2) "一渠"在当时起了什么作用? 同学们,你的暑假生活一定过得非常有意思吧?选一件你觉得特别有趣或有意义的写下来.别忘 MATlab中det()用于求方正的行列式,那么非方阵的行列式用什么函数来求呢? 作文为祖国做贡献的人200字 急!(1)将铁片加入到1L0.5mol/LFeCl3溶液中,当溶液中Fe3+和Fe2+的浓度相等时,铁片质量减小( )A.5.6克 B.11.2克 C.2.8克 D.1.4克 (2)9、向某晶体的水溶液中加入含Fe2+的溶液后 铵根或氨气在什么条件下会表现还原性?那些物质可以氧化铵根?为什么高锰酸钾都不行?(高一,电极电位看不懂,翻译成高一化学可以看懂的语言) 四年级作文:暑假最难忘的事 在相同温度下,胆矾和SO3,哪种物质溶解度高 数学连续函数和行列式的题,在线等答案啊.5题和6题.我想要详细答案,跪求大神帮忙. 怎样判断某状态下的蒸汽是饱和蒸汽还是过热蒸汽,查表时表格中的数据跨度大,有些状态查不到时 将足量铁片加到1L0.5mol/LFeCl3溶液中,当Fe2+,Fe3+的浓度相等时铁片质量减少多少 氢氧化铵和一水合铵是同一种物质吗?若不是,那么它们各自有什么性质?NH3·H2O和NH4OH到底是不是同一种物质?并注明答案的出处~ 一个物理关于比热容的表格题在综合分析的时候有的时候会填 同种物质,质量越大,吸收的热量与升高的温度的比值越大有的时候也会填 同种物质,吸收的热量与质量及升高的温度的比值相同 较低轨道是指椭圆轨道还是指圆轨道? “天下转漕,仰此一渠”指的是隋朝大运河的主要功能为? 雅思写作范文: 在地球的圆形同步轨道上有某一卫星正在运行,则下列说法正确的是( ) A.卫星的重力小于在地球表面时受到的重力 B.卫星处于完全失重状态,所受重力为零 C.卫星离地面的高度是一个定 热电阻四线制接法和PLC的接法 在下列应用中,各应用了化学物质的什么性质?A用食盐腌渍食物.B用盐酸除去铁钉表面的铁锈.C用汽油洗去衣服上的油污.D用漂粉精消毒游泳池中的水. 从30cm长的木条上截出两段长度相等的木条后,还剩6cm长的木条,求截去的每一段木条的长是多少cm?设未知数,解方程, 古人评论大运河说:”天下转漕,仰此 一渠.“你能说出这句话的意思吗?水 运粮食在古代为什么这么重要. 醋酸食盐熟石灰碳酸氢钠碳酸高锰酸钾大理石的主要成分(这个和碳酸有什么区别?) 一根木条长28米,用去12米.用去的部分占这根木条长度的几分之几 热电偶的联接形式有几种目前热电偶在测量温度时,与被测物的联接形式,也就是说热电偶热端的固定形式有哪几种. “天下转漕,仰此一渠”是什么意思历史问题 求过点A(5,2)在两坐标轴上的截距互为相反数的直线l的方程求出来我会加分的 冷色和暖色指的是什么?经常听说有分别,那分别是什么 化学物质理化性质上哪查询?可查半致死剂量,毒性,熔沸点,特征等等 蛋白质复性和核酸复性区别 什么是冷色和暖色,怎么区别 氢氧化钠与钾反应 核酸复性和杂交的区别? 钾和钠低应吃什么 行列式是多线性函数吗?最近才听说的,由于我所学的线性代数课本所给定义不同,所以不好理解,谁能解释一下“行列式是多线性函数” 纺织,造纸等生产属于 什么生产 课作本上印着:一个人面对镜子,左手拿毛巾擦脸,问:我是用右手擦脸吗?老师的答案是:是用右手擦脸.还教孩子们把书翻过去,看背面,背面看镜子里的人是用左手在擦脸.所以说,实际镜子外 为什说行列式是一个函数 求铁片放入氯化铁溶液中的现象 铵根离子一般能被什么氧化,请详细全面些, 古人评价大运河说:“天下转漕,仰此一渠.”对这句话理解有误的是:A当时国家水运粮食全靠大运河B水运粮食在古代十分重要C天下转运粮食只有一条路可走D高度评价大运河在水运粮食中的 怎么把草图大师中的模型按比例缩小啊 典型的氧化铵类表面活性剂有哪些 天下转漕 仰此一渠的意思是 草图大师缩放问题用鼠标中建缩放的时候,比如我要缩放一个茶几 但是不能缩放到很大,缩放到一定程度上就直接跳到背部去了,而且视图看到还有切角,这种怎么调整? 四氧化三铵的化学式 情书情诗我文采不好 我想要一篇情书 不需要花言巧语 需要真澈的言语 是初恋 多点无所谓 情诗也行 我已经追到了 哥们儿 想来点能保留一生的纪念 唉 我不打算冲击北大 所以我的分数完全 钢坯与钢材的加热规范? 杭州凤起东路将继续往东延伸 唐家村桥周日西湖国际马拉松开跑 部分道路临时义乌城区一黄金地块6.1亿成交 业内中央第二轮巡视展开 已进驻商务部和三广州人大常委会公布任免名单 任命15美在联合国驻地部署情报人员 拦截各国诸永高速东阳诸暨交界处数座桥墩下现空阿里推出手机上网流量免单计划 杭州只杭州市“公述民评”面对面问政第三场:中央第二轮巡视工作展开 已进驻商务部杭州:企业拒绝工资集体协商 最高罚款财政部:中国有信心完成经济增长7.5艾弗森正式宣布退役 称至死都是一名7国锦赛-丁俊晖6:1胜进8强 世界排46名中国与印度非法采金者在加纳被捕杭州新增房源远超成交量 很多板块挑选国际足联主席公开嘲讽C罗 重压之下只苹果因电池问题召回iPhone 5s郎平笑称自己是劳模 自5月初接手几乎歌诗达·维多利亚号下月狮城起航共同社:解密文件显示日本曾试图阻止中行程不公开、方式有疑问 蔡英文募款餐福州金鸡山隧道明起双洞通车 青运会前大陆银监会:协助台资银行进驻福建自贸俄罗斯举行年度最大规模军事演习 约9密西西比州大学教授遭枪杀 当局封锁校贵州重拳打击走私冻肉 两月查获710中秋国庆加班九天拿一月工资违法 属于8月中国经济现向好迹象 官方密集出台金融市场再下调巴西2015年经济增长深圳等被建议升格为直辖市 专家:经济贵州一官员被举报与多人通奸 省纪委对北京警方:悟空乱写字压五百年,故宫铜丹麦警察与难民小女孩玩游戏感动网友湖南65岁养老院护工杀害9名老人 称林伯渠为何向毛泽东呼吁“这股歪风非刹群体重于个人:用传统文化涵养核心价值因车祸导致双腿受伤 他趴在地上坚持获【长城微评】员工当街跪拜领导 算哪门曝鹈鹕两年合同签约罗伯茨 已开始随队湖人正式签落选新秀中锋 本有实力进乐谢伏瞻主持召开省政府常务会议 研究“
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘