剛看完了《大型網站技術架構》第一章,關於大型網站架構的演化,以下是我從書中學到的技術:

一、大型網站軟體系統的特點

1、高並發、大流量

2、高可用。7*24小時不斷的服務

3、海量數據

4、用戶分佈廣發、網路情況複雜。用戶分佈廣,各地的網路情況千差萬別,再過國內各個運營商之間的網路互通問題

5、安全環境惡劣。

6、需求快速變更,發布頻繁

7、漸進式發展。也就是 隨著網路發展逐漸變化的。

二、大型網站演化發展過程

1、初始階段網站

初始階段的網站訪問人數比較少,所有的在一臺伺服器。

2、應用伺服器和數據伺服器分離

隨著網路業務的發展,一臺伺服器逐漸不能滿足需求,越來越多的用戶訪問導致性能逐漸越來越差,越來越多的資料庫存儲空間不足。為瞭解決這個問題,於是就將應用程序合數據分離。

應用分離之後整個網站使用三臺伺服器。

3、使用緩存改善網路性能

網站的訪問特點:二八定律--80%的業務訪問都在集中在20%的數據上。

隨著一個網站的逐漸發展,大部分的業務訪問在一部分數據上。為了減少數據的壓力,部分數據存在內存中,減少資料庫的訪問壓力,來提高資料庫的訪問速度。

網站使用的緩存可以分為兩種:

  • 緩存在應用伺服器上的本地緩存
  • 緩存在專門伺服器上(分散式伺服器)的遠程緩存

本地的訪問速度快一點,但是緩存的數量有限,會出現和應用程序搶內存的情況存在。

而遠程的分散式緩存可以使用集羣的訪問,部署大量內存的伺服器作為專門的伺服器,可以理論行做到不受內存限制的緩存服務。

4、使用應用伺服器集羣改善網站並發處理能力

使用集羣是網站解決高並發、海量數據問題的常用手段。當一臺伺服器的處理能力、存儲空間不足時不要去企圖更換更大的伺服器。

最恰當的做法是:增加一臺伺服器分擔原有的伺服器訪問已經存儲壓力。

對於網路架構而言,只要通過增加一臺伺服器的方式改善負載壓力,就可以以同樣的方式持續增加伺服器不斷改善系統性能,從而實現系統的可伸縮性。

5、資料庫讀寫分離

當網站使用緩存後,大多數的數據操作訪問都可以不同通過資料庫能完成,但是一部分數據的讀寫操作(緩存訪問不能命中、緩存過期)和全部的寫操作需要訪問資料庫,在網站的用戶達到一定規模後,資料庫的負載歷則會成為網站的平靜。

目前大部分的主流資料庫都提供主從熱備功能,通過配置資料庫的主從關係,可以通過一臺資料庫伺服器的數據同步到更新到另一臺伺服器上。通過這一個功能實現資料庫的讀寫分離,從而改善數據的負載壓力。

6、 使用反向代理和CDN加速網路響應

隨著網路業務不斷的發展,用戶規模越來越大,而中國的複雜的網路環境,不同地區的用戶訪問網站的時候,速度差別也就很大。網路訪問延遲和用戶的流失率正相關,網路訪問越慢,用戶也就越容易流失。

為了提高更好的留住用戶,提高網路的訪問速度,主要的手段有CDN和反向代理。

CDN與反向代理的區別:

  1. CDN步數在網路提供上的機房,使用戶在請求網路服務是,可以從距離自己最近的網路提供商獲取數據。
  2. 反向代理則部署在網站的中心機房,當用戶請求到達中心機房後,首相訪問的是反向代理伺服器,如果反向代理伺服器中緩存著用戶請求的資源,就將其返給用戶。

7、使用分散式文件系統和分散式數據系統

任何強大的單一伺服器都滿足不了大型的網站持續增長的業務需求。資料庫通過讀寫分離後,從一臺伺服器拆分成兩臺伺服器,但是隨著網路業務的發展依然滿足不了需求,這時候需要使用分散式資料庫。文件系統也是一樣的,需要使用分散式文件系統。

分散式資料庫是網站資料庫拆分的最後的手段,最後在單表資料庫規模龐大的時候才能使用。網站更常用的時候手段是業務分庫,將不同的業務資料庫部署在不同的物理伺服器上。

8、使用NoSQL和搜索引擎

隨著網站業務越來越複雜,對資料庫存儲和檢索的需求也越來越複雜,網站需要採用一些非關係數據激素如NoSQL和非關係資料庫技術。

應用伺服器通過一個統一的數據訪問模塊訪問各種數據,減輕應用程序管理諸多數據源的麻煩。

9、業務拆分

大型網站為了日益複雜的業務場景,通過分而治之的手段將整個網站業務分成不同的產品線。

具體技術上,根據不同的產品線拆分成不同的應用,每個應用獨立部署維護。應用之間可以通過一個超鏈接建立關係,也可以通過消息隊列進行數據分發,當然最多的還是通過訪問同一個數據存儲系統構成一個完整的系統。

10、分散式服務

隨著網站的逐漸發展,分散式服務部署的越多,也越來困難。對數據的鏈接也會越來越多,導致資料庫鏈接資源不足,拒絕鏈接。

既然每個應用系統都需要執行越來越多的相同的業務操作,比如用戶管理、商品管理等,那麼可以將這些公用的業務提取出來,獨立部署,通過分散式伺服器調用公共業務伺服器完成具體業務操作。


推薦閱讀:
查看原文 >>
相關文章