最全面的门户网站架构设计方案

上传人:gao****ang 文档编号:199502894 上传时间:2023-04-11 格式:DOCX 页数:28 大小:92.77KB
收藏 版权申诉 举报 下载
最全面的门户网站架构设计方案_第1页
第1页 / 共28页
最全面的门户网站架构设计方案_第2页
第2页 / 共28页
最全面的门户网站架构设计方案_第3页
第3页 / 共28页
资源描述:

《最全面的门户网站架构设计方案》由会员分享,可在线阅读,更多相关《最全面的门户网站架构设计方案(28页珍藏版)》请在装配图网上搜索。

1、前台门户网站架构设计方案北京宽连十方数字技术有限公司2012-7目录1 设计思路 12 系统结构23网络规划及性能计算错误!未定义书签。3.1 网络架构33。2 网络架构说明错误!未定义书签。3.2.1 采用双防火墙双交换机做网络冗余,保障平台服务33。2。2采用硬件设备负载均衡器,实现网络流量的负载均衡3系统测算错误!未定义书签。3。3.1 系统处理能力要求错误!未定义书签。3.3。2 业务处理能力要求错误!未定义书签。3.3.3 系统话务模型错误!未定义书签。3.4 配置核算错误!未定义书签。3.41 数据库服务器性能核算错误!未定义书签。34。2 WEB服务器集群性能核算错误!未定义书签

2、。3.4。 3 WEB服务器集群内存性能核算错误!未定义书签。3.4.4 网络带宽 234 性能模拟测试及性能推算错误!未定义书签。4.1 测试环境错误!未定义书签。4.2 测试结果错误!未定义书签。4。2.1 1个客户端模拟不同线和并发请求结果错误!未定义书签。4。2。2 10个客户端请求错误!未定义书签。4。3结果分析错误!未定义书签。4。4根据测试结果推算错误!未定义书签。4.5 设备清单234。5。1硬件设备配置清单错误!未定义书签。4.5.2 设备技术规格错误!未定义书签。4.6 平台扩容的建议231 网站的性能瓶颈分析网站的性能影响因素很多,下面主要从如下4个方面进行分析说明1)

3、网络负载a) 公网负载b) 内网负载2) WEB应用服务器性能a) CPUb) 存储,I/O访问c) 内存d) 并发TCP/IP连接数3) 数据库服务器性能a) 数据库参数配置b) 服务器性能(CPU、内存、存储)c) 数据结构的合理性4) 不同WEB应用的处理方式而对不同的性能瓶颈a) 对于静态的网站:静态的H TML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生 成。这意味着,对一个静态H TML文档发出访问请求后,服务器端只是简单地将该文档传 输到客户端从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。 对于静态HTML的访问瓶颈为:网络带宽、磁盘

4、I/O以及cache(高速缓冲存储器)。b) 对于动态页面因为服务器解析动态页面必须在其传输到客户端前就通过服务器来进行解释,这样就 会给应用服务器添加额外的性能消耗,如果进一步要访问数据库,则会增加数据库服务器 的性能消耗,则动态页面还有额外的瓶颈:应用服务器的性能,数据库服务器的性能。2 系统架构设计2.1 总体思路为提高网站的高并发性能,提高开发效率及运营效率,主要按如下几个思路进行规划设计:2.1.1 负载均衡1) 四层交换负载均衡:采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均 衡。2) 通过第三方软件来实现负载均衡,同时实现页面请求的缓存.通过

5、Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面和图片的缓存。3) 通过web服务器的配置来实现负载均衡即通过apache或是Nginx将客户请求均衡的分给tomcatl, tomcat2.去处理。2.1.2 WEB应用开发架构思路1) 应用开发实现MVC架构三层架构进行web应用开发2) 页面尽可能静态化以减少动态数据访问,如果是资讯类的网站可以考虑采用第三方开源的CMS系统来生成静态的内容页面。3) 采用Oscache实现页面缓存,采用Memcached实现数据缓存4) 采用独立的图片服务器集群来实现图片资源的存储及WEB请求2.1.3 数据存储的设计思路1) 数据库

