WEB-BASED系统
WEB-BASED系统概述
- 可靠性,可用性
- 集群,硬件集群,软件集群
- 负载均衡器
- 代理服务器集群(nginx反向代理)
- web服务器集群
系统分层架构实例
- 负载均衡
- 硬件四层
- 软件四层
- ??
- web服务器架构
- WEB服务
- MVC应用架构
- 应用级缓存
- 数据存储
- NFS/HDFS
- 生产数据库/查询数据库
服务器端系统优化
1. web应用和数据库分离
2. 增加前端页面缓存
3. 页面片段缓存(在webserver处)
前端页面缓存->webserver->{页面片段缓存,数据库}
4. 数据缓存
前端页面缓存->webserver->{页面片段缓存,数据缓存,数据库}
5. webserver集群
6. 分库
数据缓存->分布式缓存
前端页面缓存->webservers->{页面片段缓存,数据缓存s,DAL->数据库}
DAL(Data Access Level)
8. 数据读写分离,使用廉价存储方案
前端页面缓存->webservers->{页面片段缓存,数据缓存s,Bigdata(宽表),分布式文件系统,DAL->数据库}
集群的优点
- 高可伸缩性
- 可以随时添加更多的服务器
- 高可用性
- 防止系统发生故障或自动恢复,不需要操作者干预
- 高可管理型
- 远程管理
注意成本,是系统故障成本高还是集群系统成本高
集群类型
-
高可用性集群:High Availablity Cluster/容错集群(Fail-Over Cluster)
- 主从:闲时从服务器向主服务器发送心跳包,忙时接管主服务器工作
- 活动第二服务器:主服务器故障,第二服务器接管,否则,干别的事
- 全部复制:数据不断地拷贝到第二服务器上
- 0共享:物理连接同一个磁盘,故障时,另一台服务器获得对方磁盘权限
- 共享一切:多个服务器在同时共享同一磁盘,要求一个复杂的锁定管理软件,以管理读写
-
负载均衡集群 Load balance cluster
- 给各个集群分发任务,提高性能
- nginx,自动负载均衡
- 高性能计算集群 High Performance Computing Cluster
- 响应海量数据
代理服务器,反向代理服务器
代理服务器
- 客户端->中间服务器->原始服务器
反向代理
- 客户端发送普通请求,反向代理决定发往何处
- 典型应用1. 负载均衡 2. 缓存 3. 反向代理是外部服务器通过防火墙提升安全性
Nginx
master->create socket->{worker *}
windows下tomcat的负载均衡配置
基于DNS的负载均衡
- 一个域名绑定多个IP
- DNS服务器将http请求平均分配到web服务器上(对不同的用户,获得了不同域名)
- 但web服务器出现故障后,需要较长时间(dns刷新时间约24hr)才能获得web服务
Apache+Tomcat实现负载均衡
用apache进行分流,把请求按照权重以及当时负荷分流
Mysql集群
双数据库热机备份
服务器端优化技术
缓存
b树,b+树
- 操作系统磁盘缓存
- 减少磁盘机械操作
- 需要保证物理内存
- 数据库缓存
- 减少文件io
- Mysql Query cache工具
- 应用程序缓存
- 减少数据库查询
- web服务器缓存
- 减少应用服务器请求
- web信息响应不应超过5s
- 浏览器缓存
- 减少对网站访问
对象缓存
- 由OR mapping框架例如hibernate提供,透明访问,细粒度缓存数据库查询结果
前端优化技术
修改web服务器配置文件,修改js,css,合并图片,脚本等
应该更加关注前端优化
- 减少http请求次数
- 优化图片{css sprites,内联图片,图片地图}
- 合并脚本和样式表
- 关注expires头的设置,缓存可以使一些客户的请求转为请求缓存
- 移除ETag
- 加载后下载
- 利用并行下载
- 减少元素大小
- 用gzip压缩脚本样式表html文档图片等
前端优化工具
- http请求图表 IBM Page Detailer
- ...