Home | 简体中文 | 繁体中文 | 杂文 | Search | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 作品与服务 | Email

第 3 章 Systems architecture(系统架构)

Systems architecture

目录

3.1. 集群(Cluster)
3.1.1. 负载均衡
3.1.1.1. DNS负载均衡
3.1.1.2. 软件四层交换负载均衡
3.1.1.3. 应用层负载均衡
3.1.2. 高可用性集群
3.1.3. 负载均衡设备
3.1.4. 会话保持
3.1.5. 健康状态检查
3.2. 缓存技术
3.2.1. 浏览器缓存
3.2.1.1. Expires
3.2.1.2. If-Modified-Since / Last-Modified
3.2.1.3. ETag / If-None-Match
3.2.2. CDN/逆向代理缓存
3.2.3. 负载均衡设备
3.2.4. WEB服务器缓存
3.2.5. 应用程序缓存
3.2.6. 数据库缓存
3.3. 静态化
3.3.1. 生成方式
3.3.2. 抓取方式
3.3.3. 伪静态化
3.3.4. 混合方式
3.3.5. 静态化中的动态内容
3.4. 多媒体数据分离
3.4.1. 图片服务器分离
3.4.2. 目录层次规划
3.4.3. 多域名访问
3.5. 压缩数据传输
3.6. 时间同步
3.7. 邮件系统
3.7.1. Mailing List
3.8. 日志集中管理
3.8.1. 系统日志
3.8.2. 应用程序日志
3.9. SSL
3.10. Storage 存储
3.10.1. 存储种类
3.10.1.1. Direct Attached Storage
3.10.1.2. Network-attached storage
3.10.1.3. Storage area network
3.10.2. RAID
3.10.2.1. 缓存服务器
3.10.2.2. Web 服务器
3.10.2.3. 数据库
3.10.2.4. 数据备份
3.10.3. File System 文件系统
3.10.3.1. Distributed File System(DFS)
3.10.4. 数据访问协议
3.10.5. 数据管理
3.10.5.1. Share 共享
3.10.5.2. Mirror 远程镜像同步
3.10.5.3. 压缩与重复数据消除
3.10.5.4. Backup 备份与恢复
3.10.5.5. 故障报告
	
                                       .---> media [mp3, wma, wmv, rmvb, asf, divx]-\
                                      /                                       +------------+
                                     .-----> photo [gif, jpg, png, swf] ----> | Raid Array | <--.
    /------------------- <---------\/                                         +------------+     \
user -> dns -> load balancing -> squid -> [cache] <----[html]----\                  /            |
                 \ \ \______<______/\                      +-------------+         /             |
                  \ \                \-----> web app ----> | html        |--------^              |
                   \ \____________________________/\       | php,jsp,cgi |                       |
                    \                               \      +-------------+                       |
                     \                               `-----> memcached [node1, node2, node(n)]   |
                      \__________________________________________/\                              |
                                                                   `------> Database cluster     |
    +--------------------------------------+                                      \              |
    | Author: neo chen <openunix#163.com>  |                                       `-------------+
    | Nickname: netkiller                  |
    | Homepage: http://netkiller.github.io |
    +--------------------------------------+
	
	

3.1. 集群(Cluster)

集群有很多实现方法,分为硬件和软件,集群可以在不同网络层面上实现

  1. 实现IP轮循(Bind DNS)

  2. 硬件四层交换(硬件负载均衡设备 F5 BIG IP)

  3. 软件四层交换(linux virtual server)

  4. 应用层上实现(tomcat)

越是低层性能越好,越是上层功能更强

集群的分类

  1. 高可用性集群

  2. 负载均衡集群

  3. 超级计算集群

网站一般用到两种集群分别是高可用性集群和负载均衡集群

3.1.1. 负载均衡

3.1.1.1. DNS负载均衡

这是早期出现的负载均衡技术,直到现在,很多网站仍然使用DNS负载均衡。

你可通过ping命令观看它是如何工作的,例如你可反复ping个网域名。

			
C:\>ping www.163.com

