大型网站架构方案
Web层
主体架构基于 Struts 1.X/2.X
抽象出核心库封装 控制器和中间层 的操作
Cache层
配置 Memcache 组成集群缓存
对 Memcache 客户端进行封装
Memcached 节点组成池,调用示意:opList (BizName, 策略 ...)
中间层
以服务的方式提供对存储层的高性能调用以及分布式计算
ICE
Hadoop
存储
小规模:一个 data table 维护存储服务器阵列,内容 -> mount ……
大规模:使用 LongStore (龙存) 解决方案,由龙存管理存储阵列。
部署
划分子域名,每个子域名一个Web应用包,互不干扰
静态资源(css, js, image ...)使用专门的静态服务器
负载均衡
小规模:DNS轮询。
大规模:F5, 2*X 台F5服务器,F5是L4/L7层交换机,每台至少可处理200万连接(与服务器内存有关)。
Ngnix是L7层交换,LVS负载均衡也是一种方案
Web中间件选择
Tomcat - 最高400并发
Apache - 最高2000并发
Ngnix - 优于Apache
采用方案:Ngnix + Resin ,理由:
Resin提供更为快速的servlet引擎 - 选择Resin。
gzip问题 - Resin在单独处理gzip时存在内存溢出的隐患,因此要加一层 Ngnix。
Ngnix 能减少单独使用Resin时的内存占用 - Resin建立1000个连接使用1000个线程;加Ngnix后,透过其“异步连接”、“建立长连接”机制使Resin内存压力大大减小。
Ngnix 针对Linux系统有性能优化措施 - 0 Copy, send file ...
因此采用:1 Ngnix + 1 Resin,一对一。
静态服务器采用:Squid + Apache, why? because Squid has cache ability ...
同时,对于影响页面展现的静态资源,例如:css, js 等可以放在具有优质带宽的IDC(IDC=互联网数据中心,优质/高速的带宽也比较贵,正所谓一份价钱一分货);其他的静态资源,如图片等可以放在价格相对低廉的IDC中,以域名区分两种静态资源,节省每一分钱。
网络拓扑图
/ Ngnix - 1:1 - Resin
F5 --
/ Squid - 1:n - Apache
监控统计平台
业务统计 - 用户访问统计
软件性能 - 应用系统监控,例如:请求响应时间……
硬件/网络性能 - Ganglia监控
其它要点
IE浏览器对同一域名(包括子域名)只能建立2个连接,连接多了只能排队……
双F5架构,两台职能划分不同,镜像,心跳接管……
Raid存储阵列……
Linux操作系统……