《最全面的门户网站架构设计方案58162.docx》由会员分享,可在线阅读,更多相关《最全面的门户网站架构设计方案58162.docx(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、前台门户网站架架构设计方案北京宽连十方数数字技术有限限公司2012-7 目 录1设计思路32系统结构33网络规划及及性能计算33.1网络架架构33.2网络架架构说明43.2.1采采用双防火墙墙双交换机做做网络冗余,保保障平台服务务43.2.2采采用硬件设备备负载均衡器器,实现网络络流量的负载载均衡43.3系统测测算43.3.1系系统处理能力力要求43.3.2业业务处理能力力要求43.3.3系系统话务模型型43.4配置核核算53.4.1数数据库服务器器性能核算53.4.2WWEB服务器器集群性能核核算53.4.3WWEB服务器器集群内存性性能核算53.4.4网网络带宽54性能模拟测测试及性能推推
2、算64.1测试环环境64.2测试结结果84.2.111个客户端模模拟不同线和和并发请求结结果84.2.2110个客户端端请求84.3结果分分析94.4根据测测试结果推算算94.5设备清清单114.5.1硬硬件设备配置置清单114.5.2设设备技术规格格124.6平台扩扩容的建议121 网站的性能瓶颈颈分析网站的性能影响响因素很多,下下面主要从如如下4个方面面进行分析说说明:1) 网络负载a) 公网负载b) 内网负载2) WEB应用服务务器性能a) CPUb) 存储,I/O访访问c) 内存d) 并发TCP/IIP连接数3) 数据库服务器性性能a) 数据库参数配置置b) 服务器性能(CCPU、内存
3、存、存储)c) 数据结构的合理理性4) 不同WEB应用用的处理方式式而对不同的的性能瓶颈a) 对于静态的网站站:静态的HTMLL页面严格地地由标准的HHTML标示示语言构成,并并不需要服务务器端即时运运算生成。这这意味着,对对一个静态HHTML文档档发出访问请请求后,服务务器端只是简简单地将该文文档传输到客客户端。从服服务器运行的的那个时间片片来看,这个个传输过程仅仅仅占用了很很小的CPUU资源。对于于静态HTMML的访问瓶瓶颈为:网络络带宽、磁盘盘I/O以及及cachee(高速缓冲冲存储器)。b) 对于动态页面因为服务器解析析动态页面必必须在其传输输到客户端前前就通过服务务器来进行解解释,这
4、样就就会给应用服服务器添加额额外的性能消消耗,如果进进一步要访问问数据库,则则会增加数据据库服务器的的性能消耗,则则动态页面还还有额外的瓶瓶颈:应用服服务器的性能能,数据库服服务器的性能能。2 系统架构设计2.1 总体思路为提高网站的高高并发性能,提高开发效效率及运营效效率,主要按按如下几个思思路进行规划划设计:2.1.1 负载均衡1) 四层交换负载均均衡:采用负载均衡器器来实现硬件件级的四层交交换负载均衡衡,或采用LLVS来实现现软件的四层层交换负载均均衡。2) 通过第三方软件件来实现负载载均衡,同时时实现页面请请求的缓存。通过Nginxx实现反向代代理服务器集集群,同时搭搭建squiid集
5、群以作作为静态页面面和图片的缓缓存。3) 通过web服务务器的配置来来实现负载均均衡即通过apacche或是NNginx 将客户请求求均衡的分给给tomcaat1,toomcat22.去去处理。2.1.2 WEB应用开发发架构思路1) 应用开发实现MMVC架构三三层架构进行行web应用用开发2) 页面尽可能静态态化以减少动动态数据访问问,如果是资资讯类的网站站可以考虑采采用第三方开开源的CMSS系统来生成成静态的内容容页面。3) 采用Oscacche实现页页面缓存,采采用Memccachedd实现数据缓缓存4) 采用独立的图片片服务器集群群来实现图片片资源的存储储及WEB请请求2.1.3 数据
6、存储的设计计思路1) 数据库拆分,把把生产数据库库和查询数据据库分离,对对生产数据库库采用RACC实现数据库库的集群。2) 采用高效的网络络文件共享策策略,采用图图片服务器来来实现页面的的图片存储。2.1.4 不同网络用户访访问考虑1) 通过引入CDNN来解决不同同网络服务商商的接入速度度问题,一般般只能解决静静态页面的访访问问题。2) 在不同运营商机机房部署服务务器,通过镜镜像技术来实实现不同网络络服务商的接接入速度问题题。2.2 总体架构2.2.1 网站的系统分层层架构2.2.2 网站的物理架构构2.2.3 网站的开发架构构2.2.4 网络拓扑结构备注:1) 采用双防火墙双双交换机做网网络
7、冗余,保保障平台服务务采用双防火墙通通知接通2线线路互联网接接入,设备之之间采用VRRRP协议,在在任何一个防防火墙、互联联网发生故障障后均可自动动将流量切换换到另一端,保保证网站的正正运行,设备备或网络恢复复后,自动恢恢复。采用双千兆交换换机分别接在在2台防火墙墙上,当某台台设备或者网网络链路发生生故障后,好好设备自动接接管已坏设备备的工作,不不影响网站的的整体运行,根根据业务及真真实服务器的的数量,交换换机可以随时时增加。2) 采用硬件设备负负载均衡器,实实现网络流量量的负载均衡衡使用硬件设备负负载均衡器,将将网络流量均均衡的分担到到WEB服务务器集群各节节点服务器,保保障平台服务务器资源
8、均衡衡的使用。3) 采用代理服务器器,实现软件件级的网络负负载均衡。4) 数据库服务器分分离成生产数数据库集群和和查询数据库库集群,实现现生产读写与与后台查询统统计进行分离离,同时生产产数据库采用用rac技术术进行2.3 架构涉及技术的的详解2.3.1 负载均衡1. 基于DNS的负负载均衡-一个域名绑绑定多个IPPDNS负载均衡衡技术是最早早的负载均衡衡解决方案,它它是通过DNNS服务中的的随机名字解解析来实现的的,在DNSS服务器中,可可以为多个不不同的地址配配置同一个名名字,而最终终查询这个名名字的客户机机将在解析这这个名字时得得到其中的一一个地址。因因此,对于同同一个名字,不不同的客户机
9、机会得到不同同的地址,它它们也就访问问不同地址上上的Web 服务器,从从而达到负载载均衡的目的的。这种技术的优点点是,实现简简单、实施容容易、成本低低、适用于大大多数TCPP/IP应用用;但是,其其缺点也非常常明显,首先先这种方案不不是真正意义义上的负载均均衡,DNSS 服务器将将Http请请求平均地分分配到后台的的Web服务务器上,而不不考虑每个WWeb服务器器当前的负载载情况;如果果后台的Weeb服务器的的配置和处理理能力不同,最最慢的 Weeb服务器将将成为系统的的瓶颈,处理理能力强的服服务器不能充充分发挥作用用;其次未考考虑容错,如如果后台的某某台Web服服务器出现故故障,DNSS服务
10、器仍然然会把DNSS 请求分配配到这台故障障服务器上,导导致不能响应应客户端。最最后一点是致致命的,有可可能造成相当当一部分客户户不能享受WWeb服务,并并且由于DNNS缓存的原原因,所造成成的后果要持持续相当长一一段时间(一一般DNS的的刷新周期约约为24小时时)。所以在在国外最新的的建设中心WWeb站点方方案中,已经经很少采用这这种方案了。2. 通过硬件四层交交换实现负载载均衡在硬件四层交换换产品领域,有有一些知名的的产品可以选选择,比如AAlteonn、F5等,这这些产品很昂昂贵,但是物物有所值,能能够提供非常常优秀的性能能和很灵活的的管理能力。YYahoo中中国当初接近近2000台台服
11、务器使用用了三四台AAlteonn就搞定了3. 通过软件四层交交换实现负载载均衡软件四层交换我我们可以使用用Linuxx上常用的LLVS来解决决,LVS就就是Linuux Virrtual Serveer,他提供供了基于心跳跳线hearrtbeatt的实时灾难难应对解决方方案,提高系系统的鲁棒性性,同时可供供了灵活的虚虚拟VIP配配置和管理功功能,可以同同时满足多种种应用需求,这这对于分布式式的系统来说说必不可少。一个典型的使用用负载均衡的的策略就是,在在软件或者硬硬件四层交换换的基础上搭搭建squiid集群,这这种思路在很很多大型网站站包括搜索引引擎上被采用用,这样的架架构低成本、高高性能还
12、有很很强的扩张性性。4. 通过反向代理服服务器实现负负载均衡反向代理服务器器又称为 WWEB 加速速服务器,它它位于 WEEB 服务器器的前端,充充当WEB服服务器的内容容缓存器,反向代理服服务器是针对对 WEB 服务器设置置的,后台 WEB 服服务器对互联联网用户是透透明的,用户户只能看到反反向代理服务务器的地址,不不清楚后台 WEB 服服务器是如何何组织架构的的。当互联网网用户请求 WEB 服服务时,DNNS 将请求求的域名解析析为反向代理理服务器的 IP 地址址,这样 UURL 请求求将被发送到到反向代理服服务器,由反反向代理服务务器负责处理理用户的请求求与应答、与与后台 WEEB 服务
13、器器交互。利用用反向代理服服务器减轻了了后台 WEEB 服务器器的负载,提提高了访问速速度,同时避避免了因用户户直接与 WWEB 服务务器通信带来来的安全隐患患。目前有许多反向向代理软件,比比较有名的有有 Nginnx 和 SSquid 。Nginx 是是由 Igoor Syssoev 为为俄罗斯访问问量第二的 Rambller.ruu 站点开发发的,是一个个高性能的 HTTP 和反向代理理服务器,也也是一个 IIMAP/PPOP3/SSMTP 代代理服务器。Squid是由由美国政府大大力资助的一一项研究计划划,其目的为为解决网络带带宽不足的问问题,支持HHTTP,HHTTPS,FFTP 等多
14、多种协议,是是现在 Unnix 系统统上使用、最最多功能也最最完整的一套套软体。1) Squid Squid 是是一个开源的的软件,利用用它的反向代代理技术可以以提高网站系系统的访问速速度,下面将将重点介绍 Squidd 反向代理理的实现原理理和在提高网网站性能方面面的应用。Squid反向向代理服务器器位于本地 WEB 服服务器和 IInternnet 之间间 , 组织织架构如下图:客户端请求访问问 WEB 服务时,DDNS 将访访问的域名解解析为 Sqquid 反反向代理服务务器的 IPP 地址,这这样客户端的的 URL 请求将被发发送到反向代代理服务器。如如果 Squuid 反向向代理服务
15、器器中缓存了该该请求的资源源,则将该请请求的资源直直接返回给客客户端,否则则反向代理服服务器将向后后台的 WEEB 服务器器请求资源,然然后将请求的的应答返回给给客户端,同同时也将该应应答缓存在本本地,供下一一个请求者使使用。Squid 反反向代理一般般只缓存可缓缓冲的数据(比比如 htmml 网页和和图片等),而而一些 CGGI 脚本程程序或者 AASP、JSSP 之类的的动态程序默默认不缓存。它它根据从 WWEB 服务务器返回的 HTTP 头标记来缓缓冲静态页面面, 有四个最最重要 HTTTP 头标标记: Last-Moodifieed: 告诉诉反向代理页页面什么时间间被修改 Expire
16、ss: 告诉反反向代理页面面什么时间应应该从缓冲区区中删除 Cache-CControol: 告诉诉反向代理页页面是否应该该被缓冲 Pragma: 用来包含含实现特定的的指令,最常常用的是 PPragmaa:no-ccache 注:DNS 的的轮询机制将将某一个域名解解析为 多个个IP地址。2) NginxNginx (“enginne x”) 是俄罗罗斯人Igoor Syssoev(塞塞索耶夫)编编写的一款高高性能的 HHTTP 和和反向代理服服务器。Nginx 已已经在俄罗斯斯最大的门户户网站 Rammbler Mediaa(www.rambller.ruu)上运行了了4年时间,同同时俄罗
17、斯超超过20%的的虚拟主机平平台采用Ngginx作为为反向代理服服务器。在国内,已经有有新浪博客、新新浪播客、搜搜狐通行证、网网易新闻、网网易博客、金金山逍遥网、金金山爱词霸、校校内网、YUUPOO相册册、豆瓣、迅迅雷看看等多多家网站、频频道使用 NNginx 服务器。Nginx 特特点如下:1) 工作在OSI模模型的第7层层(应用层)2) 高并发连接官方测试能够支支撑5万并发发连接,在实实际生产环境境中跑到23万并发连连接数。 3) 内存消耗少在3万并发连接接下,开启的的10个Ngginx 进进程才消耗1150M内存存(15M*10=1550M)。 4) 配置文件非常简简单风格跟程序一样样通
18、俗易懂。 5) 成本低廉Nginx为开开源软件,可可以免费使用用。而购买FF5 BIGG-IP、NNetScaaler等硬硬件负载均衡衡交换机则需需要十多万至至几十万人民民币。 6) 支持Rewriite重写规规则能够根据域名、UURL的不同同,将 HTTTP 请求求分到不同的的后端服务器器群组。 7) 内置的健康检查查功能如果 Nginnx Prooxy 后端端的某台 WWeb 服务务器宕机了,不不会影响前端端访问。 8) 节省带宽支持 GZIPP 压缩,可可以添加浏览览器本地缓存存的 Heaader 头头。 9) 稳定性高用于反向代理,宕宕机的概率微微乎其微。 3) Nginx+ssqui
19、d页页面缓存来实实现反向代理理负载均衡通过Nginxx反向代理和和squidd缓存实现动动静分离的架架构图如下所所示:5. Apache +tomccat集群实实现负载均衡衡。使用 apacche和多个个tomcaat 配置一一个可以应用用的web网网站,用Appache进进行分流,把把请求按照权权重以及当时时负荷分toomcat11,tomccat2.去处理,要要达到以下要要求:1) Apache 做为HtttpServver ,通通过mod_jk连接器器连接多个 tomcaat 应用实实例,并进行行负载均衡。2) 同时还要配置ssessioon复制,也也就是说其中中任何一个ttomcatt
20、的添加的ssessioon,是要同同步复制到其其它tomccat, 集集群内的toomcat都都有相同的ssessioon,并为系系统(包括 Apachhe 和 ttomcatt)设定 SSessioon 超时时时间。2.3.2 缓存1. 系统架构方面的的缓存1) Squid缓存存架构方面使用用Squidd进行缓存。注:SQUIDD使用了LMM算法,LMM就是页面HHeaderr里时间(DDate)和和Last-Modiffied时间间的差。Daate一般是是Squidd从后面取页页面的时间,LLast-MModifiied 一般般是页面生成成时间。2) Nginx的缓缓存功能Nginx从00
21、.7.488版本开始,支支持了类似SSquid的的缓存功能;缓存把URL及及相关组合当当作Key,用用md5编码码哈希后保存存;Nginx的WWeb缓存服服务只能为指指定URL或或状态码设置置过期时间,不不支持类似SSquid的的PURGEE指令,手动动清除指定缓缓存页面;采用MMAP实实现,设置的的缓存区大小小不能超过物物理内存+SSWEB的值值3) 基于memcaached的的缓存nginx对mmemcacched有所所支持,但是是功能并不是是特别之强,性性能上还是非非常之优秀。locatioon /meem/ iff ( $uuri /meem/(00-9A-ZZa-z_*)$ ) se
22、t $memccachedd_key $1; memcaached_pass 1192.1668.1.22:112111; expiires 770;这个配置会将hhttp:/sudoone.coom/memm/abc指指明到memmcacheed的abcc这个keyy去取数据。Nginx目前前没有写入mmemcacched的任任何机制,所所以要往meemcachhed里写入入数据得用后后台的动态语语言完成,可可以利用4004定向到后后端去写入数数据。Nginx传统统缓存的缺点点也是它和ssquid等等缓存软件的的不同之特色色,所以也可可看作其优点点。在生产应应用中它常常常用作和sqquid的
23、搭搭档,squuid对于带带?的链接往往往无法阻挡挡,而ngiinx能将其其访问拦住,例例如:htttp:/nginx会非非常老实地将将链接形式保保存到文件系系统中,这样样对于一个链链接,可以很很方便地查阅阅它在缓存机机器上的缓存存状态和内容容,也可以很很方便地和别别的文件管理理器如rsyync等配合合使用,它完完完全全就是是一个文件系系统结构。2. 应用程序方面的的缓存1) OSCacheeOSCachee由OpennSymphhony设计计,它是一种种开创性的JJSP定制标标记应用,提提供了在现有有JSP页面面之内实现快快速内存缓冲冲的功能,OOSCachhe是个一个个广泛采用的的高性能的
24、JJ2EE缓存存框架,OSSCachee能用于任何何Java应应用程序的普普通的缓存解解决方案。OOSCachhe有以下特特点:缓存任任何对象,你你可以不受限限制的缓存部部分jsp页页面或HTTTP请求,任任何javaa对象都可以以缓存。拥有有全面的APPI-OSSCachee API给给你全面的程程序来控制所所有的OSCCache特特性。永久缓缓存-缓存存能随意的写写入硬盘,因因此允许昂贵贵的创建(eexpenssive-tto-creeate)数数据来保持缓缓存,甚至能能让应用重启启。支持集群群-集群缓缓存数据能被被单个的进行行参数配置,不不需要修改代代码。缓存记记录的过期-你可以有有最大
25、限度的的控制缓存对对象的过期,包包括可插入式式的刷新策略略(如果默认认性能不需要要时)。OSCachee是当前运用用最广的缓存存方案,JBBoss,HHibernnate,SSpringg等都对其有有支持。OSCachee的特点:1) 缓存任何何对象:你可可以不受限制制的缓存部分分jsp页面面或HTTPP请求,任何何java对对象都可以缓缓存。 2) 拥有全面面的API:OSCacche APPI允许你通通过编程的方方式来控制所所有的OSCCache特特性。 3) 永久缓存存:缓存能被被配置写入硬硬盘,因此允允许在应用服服务器的多次次生命周期间间缓存创建开开销昂贵的数数据。 4) 支持集群群:
26、集群缓存存数据能被单单个的进行参参数配置,不不需要修改代代码。 5) 缓存过期期:你可以有有最大限度的的控制缓存对对象的过期,包包括可插入式式的刷新策略略(如果默认认性能不能满满足需要时)。2) Memcachhedmemcachhed是高性性能的分布式式内存缓存服服务器。一般般的使用目的的是,通过缓缓存数据库查查询结果,减减少数据库访访问次数,以以提高动态WWeb应用的的速度、 提提高可扩展性性。Memcachhed是以KKey/Vaalue的形形式单个对象象缓存。3) 自主开发的内存存数据缓存服服务a) 独立进程方式的的缓存服务对于一些常用的的动态数据通通过开发程序序服务缓存在在内存中,提
27、提供给其他子子系统调用,如如下面的数据据就可以通过过这样方式进进行缓存。1) 用户基本信息及及状态的信息息缓冲2) 列表缓存,就像像论坛里帖子子的列表3) 记录条数的缓存存,比如一个个论坛板块里里有多少个帖帖子,这样才才方便实现分分页。4) 复杂一点的grroup,ssum,coount查询询,比如积分分的分类排名名b) 集成在WEB应应用中的内存存缓存在web应用中中对于热点的的功能,考虑虑使用完全装装载到内存,保保证绝对的响响应速度,对对于需要频繁繁访问的热点点数据,采用用集中缓存(多个可以采采用负载均衡衡),减轻数数据库的压力力,比如:很很多配置信息息,操作员信信息等等。2.3.3 页面
28、静态化静态的HTMLL页面严格地地由标准的HHTML标示示语言构成,并并不需要服务务器端即时运运算生成。这这意味着,对对一个静态HHTML文档档发出访问请请求后,服务务器端只是简简单地将该文文档传输到客客户端。从服服务器运行的的那个时间片片来看,这个个传输过程仅仅仅占用了很很小的CPUU资源。页面静态化就是是采用效率最最高、消耗最最小的纯静态态化的htmml页面来替替换动态页面面。我们尽可可能使我们的的网站上的页页面采用静态态页面来实现现,这个最简简单的方法其其实也是最有有效的方法。同时采用第三方方开源的CMMS系统来实实现网站内容容的管理。对对于大量内容容并且频繁更更新的网站,我我们无法全部
29、部手动去挨个个实现页面静静态化,所以我们需需要引入常见见的信息发布布系统(CMS),信息发布布系统(CMMS)可以实实现最简单的的信息录入自自动生成静态态页面,对于一个大大型网站来说说,拥有一套套高效、可管管理的CMSS是必不可少少的。同时,HTMLL静态化也是是某些缓存策策略使用的手手段,对于系系统中频繁使使用数据库查查询但是内容容更新很小的的应用,可以以考虑使用HHTML静态态化来实现,比比如论坛中论论坛的公用设设置信息,这这些信息目前前的主流论坛坛都可以进行行后台管理并并且存储再数据库库中,这些信信息其实大量量被前台程序序调用,但是是更新频率很很小,可以考考虑将这部分分内容进行后后台更新
30、的时时候进行静态态化,这样避避免了大量的的数据库访问问请求。在进行htmll静态化的时时候还可以使使用一种折中中的方法,就就是前端继续续使用动态实实现,在一定定的策略下通通过后台模块块进行定时把把动态网页生生成静态页面面,并定时判判断调用,这这个能实现很很多灵活性的的操作。为了提高静态HHTML的访访问效率,主主要可以对以以下几个方面面进行优化:网络带宽、磁磁盘I/O以以及cachhe(高速缓缓冲存储器)。2.3.4 数据库配置及优优化1. 数据库集群对生产数据库库采用RACC实现数据库库的集群。2. 数据库及表的散散列把生产数据库和和查询数据库库进行分离,针针对系统业务务数据的特点点,把大的
31、表表进行拆分,对对于访问较多多的表采用分分区表。使用读/写数据据库分离,随随着系统变得得越来越庞大大,特别是当当它们拥有 很差的SQQL时,一台台数据库服务务器通常不足足以处理负载载。但是多个个数据库意味味着重复,除除非你对数据据进行了分离离。更一般地地,这意味着着建立主/从从副本系统,其其中 程序会会对主库编写写所有的Uppdate、IInsertt和Deleete变更语语句,而所有有Selecct的数据都都读取自从数数据库(或者者多个从数据据库)。尽管概念上很简简单,但是想想要合理、精精确地实 现现并不容易,这这可能需要大大量的代码工工作。因此,即即便在开始时时使用同一台台数据库服务务器,
32、也要尽尽早计划在PPHP中使用用分离的DBB连接来进行行读写操作。如如果正确 地地完成该项工工作,那么系系统就可以扩扩展到2台、33台甚至122台服务器,并并具备高可用用性和稳定性性。3. 拥有良好的DBB配置和备份份很多公司都没有有良好的备份份机制,也不不知道如 何何恰当地完成成这项工作。只只有imp是是不够的,还还需要进行热热备份,从而而得到超快的的速度和超高高的可靠性。另外,在将所有有备份文件从从服务器上转转移出来之前前要进行压缩缩和加密。另另外还要确保保拥有设计合合理的、有用用的关于安全全、性能和稳稳定性问题的的设定,包括括防止数据败败坏,其中很很多设定都是是非常重要的的。2.3.5
33、文件存储1. 文件共享1) HDFS(GFFS)HDFS是Appache Hadooop项目中的的一个分布式式文件系统实实现,基于GGooglee于20033年10月发发表的Gooogle FFile SSystemm(GFS)论文。n 特性1) 硬件要求低2) 高容错性3) 易可扩展4) 配置简单5) 超大文件HDFS采用mmasterr/slavve架构。一个HDFSS集群是由一一个Nameenode和和一定数目的的Datannodes组组成。2) NFS与GFSS比较首先从它们的功功能上进行分分析。NFSS即网络文件件系统,是由由SUN公司司开发的。它它是FreeeBSD支持持的文件系统
34、统中的一种,允允许一个系统统在网络上与与它人共享目目录和文件。通通过使用NFFS,用户和和程序访问远远端系统上的的文件就像访访问本地文件件一样。而GFS是Gooogle为为了满足本公公司迅速增长长的数据处理理要求而开发发的文件系统统。GFS是是一个可扩展展的分布式文文件系统,用用于大型的、分分布式的、对对大量数据进进行访问的应应用。它是针针对Googgle的计算算机集群进行行设计的,专专门是为Gooogle页页面搜索的存存储进行了优优化。所以从功能上看看,它们两者者是完全不同同的概念。其次从结构上比比较,NFSS至少包括两两个主要部分分:一台服务务器,以及至至少一台客户户机。被共享享的目录和文
35、文件存放在服服务器上,客客户机远程地地访问保存在在服务器上的的数据。GFS则由一台台Masteer(通常有有几台备份)和若干台TTrunkSServerr构成。GFFS中文件备备份成固定大大小的Truunk分别存存储在不同的的 TrunnkServver上,每每个Trunnk有多份(比如3)拷拷贝,也存储储在不同的TTrunkSServerr上。Masster负责责维护GFSS中的 Meetadatta,即文件件名及其Trrunk信息息。客户端先先从Mastter上得到到文件的Meetadatta,根据要要读取的数据据在文件中的的位置与相应应的 TruunkSerrver通信信,获取文件件数据
36、。再从跨平台性上上,NFS的的基本原则是是“容许不同的的客户端及服服务端通过一一组RPCss分享相同的的文件系统”,它是独立立于操作系统统的,容许不不同的操作系系统共同地进进行文件的共共享。而GFS则没有有这一特点,文文件只能被集集群系统中的的PC所访问问,而且这些些PC的操作作系统一般是是Linuxx。最后从规模上比比较,HDFFS只应用在在大批量的数数据共享上。目前Google拥有超过200个的GFS集群,其中有些集群的PC数量超过5000台。集群的数据存储规模可以达到5个PB,并且集群中的数据读写吞吐量可达到每秒40G。而NFS一般没没有这么巨大大的规模。2. 文件的多服务器器自动同步使
37、用Linuux 2.66内核的innotifyy监控Linnux文件系系统事件。利用开源的llsync监监听某一目录录,如果目录录内文件发生生增、删、改改,利用Rssync协议议自动同步到到多台服务器器。3. 图片服务器分离离特别是如果程程序与图片都都放在同一个个 APAHHCE 的服服务器下,每每一个图片的的请求都有可可能导致一个个 HTTPPD 进程的的调用。使用独立的图片片服务器不但但可以避免以以上这个情况况,更可以对对不同的使用用性质的图片片设置不同的的过期时间,以以便同一个用用户在不同页页面访问相同同图片时不会会再次从服务务器(基于是是缓存服务器器)取数据,不不但快速,而而且还省了带
38、带宽。还有就就是,对于缓缓存的时间上上,亦可以做做独立的调节节。2.3.6 网络问题解决方方案你不可能要求所所有的使用人人员,都和你你的服务器在在一个运营商商的网络内,而而不同网络之之间访问速度度会很慢,我们可以采采用镜像网站站和引入CDDN来解决这这一问题。1. 智能DNS解析析我们可以在不同同的网络运营营商部署weeb服务器,通通过linuux上的rssync工具具自动同步到到不同网络接接入商的weeb服务器上上,以作为主主站的镜像。然后通过配置智智能DNS解解析来引导不不同网络的访访问用户到对对应的网络运运营商的weeb服务器。2. CDN如果有足够的投投资,也可以采用CCDN(内容容分
39、发网),把静态内容(静态页面和图片)进行CDN缓存,以减轻服务器压力。CDN的全称是是Conteent Deeliverry Nettwork,即即内容分发网网络。它采取取了分布式网网络缓存结构构(即国际上上流行的weeb cacche技术),其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。 (也就是一个服务器的内容,平均分部到多个服务器上,服务器
40、智能识别,让用户获取离用户最近的服务器,提高速度。目前,国内访问问量较高的大大型网站如新新浪、网易等等,均使用CCDN网络加加速技术,虽虽然网站的访访问巨大,但但无论在什么么地方访问都都会感觉速度度很快。而一一般的网站如如果服务器在在网通,电信信用户访问很很慢,如果服服务器在电信信,网通用户户访问又很慢慢。2.3.7 WEB应用开发发架构设计思思路1. 基于MVC的三三层应用开发发架构应用开发实现MMVC三层架架构进行weeb应用开发发,采用ibbatis作作为持久层框框架,c3pp0作为数据据库连接池。iBATIS 是一个可以以设计和实现现更好的 JJava 应应用程序持久久化层的框架架。i
41、BATTIS 把对对象和存储过过程或者使用用 XML 描述符的 SQL 语语句进行了关关联。简单是是 iBATTIS 最大大的优势n ibatis-使用ibaatis的十十个理由1. 至少能操操作10种以以上的数据库库2. 可配配置的cacching(包括从属)3. 支持持DataSSourcee、locaal traansacttion mmanageemen和ggloball trannsactiion4. 简单的XMML配置文档档5. 支持持Map, Colleectionn, Lisst和简单类类型包装(如如Integger, SStringg)6. 支支持JavaaBeanss类(g
42、ett/set 方法)7. 支持复杂杂的对象映射射(如poppulatiing liists, compllex obbject modells)8. 对象模型从从不完美(不不需要修改)9. 数据据模型从不完完美(不需要要修改)100. 你已经经知道SQLL,为什么还还要学习其他他东西1) MVC架构示意意2) Struts架架构客户端发送一个个HTTP请请求,通过SStrutss框架最后获获得一个HTTTP响应,这这一过程非常常重要,它是是理解Strruts框架架的重点。上上图描述了SStrutss框架的结构构,而下图通通过一个活动动图更具体描描述接受请求求直至返回响响应的整个过过程:2.
43、面向服务的应用用架构面向服务的应用用架构是指构构建可分布式式的、去中心心化的服务器器平台,以提供许多不不同的应用,数据库被分成很多个小部分,围绕每个部分都会创建一个服务接口(API),并且该接口是访问数据库的唯一途径。最终数据库演变成一个非常庞大的共享资源。这种架构是松散散耦合的,并并且围绕着服服务进行构建建。面向服务务的架构提供供给他们隔离离特性,一个个服务可能有有很多台数据据库服务器,他他们之间的数数据是相通的的,而对外他他们的接口只只有一个,外外面是无法知知道这个服务务后面的数据据组织是如何何搭建的。这样就有了越来来越多的应用用服务器。这这些应用服务务器从数据众众多的服务(每每个服务背后
44、后都有数据库库或集群数据据库)中聚合合信息,然后后生成我们所所看到的A的各各个网站页面面。这样各种服务如如插件一样组组成了一个开开放的平台,这样团队的规模就会比较小,比较灵活。注Amazonn就是采用了了这种架构来来构 建的,它它拥有上千台台服务器。2.4 系统软件参数优优化在一定的架构基基础上,要提提高并发处理理能力则需要要调整服务器器的操作系统统内核参数、wweb服务器器(tomccat的参数数、apacche的参数数、Nginnx的参数),以以使其性能达达到最优化。2.4.1 操作系统优化调整系统的内核核参数,增大大连接数及TTCP/IPP的超时设置置。Linux系统统中:在/etc/s
45、sysctll.conff配置文件中中增加如下内内核参数:net.ipvv4.tcpp_synccookiees = 11net.ipvv4.tcpp_tw_rreuse = 1net.ipvv4.tcpp_tw_rrecyclle = 11net.ipvv4.tcpp_fin_timeoout = 52.4.2 tomcat服服务器优化增大并发连接数数,调整内存存参数的设置置。1、JDK内存存优化:当应用程序需要要的内存超出出堆的最大值值时虚拟机就就会提示内存存溢出,并且且导致应用服服务崩溃。因因此一般建议议堆的最大值值设置为可用用内存的最大大值的80%。 Tommcat默认认可以使用的的内
46、存为1228MB,在在较大型的应应用项目中,这这点内存是不不够的,需要要调大.Tomcat默默认可以使用用的内存为1128MB,Windoows下,在在文件/biin/cattalinaa.bat,UUnix下,在在文件/biin/cattalinaa.sh的前前面,增加如如下设置: JAVA_OPTS=-Xmss【初始化内内存大小】 -Xmx【可可以使用的最最大内存】 需要把这这个两个参数数值调大。例例如: JAAVA_OPPTS=-Xms2556m -XXmx5122m 表示示初始化内存存为256MMB,可以使使用的最大内内存为5122MB。2、连接器优化化: 在toomcat配配置文件seerver.xml中的的配置中,和和连接数相关关的参数有:maxThreeads: Tomcaat使用线程程来处理接收收的每个请求求。这个值表表示Tomccat可创建建的最大的线线程数。默认认值150。acceptCCount: 指定当所所有