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

高性能、高流量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过程是必不可少的,这可以帮助将数据导入分布式缓存,这个过程应该在晚上或者是用户访问量低的时候。

Node.js 打造实时多人游戏框架 深圳微信开发者大会购票企业特征分析 上门汽车服务“e保养”完成A轮500万美元融资 Docker之父Solomon Hykes谈项目开发的初衷和挑战 浪潮是如何实现单日5000台x86服务器交付互联网的? Bootstrap 3.3.0发布 版本4不再支持IE8 漏洞预警:FTP曝严重远程执行漏洞 影响多个版本Unix 【简讯】W3C小组宣布HTML5标准制定完成 AMD发布GPUPerfAPI 2.14,GPU性能检测更Easy! 开放能力升级——微信公众号登陆授权开启公测! 百度最“智能”的新型推荐技术——智能因子分解机 消灭Bug!18款最佳的问题跟踪管理应用程序 Google Analytics为什么会这么快 【MDCC 2014】Xamarin深入体验营——开发实战大揭秘 【MDCC 2014】电信技术专场:运营商与开发者如何合作共赢 【MDCC 2014】高德LBS大赛闭幕式暨颁奖典礼:下一个50亿应用花落谁家? MDCC 2014移动开发者大会开幕:全生态系统齐聚 开发者成主角 蓝港互动有限公司董事长&首席执行官王峰:移动互联网泛娱乐化趋势 多盟联合创始人&总裁张鹤:多盟DSPAN助力开发者高效变现 创新工场联合创始人汪华:移动互联网时代的跃迁式增长 阿里巴巴集团UC移动事业群总裁俞永福:AMAP Inside——更专业、更开放 《程序员+》移动应用上线 启动“2014 MDCC十大人气应用/产品评选活动” 微软开发体验与平台合作事业部大中华区DX部门总经理Srikanth Raju:基于云的跨平台开发 Facebook平台工程合作部亚太区总经理张博:通过Facebook构建下一代移动应用 Vungle工程副总裁Wayne Chan:移动视频广告的未来 友盟副总裁焦岳:2014移动互联网行业趋势&大数据的行业价值与运营支持 联发科技创意实验室副总裁Marc Naddell:以小博大的可穿戴方案 用友软件股份有限公司高级副总裁谢志华:企业互联网移动化触手可及 【MDCC 2014】英雄会晚宴——厉兵秣马,再上征程 移动开发技术与平台峰会(上):流量优化、数据管理、IM、LBS与跨平台开发 【推广、盈利与投资论坛】探寻推广与盈利新趋势 dataset更新。100分 请您支招 通配符 有爱国心的高手快去黑了这个网站 这样的字符串比较怎么做?? 怎样在VB中加入动画? 费时操作是如何估计所花费时间的? 为什么我新装的机器在播放声音和视频文件时速度比原速度快了好多? 怎么样清楚Cookies 如何通过一个链接弹出一个没有标题栏,没有菜单栏,没有地址栏等的新页面? 配置问题,在线等待?分不够再加! MFC基础, 如何实现在CScrollView上, 把某一文本文件显示出来(不用file - new)? 求救:请问哪儿有《Beginning Visual Basic.Net》英文书下载??? 高分100 label 控件刷新问题 如何通过一个链接弹出一个没有标题栏,没有菜单栏,没有地址栏等的新页面? 实现这样一个报表??????? 求救。。。。。Access2000的数据库密码忘了,该怎么办呀!!! 动态产生的列表框,如何让记录按列对齐? 为什么有时自动打开网页,有时却不能? 在JDBTable中如何选中行? 我想让进度条竖着从下往上显示,应该怎么做? 可否知道数据表即将产生记录的标识键值???? 怎样让程序启动时最大化,但又不允许用户再还原或者改变窗口大小,谢谢! 紧急求救!关于ADSL下的固定IP地址访问问题,相关IP地址转发技术 谁见过这种编译错误,怎么办啊? 我的RH7.2不能Telnet ,请帮忙. GPRS 有无条件等待指令吗? 简单的问题_50分。 在vba的编写过程中无法在excel中调用word等其他对象,怎么办?(顶者有分) 事实证明,weblogic会对注释行报错! 一个让人困惑的问题 bcp 的问题 请问:有没有UNIX下的测试工具? 请问一个关于BCB消息MAP的问题... 系统2000,用installshield6.0包了程序,有问题 请问我用VC++做的数据库程序怎样打包在线等待急用, 在控制面斑-- >删除/添加程序 选项中 Win2000和Win98怎么不一样啊 改写了8254后如何得到正确的系统时钟 在别人机子上生成报表时提示出错,除打包安装外有无其他办法? ★ 懂 ORACLE 和 DB2 的高手请进... ★ 求助!!! 100分求小软件 为什么MediaPlayer播放不正常? 关于在向固定格式的Word模版中导入数据的问题,急!!!!!!!!!!!!!!! SQL SERVER 2000简体中文企业版 与 SQL SERVER 2000简体中文标准版 区别 同时装了Win2000和Office2000的朋友,快看看自己的电脑有没有这样的毛病:)送分! 干掉靖国神社..http://www.yasukuni.or.jp/index2.html 在我调试程序时,出现了有关"cs3250mt.dll"文件的出错信息,是怎么回事呢,急死我了!!!大家帮帮我吧!!! 关于windows media 问题,请教了!!! 如何在两个FORM中互相调用控件??? 为什么果胶是植物体内的却由动物的半乳糖醛酸组成呢? 浓硫酸能用作水解用催化剂吗 中秋节虽已过去,但是很多人家还有很多没有吃完的月饼.某同学观察到家中的月饼包装袋内都有一小包干燥剂 由n个半乳糖醛酸合成果胶质体的过程中,会产生多少个水分子A.n B.n-1 C.n+1 D.0 我要公式. 甲酸甲酯水解的催化剂是什么 芳香化学物和脂环化学物如何区分呢? 水果中果胶物质的提取和测定 配制标准溶液时为何要称取0.1205g-水半乳糖醛酸 什么是化纤布 用色标法怎么判别电阻的大小?用色标怎么看电阻大小... 请问果胶酸裂解酶(pectate lyase)与多聚半乳糖醛酸酶(Polygalacturonase)有何区别?感谢tianci3388的回答,我还需要知道裂解酶与水解酶在作用形式上或者使糖苷键断裂的形式有什么区别。另外,果胶 化纤服装是什么材料制成的? 果胶酸法水解机理,为什么不能碱水解 notice board 求速度)山西省存在的主要环境问题是 产生该问题的主要原因是求速度)山西省存在的主要环境问题是 产生该问题的主要原因是 图中①②两项工程比较,①工程的的有 酸法提取橘子皮果胶工艺的优化研究试验的过程 关于经济学的讲点?我们有个选修课要演讲.我不太懂经济.有什么比较简单的讲点.但又不会太普遍滴 化纤布料是不是合成材料 lots of 和 a lot of在用法上有什么区别? 1.基数效用论的分析方法包括边际效用分析和无差异曲线分析方法.A.错误B.正确满分:2 分2.当消费某种物品的边际效用为负时,则总效用达极大值.A.错误B.正确满分:2 分3.MC曲线AC曲线相交于MC 化纤面料好吗 a lot of 和lots of 的用法和区别列举 列举例子 如:用法上有什么不同 用在可数还是不可数的 都要列举一个例句 三Q三Q 甲,乙两个容器共有盐水2600毫升,从甲容器中取出4/1,从乙容器中取出5/1,结果两个容器共剩2000毫升,甲、乙两个容器原来各有多少毫升盐水? _______ the notice board carefully.a.look b.look for c.look at d.look up 半干法脱硫 缺点不懂的不要瞎掰, 甲乙两个圆柱形容器,甲容器中有水2000毫升,乙是空的,现往两个容器里各注入水1600毫升,它们水面的高度相等,已知甲的底面半径9厘米,求乙的底面半径. 培育和保持企业核心竞争力的注意要素 如何看电阻色标? 我们应该遵守哪些生活社会上的规则比如不能闯红灯等等等还有很多但我不知道.快 快 浅谈如何培育企业核心竞争力 电阻器的色标,从哪个方向开始读呀?从左到右,从右到左?呵呵不过,昨天读一个,从这个方向无意义,因为读成"1-0"从另一个方向就可以读出有意义的数字组合. 请你根据所学的知识和实际情况说说生活中我们为什么要遵守规则 Here is a notice___the board.Aon.Bat.Cin 五元环的酯类化合物和六元环的酯类化合物 怎么写出来的根据什么写出来的呢?是CH2OH(CHOH)4COOH 脱水后形成的.怎么写出来呢? 小苏打治痛风有用吗,苏打水对痛风的作用是什么?小苏打治痛风有用吗,苏打水对痛风的作用是什么呢? 民营企业核心竞争力怎么培育? 关于脂环化合物碳的个数问题脂环化合物 CnH2n n趋向于正无穷,能出现这种化合物吗?是形成一个环?多个环?如果不能,又是什么原因呢?如果是杂环呢? 小苏打治痛风有用吗,苏打水对痛风的作用我爹最近痛风犯了,脚肿了好高,而且特别疼,我爹好象吃就是那个别嘌呤醇的药,眼睛好肿呀.  请问这种病吃什么药比较好呢?或者食疗、生活上应该 The announcememt will be__ on the notice board.A.put upB.put offC.put downD.put on 为什么会出现人类? 雷达是利用什么来进行定位和导航 餐饮企业核心竞争力的培育?几篇关于“餐饮企业核心竞争力的培育” 的论文 lot of;lots of;a lot;a lots;a lots of;a lot of的区别 雷达是利用超声波来定位和导航? 色标电阻如何读值 a lot of与lots of的区别是什么? 雷达定位 雷达通过什么定位和导航?. 1K电阻是什么色标.10K电阻是什么色标 a lot of / lots of嗯There is a lot of water.There is a lot of books.There are lots of books.There is lots of water.这是我的猜想.这里的there be句型中的be 是根据a lot of、 lots of 的变化而变,还是根据后面那个名词的变 gps雷达导航仪怎么样?gps雷达导航仪好用吗?gps雷达导航仪那种比较好用? ,^-^为什么会出现人类啊`? lot of、a lot of与lots of的区别 采购中议价后的评估是什么意思 ? 雷达是利用电磁波来进行定位和导航的么输入您的问题 人们穿的化纤面料的服装为什么容易脏? 定价发行与议价发行分别是什么意思啊?我在做复习题...1.我国目前股票定价的基本做法是承销商与发行人在公开发行前商定一个固定的价格,然后据此价格进行公开发售,称为( 答案是C )A.议 有水解催化剂可以让硫酸钙水解吗?还有其他物质的高效水解催化剂.不要强碱,不要强酸. 想知道中国服装将来的走向会是怎样?化纤面料又将何去何从? 半乳糖醛酸和果胶是什么关系?还有乳糖和半乳糖的关系, 淀粉水解时用的催化剂是什么 冬天穿化纤布料的服装特别爱“上灰”甚至拍都拍不掉这是为什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