好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

公开 内部公开 机密 绝密√

的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

Squid 反向代理一般只缓存可缓冲的数据(比如 html 网页和图片等),而一些 CGI 脚本程序或者 ASP、JSP 之类的动态程序默认不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面, 有四个最重要 HTTP 头标记:

? ? ? ?

Last-Modified: 告诉反向代理页面什么时间被修改 Expires: 告诉反向代理页面什么时间应该从缓冲区中删除 Cache-Control: 告诉反向代理页面是否应该被缓冲

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

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

2) Nginx

Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。

Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上运行了4年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。

在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用 Nginx 服务器。

Nginx 特点如下:

1) 工作在OSI模型的第7层(应用层) 2) 高并发连接

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

在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。 4) 配置文件非常简单

风格跟程序一样通俗易懂。 5) 成本低廉

Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。 6) 支持Rewrite重写规则

能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。 7) 内置的健康检查功能

如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。 8) 节省带宽

支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。 9) 稳定性高

用于反向代理,宕机的概率微乎其微。

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

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

4/10/2013

版权所有,侵权必究All rights reserved 第

公开 内部公开 机密 绝密√

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

使用 apache和多个tomcat 配置一个可以应用的web网站,用Apache进行分流,把请求按照权重以及当时负荷分tomcat1,tomcat2...去处理,要达到以下要求:

4/10/2013

版权所有,侵权必究All rights reserved 第

公开 内部公开 机密 绝密√

1) Apache 做为HttpServer ,通过mod_jk连接器连接多个 tomcat 应用实例,并进行负载均衡。 2) 同时还要配置session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制

到其它tomcat, 集群内的tomcat都有相同的session,并为系统(包括 Apache 和 tomcat)设定 Session 超时时间。 2.3.2 缓存

1. 系统架构方面的缓存 1) Squid缓存

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

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

2) Nginx的缓存功能

Nginx从0.7.48版本开始,支持了类似Squid的缓存功能; 缓存把URL及相关组合当作Key,用md5编码哈希后保存;

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

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

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

if ( $uri ~ \ {

set $memcached_key \

memcached_pass 192.168.1.2:11211; }

expires 70; }

这个配置会将http://sudone.com/mem/abc指明到memcached的abc这个key去取数据。 Nginx目前没有写入memcached的任何机制,所以要往memcached里写入数据得用后台的动态语言完成,可以利用404定向到后端去写入数据。

Nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生产应用中它常常用作和squid的搭档,squid对于带?的链接往往无法阻挡,而nginx能将其访问拦住,例如:http://sudone.com/?和http://sudone.com/在squid上会被当做两个链接,所以会造成两次穿透;而nginx只会保存一次,无论链接变成4/10/2013

版权所有,侵权必究All rights reserved 第

公开 内部公开 机密 绝密√

http://sudone.com/?1还是http://sudone.com/?123,均不能透过nginx缓存,从而有效地保护了后端主机。

nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件系统结构。

2. 应用程序方面的缓存 1) OSCache

OSCache由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能,OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

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

1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 2) 拥有全面的API:OSCache API允许你通过编程的方式来控制所有的OSCache特性。 3) 永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。

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

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

memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

Memcached是以Key/Value的形式单个对象缓存。

4/10/2013

版权所有,侵权必究All rights reserved 第

公开 内部公开 机密 绝密√

3) 自主开发的内存数据缓存服务 a) 独立进程方式的缓存服务

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

1) 用户基本信息及状态的信息缓冲 2) 列表缓存,就像论坛里帖子的列表

3) 记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。 4) 复杂一点的group,sum,count查询,比如积分的分类排名 b) 集成在WEB应用中的内存缓存

在web应用中对于热点的功能,考虑使用完全装载到内存,保证绝对的响应速度,对于需要频繁访问的热点数据,采用集中缓存(多个可以采用负载均衡),减轻数据库的压力,比如:很多配置信息,操作员信息等等。 2.3.3 页面静态化

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。这意味着,对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。

页面静态化就是采用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。

4/10/2013

版权所有,侵权必究All rights reserved

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

公开内部公开机密绝密√的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。Squid反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一些CGI脚本程序或者ASP、JSP之
推荐度:
点击下载文档文档为doc格式
1kckk2louf92i2p9mddy
领取福利

微信扫码领取福利

微信扫码分享