6、拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现数据库的集 群。2) 采用高效的网络文件共享策略,采用图片服务器来实现页面的图片存储。2.1.4 不同网络用户访问考虑1) 通过引入CDN来解决不同网络服务商的接入速度问题,一般只能解决静态页面的访问问题。2) 在不同运营商机房部署服务器,通过镜像技术来实现不同网络服务商的接入速度问题。2.2 总体架构2.2.1 网站的系统分层架构2.2.2 网站的物理架构2.2.3 网站的开发架构2.2.4 网络拓扑结构备注:1) 采用双防火墙双交换机做网络冗余,保障平台服务采用双防火墙通知接通2线路互联网接入,设备之间采用VRRP协议,在任何一

7、个防火墙、 互联网发生故障后均可自动将流量切换到另一端,保证网站的正运行,设备或网络恢复后,自 动恢复。采用双千兆交换机分别接在2台防火墙上,当某台设备或者网络链路发生故障后,好设 备自动接管已坏设备的工作,不影响网站的整体运行,根据业务及真实服务器的数量,交换机 可以随时增加。2) 采用硬件设备负载均衡器,实现网络流量的负载均衡使用硬件设备负载均衡器,将网络流量均衡的分担到WEB服务器集群各节点服务器,保 障平台服务器资源均衡的使用。3) 采用代理服务器,实现软件级的网络负载均衡。4) 数据库服务器分离成生产数据库集群和查询数据库集群,实现生产读写与后台查询统计进行分离,同时生产数据库采用r

8、ac技术进行2.3 架构涉及技术的详解2.3.1 负载均衡1. 基于DNS的负载均衡个域名绑定多个IPDNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现 的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在 解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址, 它们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。这种技术的优点是,实现简单、实施容易、成本低、适用于大多数TCP/IP应用;但是,其缺点 也非常明显,首先这种方案不是真正意义上的负载均衡,DNS服务器将Http请求平均地

9、分配到后台 的Web服务器上,而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理 能力不同,最慢的Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用;其次 未考虑容错,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS请求分配到这台故 障服务器上,导致不能响应客户端最后一点是致命的,有可能造成相当一部分客户不能享受Web 服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为24 小时)所以在国外最新的建设中心Web站点方案中,已经很少采用这种方案了。2. 通过硬件四层交换实现负载均衡在硬件四层交换产品领域,

10、有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵, 但是物有所值,能够提供非常优秀的性能和很灵活的管理能力Yahoo中国当初接近2000台服务器使 用了三四台Al teon就搞定了3. 通过软件四层交换实现负载均衡软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供 了基于心跳线hear tbea t的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP 配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squ

11、id集群,这 种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性。4. 通过反向代理服务器实现负载均衡反向代理服务器又称为WEB加速服务器,它位于WEB服务器的前端,充当WEB服务器的内容缓 存器,反向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用户 只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请求 WEB服务时,DNS将请求的域名解析为反向代理服务器的IP地址,这样URL请求将被发送到反 向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台 WEB 服务器交互。利用反 向

12、代理服务器减轻了后台WEB服务器的负载,提高了访问速度,同时避免了因用户直接与WEB服 务器通信带来的安全隐患。目前有许多反向代理软件,比较有名的有Nginx和Squid。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,是一个高性能的 HTTP和反向代理服务器,也是一个IMAP/P0P3/SMTP代理服务器。Squid是由美国政府大力资助的一项研究计划其目的为解决网络带宽不足的问题,支持HTTP, HTTPS,FTP等多种协议,是现在Unix系统上使用、最多功能也最完整的一套软体.1)SquidSquid是一个开源的软件,利用它的反向代理技术可

