全面的门户网站架构设计方案_第1页
全面的门户网站架构设计方案_第2页
全面的门户网站架构设计方案_第3页
全面的门户网站架构设计方案_第4页
全面的门户网站架构设计方案_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1前台门户网站架构

设计方案

北京宽连十方数字技术有限公司

2010-7

目录

1设计思路............................................................................

2系统结构............................................................................

3网络规划及性能计算.................................................................

3o1网络架构........................................................................

3.2网络架构说明...................................................................

3.2。1采用双防火墙双交换机做网络冗余,保障平台服务.................................

3.2o2采用硬件设备负载均衡器,实现网络流量的负载均衡...................................

3。3系统测算........................................................................

3。3.1系统处理能力要求...........................................................

3.3.2业务处理能力要求..........................................................

3。3。3系统话务模型................................................................

3.4配置核笄.......................................................

3.4.1数据库服务器性能核算.......................................................

3.4.2WEB服务器集群性能核算......................................................

3.4。3WEB服务器集群内存性能该算.................................................

3.4。4网络带宽....................................................................

4性能模拟测试及性能推算............................................................

4o1测试环境........................................................................

4.2测试结果........................................................................

4211个客户端模拟不同线和并发请求结果........................................

42210个客户端请求.............................................................

4^结果分析........................................................................

4.4根据测试结果推算...............................................................

4.5设备清单........................................................................

4.5。1硬件设备配置清单...........................................................

4.5.2设备技术规格................................................................

4。6平台扩容的建议.................................................................

2网站的性能瓶颈分析

1)网站的性能影响因素很多,下面主要从如下4个方面进行分析说明:

2)网络负载

a)公网负载

b)内网负载

3)WEB应用服务器性能

a)CPU

b)存储,I/O访问

c)内存

d)并发TCP/IP连接数

4)数据库服务器性能

a)数据库参数配置

b)服务器性能(CPU、内存、存储)

c)数据结构的合理性

5)不同WEB应用的处理方式而对不同的性能瓶颈

对于静态的网站:

a)静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成.这意味着,

对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。从服务器运

行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。对于静态HTML的访问瓶颈为:

网络带宽、磁盘I/O以及cache(高速缓冲存储器).

b)对于动态页面

3因为服务器解析动态页面必须在其传输到客户端前就通过服务器来进行解释,这样就会给应用服务器添

加额外的性能消耗,如果进一步要访问数据库,则会增加数据库服务器的性能消耗,则动态页面还有额

外的瓶颈:应用服务器的性能,数据库服务器的性能。

4系统架构设计

4.1总体思路

4.1.1为提高网站的高并发性能,提高开发效率及运营效率,主要按如下几个思路进行规划设计:

4.1.2负载均衡

1)四层交换负载均衡:

2)采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均衡。

3)通过第三方软件来实现负载均衡,同时实现页面请求的缓存。

4)通过Nginx实现反向代理服务器集群,同时搭定squid集群以作为静态页面和图片的缓存。

5)通过web服务器的配置来实现负载均衡

即通过apache或是Nginx将客户请求均衡的分给tomcatl,tomcat2。。。.去处理。

4.1.3WEB应用开发架构思路

I)应用开发实现MVC架构三层架构进行web应用开发

2)页面尽可能静态化以减少动态数据访问,如果是资讯类的网站可以考虑采用第三方开源的CMS系统

来生成静态的内容页面。

3)采用Oscache实现页面缓存,采用Memcached实现数据缓存

4)采用独立的图片服务器集群来实现图片资源的存储及WEB请求

4.1.4数据存储的设计思路

1)数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现数据库的集群。

4.1.5采用高效的网络文件共享策略,采用图片服务器来实现页面的图片存储。

4.1.6不同网络用户访问考虑

1)通过引入CDN来解决不同网络服务商的接入速度问题,一般只能解决静态页面的访问问懑。

4.2在不同运营商机房部署服务器,通过镜像技术来实现不同网络服务商的接入速度问题.