Pinging www.cache.split.netease.com [220.181.28.52] with 32 bytes of data:

Reply from 220.181.28.52: bytes=32 time=226ms TTL=53
Reply from 220.181.28.52: bytes=32 time=225ms TTL=53
Reply from 220.181.28.52: bytes=32 time=226ms TTL=53
Reply from 220.181.28.52: bytes=32 time=226ms TTL=53

Ping statistics for 220.181.28.52:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 225ms, Maximum = 226ms, Average = 225ms

C:\>ping www.163.com

Pinging www.cache.split.netease.com [220.181.28.53] with 32 bytes of data:

Reply from 220.181.28.53: bytes=32 time=52ms TTL=52
Reply from 220.181.28.53: bytes=32 time=53ms TTL=52
Reply from 220.181.28.53: bytes=32 time=52ms TTL=52
Reply from 220.181.28.53: bytes=32 time=52ms TTL=52

Ping statistics for 220.181.28.53:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 53ms, Average = 52ms

C:\>ping www.163.com

Pinging www.cache.split.netease.com [220.181.28.50] with 32 bytes of data:

Reply from 220.181.28.50: bytes=32 time=51ms TTL=53
Reply from 220.181.28.50: bytes=32 time=52ms TTL=53
Reply from 220.181.28.50: bytes=32 time=52ms TTL=53
Reply from 220.181.28.50: bytes=32 time=51ms TTL=53

Ping statistics for 220.181.28.50:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 51ms, Maximum = 52ms, Average = 51ms

C:\>
			
			

DNS负载均衡主要优点

  1. 技术简单,容易实现,灵活,方便,成本低

  2. Web服务器可以位于互联网的任意位置上,无地理限制。

  3. DNS的主从结构非常稳定

  4. 可以有效的分散DDOS攻击。

  5. 你甚至可以在DNS服务商那里实现,自己不需要添加设备。而且没有带宽开销。

DNS负载均衡主要缺点

  1. DNS负载均衡采用的是简单的轮循负载算法,不能够按照服务器节点的处理能力分配负载。

  2. 不支持故障转移(failover)和自动恢复failback ,如果某台服务器拓机,DNS仍会将用户解析到这台故障服务器上,导致不能响应客户端。

  3. 如果添加节点或撤出节点,不能即时更新到省市级DNS,可导致部分地区不能访问。

  4. 占用大量静态IP。

3.1.1.2. 软件四层交换负载均衡

软件四层交换负载均衡为我们解决了几个问题

  1. 能够按照服务器节点的处理能力分配负载。

  2. 支持故障转移(failover)和自动恢复failback ,如果某节点拓机,调度器自动将它剔除,不响应客户端访问,当节点故障排除调度器立即恢复节点。

  3. 可以随时添加节点或撤出节点,即时生效,方便网站扩容。

软件四层交换负载均衡优点

  1. 仅仅需要一个静态IP。

  2. 节点位于私有网络上与WAN隔离,用户面对的只是调度器。

  3. 可以随时添加节点或撤出节点。

  4. 通过端口可以组建多个集群。

3.1.1.3. 应用层负载均衡

Tomcat balancer

mod_proxy_balancer.so ,tomcat mod_jk.so

MySQL proxy / MySQL-LB

3.1.2. 高可用性集群

俗称:双机热备份

关键词:心跳线

两部服务器,或多部服务器,形成一个集群,当主服务器崩溃是,立即切换到其它节点上。

两部服务器要做到,内容实时同步,保持数据一直。

一般用 heartbeat + DRBD 实现。heartbeat负责切换服务器,DRBD用于同步数据。

3.1.3. 负载均衡设备

负载均衡成熟产品

  1. F5 Big IP

  2. Array

这些设备可提供3,4,7层负载均衡HA,硬件已经压缩,HTTP头改写,URL改写...

其中3层交换部分多采用硬件实现。

更多关于F5 与 Array 资料点击进入

3.1.4. 会话保持

3.1.5. 健康状态检查

comments powered by Disqus