13、以提高网站系统的访问速度,下面将重点 介绍Squid反向代理的实现原理和在提高网站性能方面的应用。Squid反向代理服务器位于本地WEB服务器和Internet之间,组织架构如下图:客户端请求访问WEB服务时,DNS将访问的域名解析为Squid反向代理服务器的IP地址, 这样客户端的URL请求将被发送到反向代理服务器。如果Squid反向代理服务器中缓存了该请求 的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的WEB服务器请求资 源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。Squid 反向代理一般只缓存可缓冲的数据(比如 html 网页和

14、图片等),而一些 CGI 脚本程序 或者 ASP、JSP 之类的动态程序默认不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静 态页面,有四个最重要HTTP头标记: LastModified : 告诉反向代理页面什么时间被修改 Expires: 告诉反向代理页面什么时间应该从缓冲区中删除 Cache-Control : 告诉反向代理页面是否应该被缓冲 Pragma: 用来包含实现特定的指令 ,最常用的是 Pragma :no-cache注:DNS的轮询机制将某一个域名解析为多个IP地址。2)NginxNginx ( “engine x”)是俄罗斯人Igor Sysoev(塞索耶夫

15、)编写的一款高性能的HTTP和反向 代理服务器。Nginx已经在俄罗斯最大的门户网站Rambler Media (www。rambler。ru)上运行了4年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山 爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用Nginx服务器。Nginx 特点如下:1)工作在O SI模型的第7层(应用层)2)高并发连接官方测试能够支撑5万并发连接,在实际生产环境中跑到23万并发连接数。3) 内存消耗少在3万并发连接下,开启的10个Nginx进

16、程才消耗150M内存(15M*10=150M)。4) 配置文件非常简单 风格跟程序一样通俗易懂。5) 成本低廉Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机 则需要十多万至几十万人民币。6) 支持Rewrite重写规则能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组.7) 内置的健康检查功能如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。8) 节省带宽支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。9) 稳定性高 用于反向代理,宕机的概率微乎其微。3) Ngi nx+sq

17、uid页面缓存来实现反向代理负载均衡通过Nginx反向代理和squid缓存实现动静分离的架构图如下所示:5. Apache +tomcat集群实现负载均衡。使用apache和多个to meat配置一个可以应用的web网站,用Apache进行分流,把请求按照权 重以及当时负荷分tomcatl, tomeat2。.。去处理,要达到以下要求:1) Apache做为HttpServer,通过mod_jk连接器连接多个tomcat应用实例,并进行负载均衡.2) 同时还要配置session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat,集群内的tomcat都有

18、相同的session,并为系统(包括Apache和tomcat) 设定Session超时时间。2.3.2 缓存1. 系统架构方面的缓存1) Squid 缓存架构方面使用Squid进行缓存。注: SQUID使用了LM算法,LM就是页面wfe/里时间(DMe)和Lwf-Mod阳时间 的差DMe般是S?诚Z从后面取页面的时间LastModified 一般是页面生成时间。2) Ngi nx的缓存功能Nginx从0。7.48版本开始,支持了类似Squid的缓存功能;缓存把URL及相关组合当作Key,用md5编码哈希后保存;Ng inx的Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squ

19、id的PURGE指令,手动清除指定缓存页面;采用M MAP实现,设置的缓存区大小不能超过物理内存+SWEB的值3) 基于memcached的缓存ngi nx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。location /mem/ if ( $uri /mem/ (0-9AZa-z_*) $)set memcached_key ”$1”;memcached_pass192。 168。 1.2:11211;expires 70;这个配置会将http:/sudonecom/mem/abc指明到memcached的abc这个key去取数据。 Nginx目前没有写入mem

20、cached的任何机制,所以要往memcached里写入数据得用后台的动 态语言完成,可以利用404定向到后端去写入数据。能加传统缓存的缺点也是它和7“讷等缓存软件的不同之特色,所以也可看作其优 点。在生产应用中它常常用作税诚/的搭档,squidM于带?的链接往往无法阻挡 而giwx能将其访问拦住,例如 / / 会被当做两个链接,所以会造成两次穿透;而inx只会保存一次,无论链接变成 http:sudone。com/?1 还是http: /sudone。comJ? 123,均不能透过ginx缓存,从 而有效地保护了后端主机.nginx会非常老实地将链接形式保存到文件系统舷样对于一个链接,可以很

21、方便 地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如 /sync等配合使用它完完全全就是一个文件系统结构。2. 应用程序方面的缓存1) OSCacheOSCache由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页 面之内实现快速内存缓冲的功能,OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象, 你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API -OSCache API给你全面的

22、程序来控制所有的OSCache特性。永久缓存一-缓存能随意的写入硬盘, 因此允许昂贵的创建(expensive-tocreate)数据来保持缓存,甚至能让应用重启。支持集群-集群 缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期-你可以有最大限度的控制 缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持.OSCache的特点:1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或H TTP请求,任何java对象都可以缓 存。2)拥有全面的API: OSCache AP

