




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前台门户网站架构 前台门户网站架构 设计方案 2010-7 前台门户网站架构 目目 录录 1设计思路设计思路.3 2系统架构设计系统架构设计.4 2.1网站总体架构.4 2.1.1网站的系统架构.4 2.1.2网站的软件架构.6 2.1.3网络拓扑结构.7 2.2负载均衡.8 2.2.1通过硬件实现负载均衡.8 2.2.2通过软件四层交换实现负载均衡.8 2.2.3通过反向代理服务器实现负载均衡.8 2.2.4Apache +tomcat集群实现负载均衡。 .11 2.3缓存.12 2.3.1系统架构方面的缓存.12 2.3.2应用程序方面的缓存.13 2.4页面静态化.14 2.5数据库集群及表库散列.15 2.5.1数据库集群.15 2.5.2数据库及表的散列.15 2.6文件存储.15 2.6.1文件共享.15 2.6.2文件的多服务器自动同步.16 2.6.3图片服务器分离.16 2.7镜像.16 2.8WEB应用架构设计思路.17 2.8.1MVC架构示意.18 2.8.2Struts架构 .19 3性能测试性能测试.20 3.1测试环境.20 3.2测试项目.22 3.2.1测试点.22 3.2.2测试结果要求.22 3.3测试结果.22 3.4结果分析.23 前台门户网站架构 1 设计思路设计思路 为提高网站的高并发性能,提高开发效率及运营效率,主要按如下几个思路进行规划设计: 1)实现web请求的网络负载均衡的设计思路 a)通过硬件实现负载均衡。 b)通过第三方软件来实现负载均衡,同时实现页面请求的缓存。 c)通过web服务器的配置来实现负载均衡 即通过apache将客户请求均衡的分给tomcat1,tomcat2.去处理。 2)WEB应用架构设计思路 a)应用开发实现MVC架构三层架构进行web应用开发 b)采用第三方开源的CMS系统来实现网站内容的管理。 c)页面尽可能静态化以减少动态数据访问。 d)采用页面缓存机制和数据缓存来实现页面请求的缓冲和数据的缓存 3)数据存储的设计思想 a)数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现数据库的 集群。 b)采用高效的网络文件共享策略,采用图片服务器来实现页面的图片存储。 前台门户网站架构 2 系统架构设计系统架构设计 2.1网站总体架构 2.1.1网站的系统架构 1. 分层结构 TomatApache WWE EB B服服务务器器 架架构构 数数据据存存储储 文文件件 共共享享 Tomat Nginx proxySquid 开开源源的的负负载载均均 衡衡软软件件 数数据据库库生生产产数数据据库库查查询询数数据据库库 HDFS 负负载载均均衡衡器器 负负载载均均衡衡 . WEB容容器器 负负载载均均衡衡设设备备 Control MVC 应应用用架架构构ModelView 数数据据持持久久层层 (ibatis) 数数据据缓缓存存 页页面面缓缓存存 (OSCache/Memcached) Squid cache数数据据缓缓存存Nginx cache NFS 前台门户网站架构 2. 网络示意图 Internet 服服务务器器2 代代理理服服务务器器集集群群 (Nginx) Web服服务务器器集集群群B 负负载载均均衡衡器器1 . 服服务务器器n 服服务务器器2 服服务务器器n服服务务器器1 Squid服服务务器器集集群群 服服务务器器1服服务务器器2 . 用用户户浏浏览览页页面面 服服务务器器2服服务务器器1 服服务务器器1服服务务器器2 Web服服务务器器集集群群A 服服务务器器1服服务务器器2 图图片片服服务务器器集集群群 服服务务器器3 3. 网站架构设计说明 1)采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均衡。 2)通过Nigix实现反向代理服务器集群 3)同时搭建squid集群以作为静态页面的缓存。 4)通过1个apache+多个tomcat进行负载均衡配置,来组成web服务器集群。 5)采用独立的图片服务器集群来实现图片资源的存储及WEB请求。 6)采用HDFS来进行文件的共享访问,通过Rsync来实现远程文件同步。 7)在应用开发中采用基于Struts的MVC架构,同时采用缓存技术来提高动态页面的访问。 8)使页面尽可能静态化,引入CMS系统使网站进一步静态化。 9)对数据库采用生产数据库和查询数据库分离,同时采用oracle 的Rac技术来实现集群扩展。 10) 通过镜像技术来实现不同网络服务商的接入速度问题。 前台门户网站架构 2.1.2网站的软件架构 TomatApache WWE EB B服服务务器器 数数据据存存储储 文文件件存存储储 Tomat HDFS . WEB 容容器器 基基于于struts 的的MVC框框架架 ModelView 持持久久层层 页页面面缓缓存存(Memcached) 通通讯讯层层 SMS MMS WAP PUSH 短短信信群群 发发器器 彩彩信信群群 发发器器 数数据据库库 消消 息息 中中 心心 消消息息 中中心心 ORM ibatis DB连连接接池池 C3p0 HTML静静 态态化化模模块块 后后台台支支 撑撑模模块块 业业务务支支撑撑 模模块块 请请求求 数数据据 生生产产数数据据库库 (RAC) 生生产产数数据据库库 (RAC) 统统计计支支撑撑 模模块块 I I/ /O O Control 业业务务层层数数据据层层 J JD DB BC C 查查询询数数据据库库 前台门户网站架构 2.1.3网络拓扑结构 Internet 主主防防火火墙墙 主主交交换换机机 VRRP 备备防防火火墙墙 服服务务器器2 服服务务器器1 服服务务器器2 服服务务器器n 服服务务器器2 服服务务器器2服服务务器器1服服务务器器1 代代理理服服务务器器集集群群 (Nginx) 网网站站服服务务器器集集群群 生生产产DB服服务务器器集集群群查查询询DB服服务务器器组组 光光纤纤交交换换机机 光光纤纤交交换换机机 磁磁盘盘阵阵列列柜柜磁磁盘盘阵阵列列柜柜 备备交交换换机机 负负载载均均衡衡器器1 负负载载均均衡衡器器2 . 服服务务器器n 服服务务器器2 服服务务器器n服服务务器器1 应应用用服服务务器器集集群群 管管理理终终端端 服服务务器器1服服务务器器n . 服服务务器器2 服服务务器器1 服服务务器器n 图图片片服服务务器器集集群群 备注:备注: 1)采用双防火墙双交换机做网络冗余,保障平台服务 采用双防火墙通知接通2线路互联网接入,设备之间采用VRRP协议,在任何一个防火墙、 互联网发生故障后均可自动将流量切换到另一端,保证网站的正运行,设备或网络恢复后, 自动恢复。 采用双千兆交换机分别接在2台防火墙上,当某台设备或者网络链路发生故障后,好设 备自动接管已坏设备的工作,不影响网站的整体运行,根据业务及真实服务器的数量,交换 机可以随时增加。 2)采用硬件设备负载均衡器,实现网络流量的负载均衡 使用硬件设备负载均衡器,将网络流量均衡的分担到WEB服务器集群各节点服务器,保 障平台服务器资源均衡的使用。 3)采用代理服务器,实现软件级的网络负载均衡。 4)数据库服务器分离成生产数据库集群和查询数据库集群,实现生产读写与后台查询统计 进行分离,同时生产数据库采用rac技术进行 前台门户网站架构 2.2负载均衡 2.2.1通过硬件实现负载均衡 在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂 贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服 务器使用了三四台Alteon就搞定了 2.2.2通过软件四层交换实现负载均衡 软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提 供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟 VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。 一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这 种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性。 2.2.3通过反向代理服务器实现负载均衡 反向代理服务器又称为 WEB 加速服务器,它位于 WEB 服务器的前端,充当WEB服务器的内容 缓存器,反向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用 户只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请 求 WEB 服务时,DNS 将请求的域名解析为反向代理服务器的 IP 地址,这样 URL 请求将被发送 到反向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台 WEB 服务器交互。利 用反向代理服务器减轻了后台 WEB 服务器的负载,提高了访问速度,同时避免了因用户直接与 WEB 服务器通信带来的安全隐患。 目前有许多反向代理软件,比较有名的有 Nginx 和 Squid 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,是一个高性能的 前台门户网站架构 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Squid是由美国政府大力资助的一项研究计划,其目的为解决网络带宽不足的问题,支持 HTTP,HTTPS,FTP 等多种协议,是现在 Unix 系统上使用、最多功能也最完整的一套软体。 1. Squid Squid 是一个开源的软件,利用它的反向代理技术可以提高网站系统的访问速度,下面将重点 介绍 Squid 反向代理的实现原理和在提高网站性能方面的应用。 Squid反向代理服务器位于本地 WEB 服务器和 Internet 之间 , 组织架构如下图: 客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址, 这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请 求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 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万并发连接,在实际生产环境中跑到23万并发连接数。 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缓存实现动静分离的架构图如下所示: 前台门户网站架构 2.2.4Apache +tomcat集群实现负载均衡。 使用 apache和多个tomcat 配置一个可以应用的web网站,用Apache进行分流,把请求按照权 重以及当时负荷分tomcat1,tomcat2.去处理,要达到以下要求: 前台门户网站架构 1) Apache 做为HttpServer ,通过mod_jk连接器连接多个 tomcat 应用实例,并进行负载均 衡。 2) 同时还要配置session复制,也就是说其中任何一个tomcat的添加的session,是要同步复 制到其它tomcat, 集群内的tomcat都有相同的session,并为系统(包括 Apache 和 tomcat)设定 Session 超时时间。 2.3缓存 2.3.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 /mem/(0-9A-Za-z_*)$ ) set $memcached_key $1; memcached_pass :11211; expires 70; 这个配置会将 指明到 memcached 的 abc 这个 key 去取数据。 前台门户网站架构 Nginx 目前没有写入 memcached 的任何机制,所以要往 memcached 里写入数据得用后台的 动态语言完成,可以利用 404 定向到后端去写入数据。 Nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生 产应用中它常常用作和squid的搭档,squid对于带?的链接往往无法阻挡,而nginx能将其访问拦 住,例如: 成两次穿透;而nginx只会保存一次,无论链接变成 nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它 在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完 全全就是一个文件系统结构。 这两种传统缓存都可以在linux下将文件保存到/dev/shm里,一般我也是这么做的,这样可以 利用系统内存来做缓存,利用内存的话,清理过期内容速度就会快得多。使用/dev/shm/时除了要 把tmp目录也指向到/dev/shm这个分区外,如果有大量小文件和目录,还要修改一下这个内存分区 的inode数量和最大容量: mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm 上面的命令在一台有3G内存的机器上使用,因为/dev/shm默认最大内存是系统内存的一半就 是1500M,这条命令将其调大成2500M,同时shm系统inode数量默认情况下可能是不够用的,但有 趣的是它可以随意调节,这里调节为480000保守了点,但也基本够用了。 2.3.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的形式单个对象缓存。 3. 内存数据缓存服务 对于一些常用的动态数据通过开发程序服务缓存在内存中,提供给其他子系统调用,如下面 的数据就可以通过这样方式进行缓存。 1)用户基本信息及状态的信息缓冲 2)列表缓存,就像论坛里帖子的列表 3)记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。 4)复杂一点的group,sum,count查询,比如积分的分类排名 前台门户网站架构 2.4页面静态化 页面静态化就是采用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽 可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。 同时采用第三方开源的CMS系统来实现网站内容的管理。对于大量内容并且频繁更新的网 站,我们无法全部手动去挨个实现页面静态化,所以我们需要引入常见的信息发布系统(CMS), 信息发布系统(CMS)可以实现最简单的信息录入自动生成静态页面,对于一个大型网站来说, 拥有一套高效、可管理的CMS是必不可少的。 2.5数据库集群及表库散列 2.5.1数据库集群 对生产数据库采用RAC实现数据库的集群。 2.5.2数据库及表的散列 把生产数据库和查询数据库进行分离,针对系统业务数据的特点,把大的表进行拆分,对 于访问较多的表采用分区表。 开发使用上的问题? 2.6文件存储 2.6.1文件共享 HDFS是Apache Hadoop项目中的一个分布式文件系统实现,基于Google于2003年10月发 表的Google File System(GFS)论文。 特性 1) 硬件要求低 2) 高容错性 3) 易可扩展 4) 配置简单 5) 超大文件 HDFS采用master/slave架构。 一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。 应用在大批量的数据上,需要后绪分析。 前台门户网站架构 2.6.2文件的多服务器自动同步 使用Linux 2.6内核的inotify监控Linux文件系统事件。 利用开源的lsync监听某一目录,如果目录内文件发生增、删、改,利用Rsync协议自动同 步到多台服务器。 2.6.3图片服务器分离 特别是如果程序与图片都放在同一个 APAHCE 的服务器下,每一个图片的请求都有可能 导致一个 HTTPD 进程的调用。 使用独立的图片服务器不但可以避免以上这个情况,更可以对不同的使用性质的图片设置 不同的过期时间,以便同一个用户在不同页面访问相同图片时不会再次从服务器(基于是缓存 服务器)取数据,不但快速,而且还省了带宽。还有就是,对于缓存的时间上,亦可以做独立 的调节。 2.7镜像 镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异。 我们可以在不同的网络接入商部署web服务器来针对不同的网络接入商访问,通过linux上的 rsync工具自动同步到不同网络接入商的web服务器上。 前台门户网站架构 2.8WEB应用架构设计思路 应用开发实现MVC三层架构进行web应用开发,采用ibatis作为持久层框架,c3p0作为数据库 连接池。 iBATIS 是一个可以设计和实现更好的 Java 应用程序持久化层的框架。iBATIS 把对象和存储过 程或者使用 XML 描述符的 SQL 语句进行了关联。简单是 iBATIS 最大的优势 ibatis-使用ibatis的十个理由 1. 至少能操作 10 种以上的数据库 2. 可配置的 caching(包括从属) 3. 支持 DataSource、local transaction managemen 和 global transaction 4. 简单的 XML 配置文档 5. 支持 Map, Collection, List 和简单类型包装(如 Integer, String) 6. 支持 JavaBeans 类(get/set 方法) 7. 支持复杂的对象映射(如 populating lists, complex object models) 8. 对象模型从不完美(不需要修改) 9. 数据模型从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西式烹调师初级考试模拟题及解析
- 二零二五年度电力设备安装工程安全教育培训合同
- 2025年度航空航天设备制造厂主体工程承包合同
- 二零二五年度场管理办公室智能安防系统设计与安装合同
- 二零二五年度餐饮服务员劳动合同创新服务模式
- 二零二五年度智能仓储物流系统区域代理商加盟代理合同
- 二零二五年度土地承包经营权纠纷调解执行合同
- 二零二五年度虚拟现实技术应用开发合同
- 七年前数学试卷
- 去年余姚中考数学试卷
- 硅橡胶取模护理操作流程
- 电力营销稽查培训课件
- 老年人视力与听力能力评估方法
- 港口码头自然灾害应急措施
- 院前急救知识考核试题及答案
- 造价咨询合同管理办法
- 孤立性血管性眩晕
- 2026《衡中学案》高考一轮总复习 生物学 全书
- 问题性皮肤培训课件
- 2025年工业区污水处理厂可行性研究报告
- 检车站员工管理制度
评论
0/150
提交评论