4.3总体架构

4.3.1网站的系统分层架构

4.3.2网站的物理架构

4.3.3网站的开发架构

4.3.4网络拓扑结构

1)备注:

采用双防火墙双交换机做网络冗余,保障平台服务

采用双防火墙通知接通2线路互联网接入,设备之间采用VRRP协议,在任何一个防火墙、互联网

发生故障后均可自动将流量切换到另一端,保证网站的正运行,设备或网络恢复后,自动恢复.

采用双千兆交换机分别接在2台防火墙上,当某台设备或者网络链路发生故障后,好设备自动接

管已坏设备的工作,不影响网站的整体运行,根据业务及真实服务器的数量,交换机可以随时增加。

采用硬件设备负载均衡器,实现网络流量的负载均衡

2)使用硬件设备负载均衡器,将网络流量均衡的分担到WEB服务器集群各节点服务器,保障平台服务器资

源均衡的使用。

3)采用代理服务器,实现软件级的网络负载均衡。

4)数据库服务器分离成生产数据库集群和查询数据库集群,实现生产读写与后台查询统计进行分离,

同时生产数据库采用rac技术进行

4.4架构涉及技术的详解

4.4.1负载均衡

1.基于DNS的负载均衡-----个域名绑定多个IP

DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现的,在DNS服务

器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中

的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web服务

器,从而达到负载均衡的目的。

2.这种技术的优点是,实现简单、实施容易、成本低、适用于大多数TCP/IP应用;但是,其缺点也非常明

显,首先这种方案不是真正意义上的负载均衡,DNS服务器将Http请求平均地分配到后台的Web服

务器上,而不考虑每个Web服务器当前的负载情况;加果后台的Web服务器的配置和处理能力不同,

最慢的Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用;其次未考虑容错,如

果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS请求分配到这台故障服务器上,导致不

能响应客户端.最后一点是致命的,有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓

存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为24小时).所以在国外最新

的建设中心Web站点方案中,已经很少采用这种方案了。

3.通过硬件四层交换实现负载均衡

4.在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是

物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了

三四台AIteon就搞定了

5.通过软件四层交换实现负载均衡

软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是LinuxVirtuaIServer,他提供了基于心

跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,

可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

6.一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在

很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性。

7.通过反向代理服务器实现负载均衡

反向代理服务器又称为WEB加速服务器,它位于WEB服务器的前端,充当WEB服务器的内容缓存器,反

向代理服务器是针对WEB服务器设置的,后台WEB服务器对互联网用户是透明的,用户只能看到反向代理

服务器的地址,不清楚后台WEB服务器是如何组织架构的.当互联网用户请求WEB服务时,DNS将请求的城

名解析为反向代理服务器的IP地址,这样URL请求将被发送到反向代理服务器,由反向代理服务器负责

处理用户的请求与应答、与后台WEB服务器交互。利用反向代理服务器减轻了后台WEB服务器的负载,提

高了访问速度,同时避免了因用户直接与WEB服务器通信带来的安全隐患.

目前有许多反向代理软件,比较有名的有Nginx和Squid。

1)Nginx是由IgorSysoev为俄,罗斯访问量第二的Rambler。ru站点开发的,是一个高性能的HTTP和

反向代理服务器,也是一个IMAP/P0P3/SMTP代理服务器。

2)Squid是由美国政府大力资助的一项研究计划,其目的为解决网络带宽不足的问题,支持HTTP,

HTTPS,FTP等多种协议,是现在Unix系统上使用、最多功能也最完整的一套软体。

3)Squid

Squid是一个开源的软件,利用它的反向代理技术可以提高网站系统的访问速度,下面将重点介绍

Squid反向代理的实现原理和在提高网站性能方面的应用。

Squid反向代理服务器位于本地WEB服务器和Internet之间,组织架构如下图:

•客户端请求访问WEB服务时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,这样客

户端的URL请求将被发送到反向代理服务器。如果Squid反向代理服务器中缓存了该请求的资源,