23、I允许你通过编程的方式来控制所有的OSCache特性.3)永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销 昂贵的数据。4)支持集群:集群缓存数据能被单个的进行参数配置,不需要修改代码.5)缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认 性能不能满足需要时)。2)Memcachedmemcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果, 减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。Memcached是以Key/Value的形式单个对象缓存。3)自主开发的内存数据缓存服务a)独

24、立进程方式的缓存服务对于一些常用的动态数据通过开发程序服务缓存在内存中,提供给其他子系统调用,如下面 的数据就可以通过这样方式进行缓存。1)用户基本信息及状态的信息缓冲2)列表缓存,就像论坛里帖子的列表3)记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。4)复杂一点的group,sum, count查询,比如积分的分类排名b)集成在WEB应用中的内存缓存在web应用中对于热点的功能,考虑使用完全装载到内存,保证绝对的响应速度,对于需要 频繁访问的热点数据,采用集中缓存(多个可以采用负载均衡),减轻数据库的压力,比如:很多配 置信息,操作员信息等等。2.3.3 页面静态化静态

25、的H TML页面严格地由标准的H TML标示语言构成,并不需要服务器端即时运算生成。 这意味着,对一个静态H TML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。 从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。页面静态化就是采用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽可 能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。同时采用第三方开源的CMS系统来实现网站内容的管理.对于大量内容并且频繁更新的网 站,我们无法全部手动去挨个实现页面静态化,所以我们需要引入常见的信息发布系统(CMS), 信息发布系统(

26、CMS)可以实现最简单的信息录入自动生成静态页面,对于一个大型网站来说, 拥有一套高效、可管理的CMS是必不可少的。同时,HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内 容更新很小的应用,可以考虑使用HTML静态化来实现,比如论坛中论坛的公用设置信息,这些 信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调 用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大 量的数据库访问请求。在进行html静态化的时候还可以使用一种折中的方法,就是前端继续使用动态实现,在一定 的策略下通过后台模块进行定时把动态

27、网页生成静态页面,并定时判断调用,这个能实现很多灵 活性的操作.为了提高静态HTML的访问效率,主要可以对以下几个方面进行优化:网络带宽、磁盘I/O 以及cache (高速缓冲存储器).2.3.4 数据库配置及优化1. 数据库集群对生产数据库采用RAC实现数据库的集群。2. 数据库及表的散列 把生产数据库和查询数据库进行分离,针对系统业务数据的特点,把大的表进行拆分,对于访问 较多的表采用分区表。使用读/写数据库分离,随着系统变得越来越庞大,特别是当它们拥有很差的SQL时,一台数据 库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离。更一般地, 这意味着建立主/从副本

28、系统,其中程序会对主库编写所有的Update、Insert和Delete变更语句,而 所有Select的数据都读取自从数据库(或者多个从数据库)。尽管概念上很简单,但是想要合理、精确地实 现并不容易,这可能需要大量的代码工作。因此 即便在开始时使用同一台数据库服务器,也要尽早计划在PHP中使用分离的DB连接来进行读写操作. 如果正确 地完成该项工作,那么系统就可以扩展到2台、 3台甚至12台服务器,并具备高可用性和稳 定性。3. 拥有良好的DB配置和备份很多公司都没有良好的备份机制,也不知道如何恰当地完成这项工作只有imp是不够的,还需 要进行热备份,从而得到超快的速度和超高的可靠性.另外,在

29、将所有备份文件从服务器上转移出来之前要进行压缩和加密。另外还要确保拥有设计 合理的、有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是非常重 要的.2.3.5 文件存储1. 文件共享1) HDFS(GFS)HDFS是Apache Hadoop项目中的一个分布式文件系统实现,基于Google于2003年10月发 表的Google File System(GFS)论文。特性1)硬件要求低2)高容错性3)易可扩展4)配置简单5) 超大文件HDFS 采用 master/slave 架构。一个HDFS集群是由一个Name node和一定数目的Data nodes组成.2) NFS

30、与GFS比较首先从它们的功能上进行分析。NFS即网络文件系统,是由SUN公司开发的它是FreeBSD支 持的文件系统中的一种,允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和 程序访问远端系统上的文件就像访问本地文件一样.而GFS是Google为了满足本公司迅速增长的数据处理要求而开发的文件系统.GFS是一个 可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它是针对Google 的计算机集群进行设计的,专门是为Google页面搜索的存储进行了优化。所以从功能上看,它们两者是完全不同的概念。其次从结构上比较,NFS至少包括两个主要部分:一台服务器,以及至少

