WEB-BASED系统概述

WEB-BASED系统

WEB-BASED系统概述

  1. 可靠性,可用性
  2. 集群,硬件集群,软件集群
    1. 负载均衡器
    2. 代理服务器集群(nginx反向代理)
    3. web服务器集群

系统分层架构实例

  1. 负载均衡
    1. 硬件四层
    2. 软件四层
    3. ??
  2. web服务器架构
    1. WEB服务
    2. MVC应用架构
    3. 应用级缓存
  3. 数据存储
    1. NFS/HDFS
    2. 生产数据库/查询数据库

服务器端系统优化

1. web应用和数据库分离

2. 增加前端页面缓存

3. 页面片段缓存(在webserver处)

前端页面缓存->webserver->{页面片段缓存,数据库}

4. 数据缓存

前端页面缓存->webserver->{页面片段缓存,数据缓存,数据库}

5. webserver集群

6. 分库

数据缓存->分布式缓存

前端页面缓存->webservers->{页面片段缓存,数据缓存s,DAL->数据库}

DAL(Data Access Level)

8. 数据读写分离,使用廉价存储方案

前端页面缓存->webservers->{页面片段缓存,数据缓存s,Bigdata(宽表),分布式文件系统,DAL->数据库}

集群的优点

  1. 高可伸缩性
    1. 可以随时添加更多的服务器
  2. 高可用性
    1. 防止系统发生故障或自动恢复,不需要操作者干预
  3. 高可管理型
    1. 远程管理

注意成本,是系统故障成本高还是集群系统成本高

集群类型

  1. 高可用性集群:High Availablity Cluster/容错集群(Fail-Over Cluster)

    • 主从:闲时从服务器向主服务器发送心跳包,忙时接管主服务器工作
    • 活动第二服务器:主服务器故障,第二服务器接管,否则,干别的事
      • 全部复制:数据不断地拷贝到第二服务器上
      • 0共享:物理连接同一个磁盘,故障时,另一台服务器获得对方磁盘权限
      • 共享一切:多个服务器在同时共享同一磁盘,要求一个复杂的锁定管理软件,以管理读写
  2. 负载均衡集群 Load balance cluster

    1. 给各个集群分发任务,提高性能
    2. nginx,自动负载均衡
  3. 高性能计算集群 High Performance Computing Cluster
    1. 响应海量数据

代理服务器,反向代理服务器

代理服务器

  1. 客户端->中间服务器->原始服务器

反向代理

  1. 客户端发送普通请求,反向代理决定发往何处
  2. 典型应用1. 负载均衡 2. 缓存 3. 反向代理是外部服务器通过防火墙提升安全性

Nginx

master->create socket->{worker *}

windows下tomcat的负载均衡配置

基于DNS的负载均衡

  1. 一个域名绑定多个IP
  2. DNS服务器将http请求平均分配到web服务器上(对不同的用户,获得了不同域名)
  3. 但web服务器出现故障后,需要较长时间(dns刷新时间约24hr)才能获得web服务

Apache+Tomcat实现负载均衡

用apache进行分流,把请求按照权重以及当时负荷分流

Mysql集群

双数据库热机备份

服务器端优化技术

缓存

b树,b+树

  1. 操作系统磁盘缓存
    1. 减少磁盘机械操作
    2. 需要保证物理内存
  2. 数据库缓存
    1. 减少文件io
    2. Mysql Query cache工具
  3. 应用程序缓存
    1. 减少数据库查询
  4. web服务器缓存
    1. 减少应用服务器请求
    2. web信息响应不应超过5s
  5. 浏览器缓存
    1. 减少对网站访问

对象缓存

  1. 由OR mapping框架例如hibernate提供,透明访问,细粒度缓存数据库查询结果

前端优化技术

修改web服务器配置文件,修改js,css,合并图片,脚本等

应该更加关注前端优化

  1. 减少http请求次数
    1. 优化图片{css sprites,内联图片,图片地图}
    2. 合并脚本和样式表
    3. 关注expires头的设置,缓存可以使一些客户的请求转为请求缓存
    4. 移除ETag
    5. 加载后下载
  2. 利用并行下载
  3. 减少元素大小
    1. 用gzip压缩脚本样式表html文档图片等

前端优化工具

  1. http请求图表 IBM Page Detailer
  2. ...