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

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

Google石博盟:抓住全球化和移动化的机遇 ShareSDK针对Unity发布社交化组件 2014 CocoaChina开发者大会将公布触控奖学金等高校合作计划 中低端智能手机热销,未来市场或主打价格战 Facebook开源flint:一个用D语言编写的C++静态代码分析器 AMD携手BlueStacks,下半年推出零售版双操作系统 历时6年 Github发布基于Web的桌面文本编辑器:Atom Ratchet:构建移动应用原型,新版支持Android 13个最狂帅炫酷的前沿科技研究项目 打动面试官的五大技能 乐视TV和NBA签约三年互联网电视版权 首度披露大屏运营策略 支撑4.5亿活跃用户的WhatsApp架构概览 免费使用Windows?微软推Windows 8.1 with Bing实验项目 C/C++开发者必不可少的15款编译器+IDE Amazon推荐,Facebook追踪,大数据时代的“狗仔队” NewSQL登场,NuoDB告诉你未来数据库什么样 2014 Unity亚洲开发者大会&#183;中国站:技术课程全面解析 与其坐以待毙不如主动出击 软件如何避免惨遭淘汰 一周消息树:程序员想找好工作?那就学好Linux! 移动周报:开发者必须了解的10大跨平台工具 一周热点:领先Google 150年的数据可视化及WhatsApp架构解析 R语言为Hadoop注入统计血脉 海外游戏市场:Google与“开心农场”谈破局 2014年2月操作系统份额:Windows仍在增长 Win 7以47.31%稳居第一 2014年2月份浏览器份额:IE 8仍全球最受欢迎,Firefox跌破18%大关 跨平台2D游戏引擎V-Play:3天开发一款原生游戏 Appery.io:无编程经验,自己也能DIY移动应用 SAP携手Xamarin和Service2Media 提供移动应用开发框架 8个超实用的jQuery技巧攻略 美国国防部战略:大规模、分布式,构建数字化防御体系 针对小白的Python入门教程——Python使用说明书 用LS能实现公式@DialogBox的作用吗? tomcat用127.0.0.1可以,用localhost不行,为什么? 一道C程序题 sqlserver2000连接用adoconnect比bde好吗? 子网掩码的划分难点!请高手指点! 关于想骂谁就骂谁版主一职暂由项有建代理的通知 30000多首音乐网站全站整套方案(音乐+ASP源码)300元超低价抛售 看了精华区的文章,不太懂。请教表格排序问题? VSFlexGrid7的问题,高手请进。高分求解! 祝贺水园小斑竹选举法在立法会获得通过 救救小弟我吧! 请问哪位有在PB中实现类似WORD“气泡提示”的功能?多谢 C# Builder Enterprise BT下载 哪位高手可以教我一点扫雷的技巧 一道汇编题 到了他家,他老婆开的门,他一把抱住他老婆还笑嘻嘻的对我们说:“这小姐挺漂亮的,有点像我老婆!嘿嘿 立法会第一立法案:水源小斑竹选举法 关于TProgressBar控件的几个问题 有个问题请教,是关于“名字空间”的!~~ 点击了一个Button(删除)安钮就可删除选中了的复选框的相关记录?看看代码是什么原因?? 谁能提供《The C++ Programming Language》书后的练习题的答案? 多外部IP的情况下,如何让Socket以其中一个指定的IP地址去连接外部的机器? PowerPoint XP设置模板的问题 linux 下有那些开发工具? 打开InputPanel出错 下载 oci不能正常显示汉字 帮我看个jsp程序,这是我的处子show,很多错误,希望大家来找碴。 请问如何实现在两个Form内各自的textbox之间进行数据流通?(50分) 急急急!在SQLserver中怎样调用索引? TreeView控件的字体如何改变? 关于字符串的处理问题 關于用存儲過程實現表關鍵字段自增的問題 <<雍亲王发迹史>>(有正文) 请问XML问题,很急,再线等!!谢谢!! 有人用msn messager 吗? 有关PXE技术,大虾请进 为什么我创建dialog时总是失败?? 数据窗口求和问题 三个小问题 【求助】【ZJU1504】那位能花点时间看看我的代码 如何实现类似vc的可视化拖拉形成界面功能? repeater控件的ItemTemplate模板问题!不容忽视!!! 怎样在自己的程序中备份数据库!!!??? 谁知道哪里有《杀手的童话》电影下载? 有谁知道用VC6在没有服务器端程序的情况下,如何通过账号操作远程SQL数据库. 散分!! 回复被删除,信誉分被扣! 请VFP高手帮我! mysql如何连接java,菜鸟求救!!! 有关win32 api 的问题 使用字典或者数组的问题(急) 咸鸭蛋里面为什么会有油? 现在资本主义还是社会主必 Is.上学的时间到了吗?(英语翻译) 别坑.. 种子萌发初期有机物含量的增加来源是什么?有道考试题的一个选项是:种子萌发初期有机物含量的增加主要来源于吸水. 写一些关于花的作文,最好写茶花或满天星的,400字以上 描写满天星的作文(不少于600字) 春秋争霸的目的和实质.不要原创哦,在初一上历史人教版义务教育课程标准教科书第八课找啊,我怎么也找不到,请各位高手帮帮忙.谢谢啦O(∩_∩)O哈哈~ 安琪酵母是转基因吗 文明只差一步的意思 怎样看出古代诗词的表现手法呢高中的诗词鉴赏 满天星代表死亡吗切合实际说好吗?敌人在我生日的时候送我一束带有满天星的花束,事后听有人嚼舌根说,满天星代表死亡,我越想越不对劲似的…… “创新之国”芬兰经验启迪中国企业加大加拿大北极地区气温或创4.4万年新高日本首相出访土耳其 欲游说其勿购中国美监管机构调查房地产信托投资基金澳媒称中国买家推动悉尼当地房价升高2美媒:部分美联储官员主张制定债券“退日本首相出访土耳其 欲游说其勿购中国日本拟上调育儿休假补贴发放比例 增加奥巴马医保网站再次瘫痪 众院将举行听美国一醉酒男子被捕后拿总统奥巴马为自澳洲农民呼吁设“全澳产”通道 为本地哈尔滨:企业支付农民工工资要做到“日“威马逊”已减弱为热带低压中国驻新大使段洁龙:中新将在中国西部俄“十问”乌克兰 反对擅自宣布MH1“麦德姆”向台湾东南部靠近 强度继续直击马航MH17航班失事地:残骸 鲜中国驻印尼大使馆捐赠斋月礼品华为资助非洲高科技人才培养郑州市金秋助学今起开始申报 凡符合条英媒:研究发现养狗助老年人“十年少”兰州市政协召开县级领导班子专题民主生
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