31、一台客户机。被共享 的目录和文件存放在服务器上,客户机远程地访问保存在服务器上的数据.GFS则由一台Master(通常有几台备份)和若干台TrunkServer构成。GFS中文件备份成固 定大小的Trunk分别存储在不同的TrunkServer上,每个Trunk有多份(比如3)拷贝,也存储在不 同的TrunkServer上。Master负责维护GFS中的Metadata,即文件名及其Trunk信息。客户端先 从Master上得到文件的Metadata,根据要读取的数据在文件中的位置与相应的TrunkServer通 信,获取文件数据。再从跨平台性上,NFS的基本原则是“容许不同的客户端及服务端通

32、过一组RPCs分享相同 的文件系统”,它是独立于操作系统的,容许不同的操作系统共同地进行文件的共享。而GFS则没有这一特点,文件只能被集群系统中的PC所访问,而且这些PC的操作系统一般是 Linux.最后从规模上比较,HDFS只应用在大批量的数据共享上。目前Google拥有超过200个的GFS集群,其中有些集群的PC数量超过5000台集群的数据存储规模可以达到5个PB,并且集群中的数据读写吞吐量可达到每秒40G。而NFS般没有这么巨大的规模。2. 文件的多服务器自动同步使用Linux 2。6内核的inotify监控Linux文件系统事件。利用开源的Isync监听某一目录,如果目录内文件发生增、

33、删、改利用Rsy nc协议自动同步到 多台服务器.3. 图片服务器分离特别是如果程序与图片都放在同一个 APAHCE 的服务器下,每一个图片的请求都有可能导 致一个 HTTPD 进程的调用.使用独立的图片服务器不但可以避免以上这个情况,更可以对不同的使用性质的图片设置不 同的过期时间,以便同一个用户在不同页面访问相同图片时不会再次从服务器(基于是缓存服务 器)取数据,不但快速,而且还省了带宽.还有就是,对于缓存的时间上,亦可以做独立的调节。2.3.6 网络问题解决方案你不可能要求所有的使用人员,都和你的服务器在一个运营商的网络内,而不同网络之间访问速度会很慢,我们可以采用镜像网站和引入CDN来

34、解决这一问题.1. 智能DNS解析我们可以在不同的网络运营商部署web服务器,通过linux上的rsync工具自动同步到不同网络 接入商的web服务器上,以作为主站的镜像。然后通过配置智能DNS解析来引导不同网络的访问用户到对应的网络运营商的web服务器。2. CDN如果有足够的投资,也可以采用CDN(内容分发网),把静态内容(静态页面和图片)进行CDN 缓存,以减轻服务器压力。CDN的全称是CoWeW Delivery Ne刑0承,即内容分发网络。它釆取了分布式网络缓 存结构(即国际上流行的eb cache技术),其目的是通过在现有的h/erwef中增加一 层新的网络架构,将网站的内容发布到

35、最接近用户的网络边缘”,使用户可以就近 取得所需的内容,解决加eme/网络拥挤的状况提高用户访问网站的响应速度从 技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用 户访问网站响应速度慢的问题. (也就是一个服务器的内容,平均分部到多个服务器 上,服务器智能识别,让用户获取离用户最近的服务器,提高速.度目前,国内访问量较高的大型网站如新浪、网易等使用CDN网络加速技术虽然网站的访问巨大,但无论在什么地方访问都会感觉速度很快。而一般的网 站如果服务器在网通,电信用户访问很慢,如果服务器在电信,网通用户访问又很慢。2.3.7 WEB应用开发架构设计思路1. 基于MVC的三层应

36、用开发架构应用开发实现MVC三层架构进行web应用开发,采用ibatis作为持久层框架,c3p0作为数据库连 接池。iBATIS是一个可以设计和实现更好的Java应用程序持久化层的框架。iBATIS把对象和存储过程 或者使用XML描述符的SQL语句进行了关联。简单是iBATIS最大的优势iba tis-使用iba tis的十个理由1。至少能操作10种以上的数据库2. 可配置的caching(包括从属)3。支持 DataSource、local transaction managemen和 global transaction4. 简单的XML配置文档5。支持 Map, Collec tion,

37、 Lis t 和简单类型包装(如 Int eger, St ring)6。支持 JavaBeans 类(get/set 方法)7. 支持复杂的对象映射(如 populating lists, complex object models)8. 对象模型从不完美(不需要修改)9. 数据模型从不完美(不需要修改)10。你已经知道SQL,为什么还要学习其他东西1)MVC架构示意2)Struts 架构客户端发送一个HTTP请求,通过Struts框架最后获得一个HTTP响应,这一过程非常重要,它是理 解Struts框架的重点。上图描述了Struts框架的结构,而下图通过一个活动图更具体描述接受请求直 至返