则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的WEB服务器请求资源,然后将

请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

•Squid反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一些CGI脚本程序或者

ASP、JSP之类的动态程序默认不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面,有

四个最重要HTTP头标记:

•LastModified;名诉反向代理页面什么时间被修改

•Expires:告诉反向代理页面什么时间应该从缓冲区中删除

•Cache-Control:告诉反向代理页面是否应该被缓冲

Pragna:用来包含实现特定的指令,最常用的是Pragma:no-cache

4)注:DNS的轮询机制将某一个域名解析为多个IP地址.

5)Nginx

Nginx("enginex")是俄罗斯人IgorSysoev(塞索耶夫)编写的一款高性能的HTTP和反向代理服务

器。

Nginx已经在俄罗斯最大的门户网站——

在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、

校内网、YUP00相册、豆瓣、迅雷看看等多家网站、频道使用Nginx服务器.

1)Nginx特点如下:

2)工作在0SI模型的第7层(应用层)

3)高并发连接

4)官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。

5)内存消耗少

6)在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)。

7)配置文件非常简单

风格跟程序一样通俗易懂。

8)成本低廉

Nginx为开源软件,可以免费使用。而购买F5BIG—IP、NetScaIer等硬件负载均衡交换机则需要

十多万至几十万人民币。

9)支持Rewrite重写规则

10)能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。

11)内置的健康检查功能

12)如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问。

13)节省带宽

支持GZIP压缩,可以添加浏览器本地缓存的Header头。

14)稳定性高

6)用于反向代理,宕机的概率微乎其微.

7)Nginx+squid页面缓存来实现反向代理负载均衡

通过Nginx反向代理和squid缓存实现动静分离的架构图如下所示:

8.Apache+tomcat集群实现负载均衡.

1)使用apache和多个tomcat配置一个可以应用的web网站,用Apache进行分流,把请求按照权重以及当

时负荷分t001。@t1,1:01^^{2。..去处理,要达到以下要求:

4.4.2Apache做为HttpServer,通过mod_jk连接器连接多个tomcat应用实例,并进行负载均衡。

4.4.3同时还要配置session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它

tomcat,集群内的tomcat都有相同的session,并为系统(包括Apache和tomcat)设定Session

超时时间。

4.4.4缓存

1.系统架构方面的缓存

1)Squid缓存

架构方面使用Squid进行缓存。

2)注:SQUID使用了LM算法,LM就是页面Header里时间(Date)和Last-Modified时间的差。Date一般是Squid

从后面取页面的时间,Last-Modified一般是页面生成时间。

3)Nginx的缓存功能

缓存把URL及相关组合当作Key,用md5编码哈希后保存;

Nginx的Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除

指定缓存页面;

采用MMAP实现,设置的缓存区大小不能超过物理内存+SWEB的值

4)基于memcached的缓存

nginx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。

Iocation/mem/{

if($uri~""/mem/CtO—9A-Za-z_]*)$")

(

set$memcached_key"$1";

}

expires70;

)

Nginx目前没有写入memcached的任何机制,所以要往n^emcached里写入数据得用后台的动

态语言先成,可以利用404定向到后端去写入数据。

N

2.nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查回它在缓存机器上

的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件

系统结构。

3.应用程序方面的缓存

1)OSCache

OSCache由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速

内存缓冲的功能,OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的

普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,

任何java对象都可以缓存。拥有全面的API—-OSCacheAPI给你全面的程序来控制所有的OSCache特性.永久

缓存缓存能随意的写入硬盘,因比允许昂贵的创建(expensive—to—create)数据来保持缓存,甚至能让

应用重启.支持集群一集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期一你可以

有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持。

OSCache的特点:

1)缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

2)拥有全面的API:OSCacheAPI允许你通过编程的方式来控制所有的OSCache特性。

3)永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间,爰存创建开销昂贵的数

据。

2)4)支持集群:集群缓存数据能被单个的进行参数配置,不需要修改代码.

3)5)缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能

