大型網站技術架構解決方案歸納
一.大型網站特點
高併發,大流量:需要面對高併發使用者,大流量訪問。比如淘寶雙十一活動,同一時刻產生大量交易,同時線上為億級別
高可用:系統不間斷提供服務。
海量資料:儲存海量資料。
使用者分佈廣泛,網路情況複雜:許多大型網際網路為請求使用者提供服務。使用者分佈範圍廣,各地網路情況千差萬別。
安全環境惡劣:大型網站幾乎每天都會被黑客攻擊。
需求快速變更,釋出頻繁:和傳統軟體的釋出頻率不同,網際網路產品為快速適應市場,滿足使用者需求,需要經常更新發布版本
漸進式發展:大型網站不是一開始就是大型網站,都是從小型網站演變發展而來的。
二.大型網站架構解決方案
2.1 應用服務與資料服務分離
應用和資料分離後,不同特性的伺服器承擔不同的服務角色,網站的併發處理能力和資料儲存空間得到了很大改善。但是隨著使用者逐漸增多,網站又一次面臨挑戰;資料庫壓力太大導致訪問延遲,進而影響整個網站效能,使用者體驗收到影響。這時需要對網站機構進一步優化。
2.2 使用快取改善網站效能
淘寶買家瀏覽的商品集中在少部分成交數少,評價良好的商品上。既然大部分的業務訪問幾種在一小部分的資料上,那麼如果把這一小部分資料快取在記憶體中,就可以減少資料庫訪問壓力,提高網站訪問速度,改善效能。
使用快取後,資料壓力得到有效緩解,但是單一應用伺服器能夠處理請求的連線有限,在網站訪問高峰期,應用伺服器成為整個網站的瓶頸。
2.3 使用應用伺服器叢集改善網站的併發處理能力
當一臺伺服器的處理能力,儲存空間不足時,不要換更強大的伺服器,對大型網站而言,不論多麼強大的伺服器都不能滿足網站持續增長的業務需求,對應用服務而言,應增加多臺應用伺服器實現叢集即多臺伺服器部署相同的服務改善負載壓力。
2.4 資料庫讀寫分離改善資料庫負載壓力
當網站到達一定規模後,資料庫會因負載壓力過高而成為網站的瓶頸。通過配置兩臺資料庫主從關係,可以將一臺資料庫伺服器的資料更新同步到另一臺伺服器上。網站利用資料庫的主從熱備功能,實現資料庫讀寫分離,從而改善資料庫負載壓力。
應用伺服器在寫資料的時候,訪問主資料庫,主資料庫通過主從複製機制將資料更新同步到從資料庫,這樣當應用伺服器讀資料的時候,就可以通過從資料庫獲得資料,為了便於應用程式訪問讀寫分離後的資料庫,通常在應用伺服器使用專門的資料訪問模組,使資料庫讀寫分離對應用透明。
2.5 使用反向代理和CDN加速網站響應
提高網站的訪問速度,主要手段有CDN和反向代理。
CND和反向代理的基本原理都是快取。CDN是部署在網路提供商的機房,使使用者在請求網站服務時,可以從距離自己最近的網路提供商機房獲取資料。反向代理是部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的伺服器是反向代理伺服器,如果反向代理伺服器中快取著使用者請求的資源,就將其直接返回給使用者。
2.6 使用分散式檔案系統和分散式資料庫系統
任何強大的伺服器都滿足不了日益增長的業務需求。分散式資料庫是網站資料庫拆分的最後手段,只有在單表資料規模非常龐大時才使用。檔案系統也是使用分散式檔案系統,比如FastDFS不到萬不得已,網站最常用的資料庫拆分手段是業務分庫,將不同業務資料庫部署在不同物理伺服器上。
2.7 使用nosql和搜尋引擎
隨著網站業務越來越複雜,對資料儲存和檢索的需求也越來越複雜,網站需要採用一些非關係型資料庫技術如nosql和非資料庫查詢技術如搜尋引擎。
2.8 業務拆分
將一個網站拆分成許多不同的應用,每個應用獨立部署維護。應用之間可以通過一個超連結建立關係(在首頁的導航連結每個都指向不同的應用地址),也可以通過訊息佇列進行資料分發,當然最多的還是通過訪問同一個資料庫儲存系統來構成一個關聯的完整系統。
2.9. 分散式服務
隨著業務拆分越來越小,應用系統的整體複雜度成指數級增加,部署維護越來越困難。既然每一個應用系統都需要執行許多相同的業務操作,比如使用者管理,商品管理等,那麼可以將這些共用的業務提取出來,獨立部署。又這些可服用的業務連線資料庫,提供共用業務服務,而應用系統只需要管理使用者介面。
2.10 重視網站安全問題
沒有絕對安全的網站,大型網站是吸引黑客進行攻擊的目標,因此要儘量提高網站的安全性。網站攻擊與防護技術作為一對矛盾共同體,彼此不斷此消彼長,也許網站經過一番大的重構和優化,在某段時間內不需要再處理高可用高效能的問題,但是修補漏洞,改善安全是每天需要面對的課題。
三. 秒殺系統架構設計分析
秒殺是電子商務網站常見的一種營銷手段:將限量商品以極低的價格,在特定時間點開始出售。以為價格誘人,許多人趨之若鶩,在秒殺活動開始前湧入網站,等到秒殺活動開始瞬間,點選購買按鈕。
秒殺雖然對網站推廣有好處,但是對網站而言是一種極大的挑戰。網站在非秒殺時間段是正常執行的,而秒殺活動帶來的併發訪問量卻是平時的幾百倍甚至幾千倍。絕大多數伺服器在平時是用不著的,浪費很大。所以秒殺系統不同使用正常的網站業務流程,也不能和
網站交易業務共用伺服器,必須專門部署秒殺伺服器。
秒殺系統技術挑戰
1.對現有網站業務造成衝擊
2.高併發下應用,資料庫負載
3.突然增加的網路及伺服器頻寬
4.直接下單
秒殺系統應對策略
1.秒殺系統獨立部署
2.秒殺商品頁面靜態化
3.租借秒殺活動網路頻寬
4.動態生成堆積下單頁面URL