38、回响应的整个过程:2. 面向服务的应用架构 面向服务的应用架构是指构建可分布式的、去中心化的服务器平台,以提供许多不同的应用,数据库被分成很多个小部分,围绕每个部分都会创建一个服务接口(API),并且该接口是访问数 据库的唯一途径。最终数据库演变成一个非常庞大的共享资源。这种架构是松散耦合的,并且围绕着服务进行构建。面向服务的架构提供给他们隔离特性,一 个服务可能有很多台数据库服务器,他们之间的数据是相通的,而对外他们的接口只有一个,外面是 无法知道这个服务后面的数据组织是如何搭建的。这样就有了越来越多的应用服务器。这些应用服务器从数据众多的服务(每个服务背后都有数 据库或集群数据库)中聚合信

39、息,然后生成我们所看到的Amazon。com的各个网站页面.这样各种服务如插件一样组成了一个开放的平台,这样团队的规模就会比较小,比较灵活。注 Amazon 就是采用了这种架构来构 建的,它拥有上千台服务器。2.4 系统软件参数优化在一定的架构基础上,要提高并发处理能力则需要调整服务器的操作系统内核参数、web服务 器(tomcat的参数、apache的参数、Nginx的参数),以使其性能达到最优化。2.4.1 操作系统优化调整系统的内核参数,增大连接数及TCP/IP的超时设置。Lin ux系统中:在/etc/sysctl。conf配置文件中增加如下内核参数:neto ipv4。tcp_syn

40、cookies = 1net.ipv4o tcp_tw_reuse = 1n et.ipv4.tcp_tw_recycle = 1net.ipv4o tcp_fin_timeout = 5242 tomcat服务器优化增大并发连接数,调整内存参数的设置.1、JDK内存优化:当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。 因此一般建议堆的最大值设置为可用内存的最大值的80%. Tomcat默认可以使用的内存为 128MB,在较大型的应用项目中,这点内存是不够的,需要调大.Tomcat默认可以使用的内存为128MB, Windows下,在文件/bin/catal

41、ina。bat,Unix下,在文 件/bin/catalina。sh的前面,增加如下设置:JAVA_OPTS=Xms【初始化内存大小】一Xmx 【可以使用的最大内存】需要把这个两个参数值调大。例如:JAVA_OPTS=Xms256m -Xmx512m表示初始化内存为256MB,可以使用的最大内存为512MB。2、连接器优化:在tomcat配置文件server。xml中的配置中,和连接数相关的参数有:maxThreads: Tomcat使用线程来处理接收的每个请求.这个值表示Tomcat可创建的最大的 线程数默认值150oacceptCou nt:指定当所有可以使用的处理请求的线程数都被使用时,

42、可以放到处理队列中 的请求数,超过这个数的请求将不予处理。默认值10。minSpareThreads: Tomcat初始化时创建的线程数。默认值25。maxSpareThreads: 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。 默认值75.enableLookups:是否反查域名,默认值为true。为了提高处理能力,应设置为falseconnnectionTimeout:网络连接超时,默认值60000,单位:毫秒。设置为0表示永不超时, 这样设置有隐患的。通常可设置为30000毫秒。maxKeepAliveRequests:保持请求数量,默认值100。buffe

43、rSize:输入流缓冲大小,默认 值 2048 bytes。compression:压缩传输,取值on/off/force,默认值off。其中和最大连接数相关的参数为 maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数.web server允许的最大连接数还受制于*作系统的内核参数设置,通常Windows是2000 个左右,Linux是1000个左右。2.4.3 apache服务器优化加大并发数量和关闭不需要的模块。因为apache非常消耗内存,尽量轻量化。Apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更