不能满足需要时)。

4)Memcached

memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据

库访问次数,以提高动态Web应用的速度、提高可扩展性.

Memcached是以Key/VaIue的形式单个对象缓存.

5)自主开发的内存数据缓存服务

a)独立进程方式的缓存服务

对于一些常用的动态数据通过开发程序服务缓存在内存中,提供给其他子系统调用,如下面的数据就

可以通过这样方式进行缓存.

1)用户基本信息及状态的信息缓冲

2)列表缓存,就像论坛里帖子的列表

b)记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。

c)复杂一点的group,sum,court查询,比如积分的分类排名

d)集成在WEB应用中的内存缓存

4.4.5在web应用中对于热点的功能,考虑使用完全装载到底存,保证绝对的响应速度,对于需要频繁访

问的热点数据,采用集中缓存(多个可以采用负载均衡),减轻数据库的压力,比如:很多配置信息,

操作员信息等等.

4.4.6页面静态化

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。这意味着,对

一个号态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。从服务器运行的那个时

间片来看,这个传输过程仅仅占用了很小的CPU资源.

页面静态化就是采用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽可能使我们

的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。

同时采用第三方开源的CMS系统来实现网站内容的管理。对于大量内容并且频繁更新的网站,我们无法

全部手动去挨个实现页面静态化,所以我们需要引入常见的信息发布系统(CMS),信息发布系统(CMS)可

以实现最简单的信息录入自动生成静态页面,对于一个大型对站来说,拥有一套高效、可管理的CMS是必

不可少的。

同时,HTML静态化也是某些辍存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小

的应用,可以考虑使用HTMU争态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都

可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考

虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。

4.4.7在进行html静态化的时候还可以使用一种折中的方法,就是前端继续使用动态实现,在一定的策略

下通过后台模块进行定时N巴动态网页生成静态页面,并定时判断调用,这个能实现很多灵活性的操

作。

4.4.8为了提高静态HTML的访问效率,主要可以对以下几个方面进行优化:网络带宽、磁盘I/O以及

cache(高速缓.冲存储器)。

4.4.9数据库配置及优化

1.数据库集群

对生产数据库采用RAC实现数据库的集群。

2.数据库及表的散列

把生产数据库和查询数据库进行分离,针对系统业务数据的特点,把大的表进行拆分,布于访问较多的表

采用分区表.

3.使用读/写数据库分离,随着系统变得越来越庞大,特别是当它们拥有很差的SQL时,一台数据库服务

器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离.更一般地,这意

味着建立主/从副本系统,其中程序会对主库编写所有的Update、Insert和Delete变更语句,而所

有Select的数据都读取自从数据库(或者多个从数据库)。

4.尽管概念上很简单,但是想要合理、精确地实现并不容易,这可能需要大量的代码工作。因此,即便

在开始时使用同一台数据库服务器,也要尽早计划在PHP中使用分离的DB连接来进行读写操作。如果

正确地完成该项工作,那么系统就可以扩展到2台、3台甚至12台服务器,并具备高可用性和稳定性。

5.拥有良好的DB配置和备份

很多公司都没有良好的备份机制,也不知道如何恰当地完成这项工作。只有imp是不够的,还需要进行

热备份,从而得到超快的速度和超商的可靠性。

4.4.10另外,在将所有备份文件从服务器上转移出来之前要进行压缩和加密。另外还要确保拥有设计合理

的、有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是非常重要的。

4.4.11文件存储

1.文件共享

1)HDFS(GFS)

■HDFS是ApacheHadoop项目中的一个分布式文件系统实现,基于Google于2003年10月发表的

GoogleFileSystem(GFS)论文。

■特性

1)硬件要求低

2)高容错性

3)易可扩展

4)配置简单

5)超大文件

HDFS采用master/sIave架构。

一个HDFS集群是由一个Namenode和一定数目的Datanodes组成°

2)NFS与GFS比较

首先从它们的功能上进行分析。NFS即网络文件系统,是由SUN公司开发的。它是FreeBSD支持的文件

