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. 健康狀態檢查