44、高的系 统消耗和执行效率同时配置apache和tomcat的组合使之能作到动静分离,apache处理静态页面,tomcat处理动态页面。 在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache,它提供了更轻量级和 更高效的处理能力2.4.4 Ngi nx服务器的优化worker_processes:该参数的值最好跟cpu核数相等,能够发挥最大性能,如果nginx所在服务 器为2颗双核cpu,则建议设定为4.3 Web服务架构评测主要对基于tomcat和n gi nx+tomca啲web服务器的处理性能进行测试,以作为不同性能要求下 架构选型的依据3.1 测试环境3

45、.1.1 网络环境1. 内网带宽千M内网。内网pi ng包延迟:0。1ms2. 网络拓扑示意3.1.2 服务器配置设备硬件配置操作系统NginxIBM X3650CPU: Intel (R) Xeon(R) E5150 2。 66GHz 2核*2 内存:4G千兆网卡Redhat linux as4TomcatlHp DL580 G4CPU: Intel (R) Xeon(TM) 3.40GHz 4核*2 内存:8G千兆网卡Redhat linux as5Tomcat2Hp DL580 G4CPU: Intel (R) Xeon (TM) 3.40GHz 4核*2 内存:8G千兆网卡Redhat

46、 linux as5Tes tlHp DL580 G5CPU: Intel (R) Xeon(R) E7310 1.60GHz 4核*2 内存:4G千兆网卡Redhat linux as5Tes t2IBM X3650CPU: Intel (R) Xeon (R) E5150 2。66GHz 2核*2 内存:4G千兆网卡Redhat linux as43.1.3 软件环境1. 操作系统网络参数优化用做测试的各台服务器,均在/etc/sysctl.co nf配置文件中增加如下内核参数:net.ipv4。tcp_syncookies = 1net。ipv4。tcp_tw_reuse = 1net.

47、ipv4.tcp_tw_recycle = 1neto ipv4.tcp_fin_timeout = 52. Nginx设置主要配置如下:user www www;worker_processes 4;error_log /usr/local/nginx/logs/nginx_error。log debug; pid/usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;eventsuse epoll;worker_connections 51200;httpin eludemime。types;default_type appli

48、cation/octet-stream;charset gb2312; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k;sendfile on;tcp_nopush on;keepalive_timeout 1;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers4 16k;gzip_http_version 1.0;gzip_comp_level 2;#gzip_typestext/pl

49、ain application/xjavascript text/css application/xml#gzip_vary on;upstream tomcats server192.168.131。 57:8081;server192.168。 131。 56:8081;# server 192。 168。 131.61:8080;serverlisten 81;server_name localhost;proxy_redirect off;location / proxy_pass http:/tomcats;#后端的Web服务器可以通过X-ForwardedFor获取用户真实IP p

50、roxy_set_header X-Forwarded-For $remote_addr;# location / # if ($ request_uri *。 *.(js 丨 css 丨 gif|jpg 丨 jpeg|png|bmp 丨 swf)$”)# proxy_passhttp:/;# # if ($ request_uri */view/(。*)$)# # proxy_passhttp:/;# # proxy_pass http:/web。 ;#定义日志格式log_format access $remote_addr - $remote_user $time_local $reque

51、st ”$ status” $body_bytes_sent ”$ http_referer” ”$http_user_agent $http_x_forwarded_for”;打日志access_log /usr/local/nginx/logs/access。 log access;允许客户端请求的最大的单个文件字节数 client_max_body_size 10m;缓冲区代理缓冲用户端请求的最大字节数 可以理解为先保存到本地再传给用户client_body_buffer_size128k;#跟后端服务器连接的超时时间_发起握手等候响应超时时间proxy_connect_timeout6

52、00;#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理proxy_read_timeout600;后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据proxy_send_timeout600;廿代理请求缓存区这个缓存区间会保存用户的头信息以供Ngi nx进行规则处理一般 只要能保存下头信息即可proxy_buffer_size8k;廿同上告诉Nginx保存单个用的几个Buffer最大用多大空间proxy_buffers4 32k;廿如果系统很忙的时候可以申请更大的proxy_buffers官方推荐*2proxy_busy_buffers_size 6