系统中的一种,允许一个系统在网络上与它人共享目录和文件.通过使用NFS,用户和程序访问远端系统上

的文件就像访问本地文件一样。

而GFS是Google为了满足本公司迅速增长的数据处理要求而开发的文件系统.GFS是一个可扩展的分布

式文件系统,用于大型的、分布式的、对大量数据进行访问的应用.它是针对Google的计算机集群进行设

计的,专门是为GoogIe页面搜索的存储进行了优化。

所以从功能上看,它们两者是完全不同的概念.

其次从结构上比较,NFS至少包括两个主要部分:一台服务器,以及至少一台客户机。被共享的目录和

文件存放在服务器上,客户机远程地访问保存在服务器上的数据。

GFS则由一台Master(通常有几台备份)和若干台TrunkServer构成.GFS中文件备份成固定大小的Trunk

分别存储在不同的TrunkServer上,每个Trunk有多份(比如3)拷贝,也存储在不同的TrunkServer上。

Master负责维护GFS中的Metadata,即文件名及其Trunk信息。客户端先从Master上得到文件的Metadata,

根据要读取的数据在文件中的位置与相应的TrunkServer通馆,获取文件数据。

再从跨平台性上,NFS的基本原则是“容许不同的客户端及服务端通过一组RPCs分享相同的文件系统”,

它是独立于操作系统的,容许不同的操作系统共同地进行文件的共享.

而GFS则没有这一特点,文件只能被集群系统中的PC所访问,而且这些PC的操作系统一般是Linux。

最后从规模上比较,HDFS只应用在大批量的数据共享上。目前Google拥有超过200个的GFS集群,其中

有些集群的PC数量超过5000台.集群的数据存储规模可以达到5个PB,并且集群中的数据读写吞吐量可达

到每秒40G。

而NFS一般没有这么巨大的规模。

2.文件的多服务器自动同步

使用Linux2O6内核的inotify监控Linux文件系统事件。

3.利用开源的Isync监听某一目录,如果目录内文件发生增、删、改,利用Rsync协议自动同步到多台

服务器.

4.图片服务器分离

特别是如果程序与图片都放在同一个APAHCE的服务器下,每一个图片的请求都有可能导致一

个HTTPD进程的调用。

4.4.12使用独立的图片服务器不但可以避免以上这个情况,更可以对不同的使用性质的图片设置不同的

过期时间,以便同一个用户在不同页面访问相同图片时不会再次从服务器(基于是缓存服务器)取

数据,不但快速,而且还省了带宽。还有就是,对于慢存的时间上,亦可以做独立的调节。

4.4.13网络问题解决方案

1.你不可能要求所有的使用人员,都和你的服务器在一个运营商的网络内,而不同网络之间访问速度会

很慢,我们可以采用镜像网站和引入CDN来解决这一问题.

2.智能DNS解析

我们可以在不同的网络运营商部署web服务器,通过Iinux上的rsync工具自动同步到不同网络接入商的

web服务器上,以作为主站的镜像。

然后通过配置智能DNS解析来引导不同网络的访问用户到对应的网络运营商的web服务器。

3.CDN

如果有足够的投资,也可以采用3洲(内容分发网),把静态内容(静态页面和图片》进行

CDN缓存,以减轻服务器压力。

CDN的全称是ContentDeliveryNetwork,即内容分发网络,它采取了分布式网络辍存结构(即

国际上流行的webcache技术),其目的是通过在现有的Internet中增加一层新的网络架构,

将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决

Internet网络拥挤的状况,提高用户访问网站的响应速皮。从技术上全面解决由于网络带宽

小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题.(也就是

一个服务器的内容,平均分部到多个服务器上,服务器智能识别,让用户获取离用户最近的服

务器,梃高速度.

4.4.14目前,国内访问量较高的大型网站如新浪、网易等,均使用CDN网络加速技术,虽然网站的访问巨大,

但无论在什么地方访问都会感觉速度很快。而一般的网站如果服务器在网通,电信用户访问很慢,

如果服务器在电信,网通用户访问又很慢。

4.4.15WEB应用开发架构设计思路

1.基于MVC的三层应用开发架构

应用开发实现MVC三层架构进行web应用开发,采用ibatis作为持久层框架,c3Po作为数据库连接池。

iBATIS是一个可以设计和实现更好的Java应用程序持久化层的框架。iBATIS把对象和存储过程或者使用

XML描述符的SQL语句进行了关联。简单是iBATIS最大的优势

■ibatis-使用ibatis的十个理由

1)1.至少能操作10种以上的数据库

2)2。可配置的eaching(包括从属)

