《大型网站建设架构设计与实践探讨》由会员分享,可在线阅读,更多相关《大型网站建设架构设计与实践探讨(65页珍藏版)》请在金锄头文库上搜索。
1、 2012 IBM Corporation大型网站建设架构设计与实践探讨-从前端到后台童景文技术架构师景文童 2012 IBM Corporation2声明本文件中有些图片和文字源自互联网,其版权归属相关图片和文字的所有者。 2012 IBM Corporation3n需要了解的一些网络流量术语:http:/ 2012 IBM Corporation4n网站的主要分类网站有很多所分类方式(http:/ 大型网站架构的目标与挑战 2012 IBM Corporation5n网站的主要分类1.综合门户()。技术特点:以静态内容占绝大部分,动态内容较少 大型网站架构的目标与挑战 2012 IBM C
2、orporation6n网站的主要分类2.娱乐:在线视频(xunlei,youku)。技术特点:以静态内容占大部分,动态内容也多,对网站接入带宽要求高 大型网站架构的目标与挑战 2012 IBM Corporation7n网站的主要分类2.娱乐:在线游戏(QQGame)。技术特点:以客户端技术和相应的后台技术为核心(网站仅仅是一个服务手段),网页游戏现在还不是主流 大型网站架构的目标与挑战 2012 IBM Corporation8n网站的主要分类3.办公和生活服务:在线邮件(QQmail,163mail)、网盘技术特点:动态内容为绝大部分,功能很多基本上涵盖了大众在办公和生活服务方方面面 大
3、型网站架构的目标与挑战 2012 IBM Corporation9n网站的主要分类4.搜索(GoogleSearch,BaiduSearch)技术特点:搜索界面简单,基本上全是动态内容,但是技术极其复杂 大型网站架构的目标与挑战 2012 IBM Corporation10n网站的主要分类5.电子商务(淘宝)技术特点:动态内容,静态内容也多,功能多,技术实现极其复杂 大型网站架构的目标与挑战 2012 IBM Corporation11n网站的主要分类6.SNS(新浪微博、QQZone、FaceBook)技术特点:动态内容占绝大部,功能多,技术实现极其复杂 大型网站架构的目标与挑战 2012
4、IBM Corporation12n何谓“大型”网站?大型网站架构的目标与挑战没有统一的判断标准,流量大小是一个非常重要指标;即UV,PV,独立IP网站日均流量IP/PVwww.QQ.comIP45,180,000PV407,523,IP229,680,000PV2,955,981,IP25,680,000PV222,132,IP5,532,000PV25,723,IP25,740,000 PV500,128,IP22,200PV48,IP1,152,000PV3,375,IP1,758,000PV11,936,820日均流量至少IP1,000,000才能算大型网站 2012 IBM Corp
5、oration13n何谓“大型”网站?大型网站架构的目标与挑战并且网站内容是否“动态”才是关键 2012 IBM Corporation14网站架构目标与挑战每个目标背后面临着技术、设计、维护等诸多方面的挑战。而目标本身的期望值也会根据实际情况进行调整,这也意味着网站架构建设是个不断调整的过程。负载均衡数据备份异地容灾。高速缓存并行计算异地镜像。开发框架多层设计业务分割。大型网站架构的目标与挑战大数据、大并发并且对于一个大型网站来说,大并发、大数据量的高性能和可靠性的架构设计是最重要的;只要这个架构设计和相应的代码质量较好就可以满足所有的不同类型大型网站的要求。并且在国内外互联网领域出名的不同
6、类型的大型网站为了支撑大并发、大数据量的高性能和可靠性的思想都是比较类似的 2012 IBM Corporation15大型网站架构的目标与挑战网站架构目标与挑战 2012 IBM Corporation16网站架构及其技术演进Step1Web动静态资源分离及其与DB物理分离n优点:“简单”、安全性提高n缺点:存在单点,谈不上高可用性(highavailability架构目标)n技术点:应用设计要保证可扩展(framework很重要Spring/Beetle)、WebServer动/静态资源分离WebServer(ApacheNginxIISWAS)、DatabaseServer(RedisD
7、B2) 2012 IBM Corporation17Step1技术点Web动静态资源分离网站架构及其技术演进img,doc,js,css等静态资源使用单独的WebHTTPServer处理请求动态页面静态化处理 2012 IBM Corporation18Step2.1采取缓存处理n优点:简单有效、维护方便n缺点:依然存在单点n技术点:客户端(浏览器)缓存、前端页面缓存、页面片段缓存、本地数据缓存/数据库缓存减少对网站的访问减少对Web应用服务器的请求减少对数据库的查询减少文件系统I/O操作网站架构及其技术演进 2012 IBM Corporation19Step2.1技术点客户端(浏览器)缓存
8、技术点说明根据HTTP协议特性,修改Header参数(Cache-Control、Expires、Pragma、Last-Modified、Etag),让浏览器来缓存页面(一些优秀开发框架会对此做透明的封装,例如:Beetle)http:/www.w3.org/Protocols/rfc2616/rfc2616-sec14.html使用HTTP1.1协议,由于httppipelining技术特性,能够使用get请求的决不采取post请求为了节约带宽,压缩页面(Content-Encoding:gzip);页面各个元素能“小”即“小”,例如:js包压缩,js合并,图片压缩等会话状态信息采取Coo
9、kie代替传统使用服务器Sessions对象存储习惯做法;使用Ajax实现页面局部刷新如果可能,可采取浏览器插件技术突破浏览器功能限制,将原本在服务器端运算,尽量迁到浏览器端。ActiveX/Applet/Flash/.HTML5最值得期待,她的出现必定改变整个Web世界能够让浏览器缓存的数据一定要缓存;浏览器能够处理的运算,决不放在服务器端来处理。网站架构及其技术演进 2012 IBM Corporation20Step2.1技术点前端页面缓存采用具备缓存功能的http反向代理服务器作前端页面缓存器,WebSphereEdgeComponent(商业)网站架构及其技术演进 2012 IBM
10、Corporation21Step2.1技术点页面片段缓存ESI(EdgeSideIncludes)ESI需要服务器端支持,常见apache(mod_esi)、WebSphereAppliicationServer、JSP标签库(JESI)等。网站架构及其技术演进 2012 IBM Corporation22Step2.1技术点本地数据缓存需要从数据库系统和Web应用服务器两个层面考虑缓存优化技术点说明关系数据库系统(如:DB2)QueryCache策略:一般以sql为key来缓存查询结果,尽量不要拼sql,使用PreparedStatement的“?”模式sql;QueryCache大小要根
11、据数据库系统具体情况合理设置,过大只会浪费内存,参考值:128M关系数据库系统DataBuffer策略:就是数据库数据内存缓存器,其访问命中率决定数据库性能,可根据实际物理内存大小适量增大,如:DB2建议buffer值为物理内存60-80%应用服务器Cache包括:对象缓存(例如:对象线程安全,做成单例),更新频率不大数据考虑缓存(如:基表数据、配置文件信息),考虑使用线程池,对象池,连接池等常见java解决方案:WebSphereApplicationServer动态缓存mapOSCacheEHCache等网站架构及其技术演进 2012 IBM Corporation23Step2.1技术点
12、本地数据缓存-WebSphereApplicationServer动态缓存网站架构及其技术演进动态缓存是目前大型复杂应用特别是互联网应用中提升性能和并发能力的关键技术之一。因为在很多场合有些动态页面经过一次执行后所反映的内容,在一定时间内基本上是不会经过任何变化的所以就可以在后续的访问后不用再执行而直接访问这将大大提升应用系统的的响应能力和吞吐能力,在同等的硬件条件下提供更强大的处理能力,满足企业日益增长的业务需要。高速动态缓存做为WAS的一个扩展服务从5.0.2开始就被包含在从WASExpress开始的各个版本。该服务可以缓存WebSphereCommand对象、Servlet和JavaSe
13、rverPages(JSP)的输出,从而明显提升应用程序性能。动态高速缓存服务位于应用程序服务器Java虚拟机(JVM)内部,通过拦截对可高速缓存对象的调用隐式的实现了对缓存的调用,程序员甚至意识不到它的存在。下图展示了缓存命中和不命中的两种情况下系统的流程,如果缓存命中将避免执行后面复杂的商业逻辑,业务逻辑的执行时间大大缩短了。 2012 IBM Corporation24Step2.1技术点本地数据缓存-WebSphereApplicationServer动态缓存网站架构及其技术演进 2012 IBM Corporation25Step2.2利用下新的硬件技术、和做下集群n硬件技术在不断地
14、进步、并且新的硬件产品现在也不贵了(例如内存、SSD、高速网络)nWEBServer(应用服务器)、数据库都有集群功能;我们为什么不利用呢?网站架构及其技术演进 2012 IBM Corporation26Step2.2技术点利用硬件的能力(大内存,SSD,高速网络等)网站架构及其技术演进 2012 IBM Corporation27Step2.2技术点利用硬件的能力(大内存,SSD,高速网络等)-固态硬盘网站架构及其技术演进ProcessorsMemoryDiskSSDVery, very, very, very, very fastVery, very, very fastVery, ve
15、ry slow comparativelyFast 10s ns100 ns200,000 ns1,000,000 -8,000,000 nsAccess Speed1 second33 minutes 12.5 hoursHuman Time Context 2012 IBM Corporation28Step2.2技术点利用硬件的能力(大内存,SSD,高速网络等)-高速网路网站架构及其技术演进1.万兆以太网2.Infiniband网络,此网络技术特别适合于关系数据库集群机制中(例如DB2PureScale)。 2012 IBM Corporation29Step2.2技术点WEBHTTPS
16、erver服务器HA(Active-StandBy)、应用服务器集群、数据库集群网站架构及其技术演进当然Web服务器可以采用ApacheHttpServer/Nginx应用服务器可以采用WAS数据库服务器可以采用DB2PureScale 2012 IBM Corporation30Step3增加机器做WEBHTTPServer服务器集群、数据库读写分离n优点:WebHTTPServer集群能够接入更多的并发请求,数据库扩展更好(读写分离);从而提升系统整体性能n缺点:读写分离,增加程序难度,架构变复杂,维护难度增加n技术点:负载均衡、DAL、数据库读写分离网站架构及其技术演进 2012 IBM
17、 Corporation31Step3技术点WebHTTPServer集群负载均衡类型说明DNS负载均衡实现简单、有Cache缺乏灵活性,但对分区域(如构建CDN方案)访问简单有效反向代理软件HAProxy、Nginx、Apache、Lighttpd等硬件产品F5、NetScaler等LVS(LinuxVirtualServer)http:/www.linuxvirtualserver.org/SMARTClient自己写代码某些情况下简单有效网站架构及其技术演进 2012 IBM Corporation32Step3技术点数据库读写分离及DAL读写分离逻辑分批负载均衡失效转移(failove
18、r)数据库分区透明支持两大实现模式:独立Proxy服务器;单独API库文件各个数据库厂商都有自己复制方案(例如基于日志实时复制)常见通用方案,CDC网站架构及其技术演进 2012 IBM Corporation33网站架构及其技术演进Step4CDN、分布式缓存、分库、NoSQL、重新思考硬件体系、大数据n优点:异地缓存有效解决不同地方用户访问过慢的问题;分库策略带来网站性能整体提升等等n缺点:成本大幅增加,架构进一步复杂化,也维护难度进一步增大,架构开始臃肿了n技术点:CDN、分布式缓存、Shard分库、NoSQL、重新思考硬件体系、大数据 2012 IBM Corporation34Ste
19、p4技术点CDNnCDN(ContentDeliveryNetwork)内容分发网络n将网站的内容分发到最接近用户的网络“边缘”,使用户可以就近获取,从而解决互联网网络拥挤的状况,提高用户访问的响应速度。n适合静态内容很多(如:静态页面、图片、视频等)及页面内容实时性要求不高的网站,如:新闻类门户网站nCDN构建可以做的很简单,也可以很复杂,主要根据自己网站实际情况而定网站架构及其技术演进WebSphereEdgeComponent 2012 IBM Corporation35Step4技术点分布式缓存n本地缓存性能优秀,但容量有限,无伸缩性n采用分布式缓存方案突破容量限制,具备良好伸缩性;但
20、分布式涉及远程网络通信消耗其性能本地缓存来得优秀,并可涉及节点状态维护及数据复制问题,其稳定性和可靠性是个挑战。n目前流行分布式缓存方案:memcached、membase、redis,WebSphereextremeScale等,基本上当前的NoSQL方案都可以用来做分布式缓存方案网站架构及其技术演进WebSphereeXtremeScale 2012 IBM Corporation36网站架构及其技术演进Step4技术点分布式缓存DB2 NotSQL:KV 2012 IBM Corporation37网站架构及其技术演进Step4技术点分布式缓存 2012 IBM Corporation3
21、8Step4技术点分库n读写分离(简单有效,前面已介绍)n垂直分区(功能域)和水平切分网站架构及其技术演进用户信息用户信息产品信息交易流水信息交易流水信息客户信息业务类型信息功能域用户信息用户信息1水平切分( sharding)交易流水信息交易流水信息1交易流水信息交易流水信息2 2012 IBM Corporation39Step4技术点分库网站架构及其技术演进n垂直分区良好的松耦合的模块化设计是垂直分库的前提 2012 IBM Corporation40网站架构及其技术演进Step4技术点分库n水平分区(Shard)分片Key识别(划分检索依据)是关键是否还有其它招?用NoSql数据库部分
22、替换关系数据库 2012 IBM Corporation41Step4技术点NoSQL网站架构及其技术演进随着Web的发展,电子商务和社交计算的兴起所引起的企业里不受控的非结构化并且面向信息的数据大爆炸和那些超大规模和高并发的应用场景下,该如何应对呢?企业确实不需要关系型数据库来管理这些数据,因为关系型数据库的特点决定了它不适用于这些数据的性质和使用方式。关系型数据库针对这些信息来说确实不是银弹或者称之为万金油的解决方法,最关键的是关系型数据库已经显得力不从心,暴露了很多难以克服的问题:(1)对数据库高并发读写的需求(2)对海量数据的高效率存储和访问的需求(3)对数据库的高可扩展性和高可用性的
23、需求。所以我们需要分布式的非关系型数据库(即NOSQL,它的意思是对于我们的应用类型,信息类型OnlySQL是不够的,所以需要NotOnlySQL)。 2012 IBM Corporation42Step4技术点NoSQL网站架构及其技术演进 NOSQL is simply Not Only SQL! 2012 IBM Corporation43Step4技术点NoSQL网站架构及其技术演进 2012 IBM Corporation44NOSQL特点它们不是关系型数据库,它也不是什么类型应用都能用有自己的使用场景它们可以处理超大量的数据它们运行在较为便宜的服务器集群上它们打破了性能瓶颈没有过多
24、的操作。缺点:现在基本上都是开源产品还不是特别成熟。Step4技术点NoSQL网站架构及其技术演进 2012 IBM Corporation45NoSQL支持率调查报告网站架构及其技术演进Step4技术点NoSQL 2012 IBM Corporation46Step4技术点重新思考硬件体系网站架构及其技术演进到这里机器越来越多了,我们需要考虑采用高密度堆叠服务器,服务器低功耗、高性能、强调高温化运行了,以降低占用空间、降低PUE值。向Google,FaceBook学习。在国内的互联网企业巨头:百度、阿里已经在这么做了。服务器 CPU:x86/ ARM DRAM DISK:HDD/SSD Ar
25、chitect:高密度设计Racks(机柜) 服务器数量越多越好 以太网交换(光纤)/或者Infiniband网络Cluster(服务器集群) 2012 IBM Corporation47Step4技术点重新思考硬件体系-虚拟化网站架构及其技术演进弹性快速提供服务器资源灾难恢复高可用性自动化提高服务器利用率省电省空间 2012 IBM Corporation48Step4技术点重新思考硬件体系网站架构及其技术演进 2012 IBM Corporation49Step4技术点重新思考硬件体系网站架构及其技术演进1U2U3U4U5U6U7U8U9U10U11U12U13U14U15U16U17U1
26、8U19U20U21U22U23U24U25U26U27U28U29U30U31U32U33U34U35U36U37U38U39U40U41U42UV7000 ControllerV7000 ExpansionV7000 ControllerV7000 ExpansionBNT64PTEnetSWBNT64PTEnetSWCableingress/egressPDUPDUPDUPDUIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComput
27、eIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeMGMTMGMTIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeIntelComputeInt
28、elComputeIntelComputeIntelComputeIntelComputeIntelComputeMGMTMGMTCableingress/egressIntel计算节点Intelprocessor(Sandy Bridge)2.6 GHz 8C Intel processor, 115 W20 MB L3 cache 2x 4 Port 10 GbE 2x 2 Port 8 Gb/s FC交换机CommonManagementModule10GbEthernetSwitch1GbFCSwitchVM管理节点主控制器BLADENetworkTechnologiesTopofRa
29、ckSwitchesCustomerDataCenter&Rack-to-rackcommunicationsPureApplicationSystem管理节点V7000磁盘扩展槽Perenclosure:SASSSDSASHDD存储控制器IBMStorwizeDiskSystemSSDperenclosureHDDperenclosure 2012 IBM Corporation50Step4技术点大数据DFS、Map/Reduce、Key-ValueDBnDFS分布式文件系统,如:HDFSGFSTFSGPFS-SNC等nMap/Reduce算法(计算框架),基本上现有NoSQL数据库中都支
30、持此算法。nKey-ValueDB,也作为NoSQL解决方案,如:BigTableTairHbaseHyperTable等n提供完整解决方案:Google(GFS|Map/Reduce|BigTable)ApacheHadoop(HDFS|Map/Reduce|HBase)IBMBigInsights(GPFS-SNC|Map/Reduce|Hbase)网站架构及其技术演进 2012 IBM Corporation51网站架构及其技术演进u建设一个大型网站架构是一个非常复杂的工作;对整个技术Team的技术技能是有很高要求的。技术Team的技术氛围要好、少忽悠、多干实事u极致性能需要架构的力量和
31、代码质量的双重组合,缺一不可。并且不存在万能的架构u最重要的是“人”即真正的人才而不是“砖家”。 2012 IBM Corporation52淘宝案例简介52大淘宝技术架构演进V1.0 2003.5 2004.1V1.1 2004.1 2004.5V2.0 2004.2-2005.03V2.1 2004.10 2007.01 2012 IBM Corporation53淘宝案例简介大淘宝技术架构演进V2.2 2006.10 2007.12V3.0 2007.12 - 2012 IBM Corporation54淘宝案例简介大淘宝技术架构演进 2012 IBM Corporation55淘宝案例
32、简介大淘宝的挑战 2012 IBM Corporation56淘宝案例简介大淘宝的挑战开始了去开始了去IOE运运动 2012 IBM Corporation57淘宝案例简介大淘宝现在的技术架构-系统框架示意图 2012 IBM Corporation58淘宝案例简介大淘宝现在的技术架构-软件基础设施规划 2012 IBM Corporation59淘宝案例简介如上两张图所示,淘宝的核心系统是及其复杂的,并且是没有可以采用的商用软件能够支撑业务的挑战(即大并发、大数据、业务需求变化极快)。所以现在淘宝走上了从服务器都自己设计、底层软件(数据库、中间件、文件系统等)都是采用开源软件进行修改和自我研
33、发、监控运维系统自我开发的道路,从而把IT投入的成本最大部分放在了需要大量的高质量核心技术人员人工成本上,而不是把钱投入到购买商用软硬件上。大淘宝的技术支撑之路 2012 IBM Corporation60淘宝案例简介CDN:世界上流量最大的、面向图片的CDN系统基于开源软件LVS+Haproxy+Squid+Bind上开发的CDN系统现有103节点,双12支持了856Gbps实际流量;约5000台服务器今年会建设到2400Gbps的承载能力TFS:自主开发的分布式对象存储系统可存储容量6.2P,实际使用4.06P;今年会建设到12PTAIR:淘宝的分布式缓存和K/V存储集成了开源的Redis
34、和LevelDB存储引擎提供跨机房容灾的解决方案OceanBase:淘宝的分布式数据库系统支持千亿条记录级别的数据库、支持事务大淘宝的技术支撑之路-所采用的软件(开源和自我研发) 2012 IBM Corporation61淘宝案例简介海量数据:采用开源的Hadoop平台现在单一集群到2500台服务器的规模系统可存储容量为47.02PB,已使用32.47PB,历史数据为压缩存储每天新增原始数据量为50T左右,存储净增量约为36T每天运行的作业数为10万以上,每日处理数据为2.5PB核心数据库:采用开源的MySQL,加上高速的非易失存储,以及多层级的系统优化服务器平台:Nginx部署200多个应
35、用,约3000台机器;完成TMD等重要防攻击软件,Tengine项目开源底层的支撑软件:在OpenJDK基础上开发和维护TaobaoJVM在RedHat基础上维护自己的Linux内核在Sheepdog上实现了KVM的虚拟化弹性计算平台在LVS基础上实现负载均衡解决方案用开源软件实现了高流量的网络镜像项目大淘宝的技术支撑之路-所采用的软件(开源和自我研发) 2012 IBM Corporation62淘宝案例简介淘宝自开源以来,共开源自主开发软件40余个涵盖前端、后端、数据库、文件系统、硬件等多方面对淘宝使用的若干项目贡献了代码大淘宝的技术支撑之路-所采用的软件(开源和自我研发) 2012 IBM Corporation63淘宝案例简介大淘宝的技术支撑之路-定制的低功耗服务器 2012 IBM Corporation64淘宝案例简介大淘宝的技术支撑之路-低功耗服务器开源开源网站http:/www.greencompute.org/ 2012 IBM Corporation65