53、4k;#prox y缓存临时文件的大小proxy_temp_file_write_size 64k;3. Tomcat设置主要配置如下: Tomcat5。5 MaxThread 500 MinSpareThread 25 MaxSpareThread75 Xmx 1740M4. Java环境使用jdk1.6_03启动两个Tomcat.使用jdk1 o 6启动两个客户端的httpTes测试t进程。3.2 测试结果321单个TOMCAT的WEB服务器N客户线程数请求间隔测试服占用服务器持续平均速完成0数次数时间务器内存负载时间度请求11500200万0毫秒Tes tl1.1G15082 秒1298

54、6条/秒106万Tes t128847651372250020025毫1。7G 6秒条/秒万万秒Tes t22934123120秒条/秒万Tes t142228631203250020050毫1.7G 3秒条/秒万万秒Tes t24132922120秒条/秒万Tes t17421727128425002002001.7G 2秒条/秒万万毫秒Tes t27441608119秒条/秒万Tes t11595742条118525002005001.7G1秒/秒万万毫秒Tes t21575737条116秒/秒万Tes t16362471条3006250030010001.7G 1秒/秒万万毫秒Tes t

55、26351秒472条/秒300万服务端从第400秒左右开始,t Test2请求速度急剧下降,开始 且仍在在增加中,之前的错包率服务端从第740秒左右开始,to Test2请求速度急剧下降,开始 包率只有0.008%,达到1.7g后 在在增加中。web服务器负载从第82秒开始,tomcat占用内 载急剧升高,top显示已达150 急剧下降,错包率100%,测试服务端从第1595秒左右开始,tTest2请求速度急剧下降,开始08%,达到1.7g后,截止停止测从第280秒左右开始,tomcat占 请求速度急剧下降,出现错包, 抛出 “java.lang.0utOfMemory在测试进度到80%左右时

56、,tomcaTest2请求速度并未下降,直到 包,丢包率只有0。003%,最长NO3.2.2 Nginx+2个TOMCAT的WEB服务器客户端数线程数请求次数间隔时间测试服务器Tomcat 占用内存服务器负载持续时间平均速度完成请求数250150万Tes t1Tes t1500200万25毫秒Tes t1Test2500300万50毫秒Tes t1Test2Tes t1500300万200毫秒Test2500500万500毫秒Tes t1Test2500500万1000毫秒1G1G1。4G1。4G1.7G1。7G1。7G1.7G1。7G1.7GTes t1Test2968M1G347秒322秒

57、542秒544 秒1140 秒1141 秒1860 秒1863 秒5475 秒5565 秒10149秒10149秒4322 条/秒4658 条/秒3690 条/秒3676 条/秒2445 条/秒2424 条/秒1490 条/秒1482 条/秒913条/秒898条/秒492条/秒492条/秒150万150 万200万200万278万276万277万276万500万500万500万500万最大响应时长93005毫秒21244毫秒45016毫秒45014毫秒平均响时长0.21 毫0。23 毫0.27 毫0.27 毫93000毫秒92987毫秒9077毫秒9044毫秒1.09 毫1.11 毫2。02

58、毫2。02 毫3.2.3 Nginx+2个TOMCAT的WEB服务器+缓冲NO客户 端数线程 数请求 次数间隔时间测试服 务器Tomcat 占 用内存服务器 负载持续 时间平均速度 (条/秒)完成请 求数最大响应 时长平均响长122501500毫Tes t10。2G164秒23437150万9993毫秒0。04 毫万秒Tes t20。2G59秒25423150万3472毫秒0。04 毫2250020025毫Tes t10.4G 1196秒10202200万9616毫秒0.10 毫万秒Tes t20.4G194秒10361200万9608毫秒0.10 毫3250030050毫Tes t10。4G 1379秒7915300万9015毫秒0.13 毫万秒Tes t20.2G384秒7812300万10234 毫 秒0.13 毫42500300200Tes t10.4G 11220秒2459300万3018毫秒0.40 毫万毫秒Tes t20.2G1241秒2417300万3384毫秒0。41 毫52500500500Tes t10。4G 15031秒993500万3020毫秒1。00 毫万毫秒Tes t20。2G5055秒989500万3394毫秒1.01 毫625005001000Tes t10。4G

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!