3)3o支持DataSource、IocaItransactionmanagemen和globaltransaction

4)4o简单的XML配置文档

5)5.支持Map,Collection,List和简单类型包装(如Integer,String)

6)6o支持JavaBeans类(get/set方法)

7)7.支持复杂的对象映射(如populatingIists,compIexobjectmodeIs)

8)80对象模型从不完美(不需要修改)

9)9。数据模型从不完美(不需要修改)

10)10o你已经知道SQL,为什么还要学习其他东西

11)MVC架构示意

12)Struts架构

2.客户端发送一个HTTP请求,通过Struts框架最后获得一个HTTP响应,这一过程非常重要,它是理解

Struts框架的重点。上图描述了Struts框架的结构,而下图通过一个活动图更具体描述接受请求直

至返回响应的整个过程:

3.面向服务的应用架构

面向服务的应用架构是指构建可分布式的、去中心化的服务器平台,以提供许多不同的应用,数据库被

分成很多个小部分,围绕每个部分都会创建一个服务接口(API),并且该接口是访问数据库的唯一途径。

最终数据库演变成一个非常庞大的共享资源。

这种架构是松散耦合的,并且围绕着服务进行构建。面向服务的架构提供给他们隔离特性,一个服务可

能所很多台数据库服务器,他们之间的数据是相通的,而对外他们的接口只有一个,外面是无法知道这个服务

后面的数据组织是如何搭建的.

这样就有了越来越多的应用服务器。这些应用服务器从数据众多的服务(每个服务背后都有数据库或集群数

据库)中聚合信息,然后生成我们所看到的A的各个网站页面。

4.5这样各种服务如插件一样组成了一个开放的平台,这样团队的规模就会比较小,比较灵活。

4.6注Amazon就是采用了这种架构来构建的,它拥有上千台服务器。

4.7系统软件参数优化

4.7.1在一定的架构基础上,要提高并发处理能力则需要调整服务器的操作系统内核参数、web服务器

(tomcat的参数、apache的参数、Nginx的参数),以使其性能达到最优化.

4.7.2操作系统优化

调整系统的内核参数,增大连接数及TCP/1P的超时设置。

Linux系统中:

在/etc/sysctI。conf配置文件中增加如下内核参数:

4.7.3tomcat服务器优化

增大并发连接数,调整内存参数的设置。

1.JDK内存优化:

当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用

服务崩溃.因此一般建议堆的最大值设置为可用内存的最大值的80%oTomcat默认可以

使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大.

Tomcat默认可以使用的内存为128MB,WindowsT,在文件"/bin/cataIina。bat,Unix

下,在文件/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS='-Xms【初始化内存

大小】一Xmx【可以使用的最大内存】‘需要把这个两个参数值调大.例如:JAVA_OPTS=>

-Xns256m-Xmx512m'表示初始化内存为256MB,可以使用的最大内存为512MB。

2.连接器优化:在tomcat配置文件server,xml中的配置,中,和连接数相关的参数

有:

maxThreads:Tomcat使用浅程来处理接收的每个请求。这个值表示Tomcat可创建

的最大的线程数.默认值150o

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理

队列中的请求数,超过这个数的请求将不予处理。默认值10。

minSpareThreads:Tomcat初始化时创建的线程数.默认值25。

maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket

线程。默认值75。

enabIeLookups:是否反查域名,默认值为true。为了提高处理能力,应设置为faIse

connnectionTimeout:网络连接超时,默认值60000,单位:毫秒。设置为0表示永

不超时,这样设置有隐患的.通常可设置为30000毫秒。

maxKeepAIiveRequests:保持请求数量,默认值100.buffersize:输入流缓冲大

小,默认值2048byteso

compression:压缩传输,取值on/off/force,默认值off。其中和最大连接数相关

的参数为maxThreads和acceptCount.如果要加大并发连接数,应同时加大这两个参数.

webserver允许的最大连接数还受制于*作系统的内核参数设置,通常Windows是

2000个左右,Linux是1000个左右.

webserver允许的最大连接数还受制于*作系统的内核参数设置,通常Windows是

2000个左右,Linux是1000个左右.

4.7.4apache服务器优化

加大并发数量和关闭不需要的模块。因为apache非常消耗内存,尽量轻量化。

Apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModuIe,保证更高的系统消耗和执行

效率

4.7.5同时配置apache和tomcat的组合使之能作到动静分离,apache处理静态页面,tomcat处理动态页面。

4.7.6在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache,它提供了更轻量级和更

高效的处理能力

4.7.7Nginx服务器的优化

5worker_processes:该参数的值最好跟cpu核数相等,能够发挥最大性能,如果nginx所在服务器为2颗

双核cpu,则速议设定为4。

6Web服务架构评测

主要对基于tomcat和nginx+tomcat的web服务器的处理性能进行测试,以作为不同性能要求下架构选型

的依据

6.1测试环境

6.1.1网络环境

1.内网带宽

>千M内网。

2.内网ping包延迟:〈0。1ms

3.网络拓扑示意

6.1.2服务器配置

设备硬件配置操作系统

IBMX3650

CPU:Intel(R)Xeon(R)E51502.66GHz2核*2RedhatIinux

Nginx

内存:4Gas4

千兆网卡

HpDL580G4

CPU:Intel(R)Xecn(TM)3。40GHz4核*2RedhatIinux

Tomcat1

内存:8Gas5

千兆网卡

HpDL580G4

CPU:Intel(R)Xecn(TM)3.40GHz4核*2RedhatIinux

Tomcat2

内存:8Gas5

千兆网卡

TestiHpDL580G5RedhatIinux

CPU:Intel(R)Xeon(R)E73101.60GHz4核*2as5

内存:4G

千兆网卡

IBMX3650

CPU:Intel(R)Xeon(R)E5150266GHz2核*2RedhatIinux

Test20

内存:4Gas4

千兆网卡

6.1.3软件环境

1.操作系统网络参数优化

2.用做测试的各台服务器,均在/etc/sysctl.conf配直文件中增加如下内核参数:

3.Nginx设置

主要配置如下:

userwwwwww;

worker_processes4;

error_log/usr/1ocaI/nginx/1ogs/nginx_error0Iogdebug;

pid/usr/1ocaI/nginx/1ogs/nginxopid;

worker_rIimit_nofiIe51200;

events

(

useepolI;

workerconnections51200;

}

http

(

incIudemime.types;

defauIt_typeappIication/octet-strearn;

#charsetgb2312;

server_names_hash_bucket_size128;

client_header_buffer_size32k;

large_client_header_buffers432k;

sendfiIeon;

tcp_nopushon;

keepaIive_timeout1;

tcp_nodeIayon:

#gzipon;

#gzip_min_Iength1k;

#gzip_buffers416k:

#gzip_http_version1.0;

#gzip_comp_level2;

#gzip_typestext/plainappIication/x-javascripttext/cssapplication/xml;

#gziP.varyon;

upstreamtomcats(

)

server

(

Iisten81;

server_nameIocaIhost:

proxy_redirectoff;

location/{

)

#后端的Web服务器可以通过X—Forwarded—For

温馨提示

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

评论

0/150

提交评论