怎麼樣的的網站算是大型網站?下面帶你了解~
大型網站的特點:
●高併發、大流量:需要面對高併發使用者,大流量訪問。
●高可用:需要7 x 24小時不間斷服務。
●海量資料:資料需要儲存、管理,需要大量伺服器。
●使用者分步廣泛、網路情況複雜:全球網路複雜,像國內還有各個運營商網路互通難的問題。
●安全環境惡劣:網際網路開放性,使得網站易受到攻擊。
●需求快速變更,釋出頻繁:快速迭代。
●漸進式發展:從小網站開始,逐漸發展成大站點。
大型網站的主要技術挑戰
龐大的使用者,高併發的訪問和海量資料。任何簡單業務在處理PB級資料或數以億計的使用者時,問題就會變得棘手。
大型網站架構的演化過程
初始階段的網站架構
大多數小專案的初期架構都是這樣。隨著網站業務發展,1臺伺服器無法滿足需求:使用者越來越多,網站效能越來越差,越來越多的資料導致儲存空間不足。
應用、資料庫、檔案分離
●應用服務與資料服務分離:提高效能,解決儲存問題。【伺服器專用化】
●應用伺服器:處理業務,要求CPU強
●檔案伺服器:儲存檔案,要求儲存容量大
●資料庫伺服器:儲存資料、快取、磁碟檢索,要求記憶體、硬碟速度快
隨著使用者量增多,資料庫壓力大,會成為系統瓶頸。
用快取改善網站效能
二八定律:80%的業務訪問20%的資料。所以常用資料放入快取,可以減少資料庫的壓力
快取分為兩種:
●本地快取:訪問更快,但受應用伺服器記憶體限制,且會出現和應用程式爭用記憶體的情況。
●分散式快取:叢集方式,專用伺服器作為快取伺服器,理論上不受記憶體容量限制。
目前只有單個應用伺服器,且只部署了一個例項,其能夠處理的連線數有限,在網站訪問高峰期時,應用伺服器會變成瓶頸。
使用應用叢集改善網站的併發能力
一臺伺服器的處理能力不足時,不要考慮去換更強大的伺服器,對於大型網站而言,不管多麼強大的伺服器,都滿足不了網站持續增長的業務需求。最好的方式是新增更多的伺服器來分擔原有伺服器的訪問。
資料庫讀寫分離
資料庫還存在的的問題:使用快取後,依然會有部分讀操作(快取沒有命中,快取過期等)和所有的寫操作需要訪問資料庫。在網站使用者達到一定規模後,資料庫依然會因為負載較高成為系統瓶頸。
解決辦法:採用資料庫讀寫分離,兩臺資料庫配置主從關係,從主庫寫資料,從從庫讀資料,主庫的資料會同步到從庫中。
為了便於應用程式能夠透明地訪問讀寫分離的資料庫,所以在應用程式中使用專門的資料訪問模組。
使用反向代理快取和CDN加速網站響應:網路環境複雜,快取前端靜態資源
請求訪問存在的問題:隨著網站持續的發展,發現不同網路環境的使用者訪問速度不同。
解決辦法:使用反向代理快取和CDN加速網站響應。
CDN和反向代理的基本原理:都是快取,區別在於CDN部署在網路提供商的機房,使使用者在請求網站服務時,可以從距離自己最近的網路提供商機房獲取資料;而反向代理則部署在網站的中心機房中,從使用者請求達到中心機房後,首先訪問的伺服器是反向代理伺服器,如果反向代理伺服器中快取著使用者請求的資源,就將其直接返回給使用者。
CDN和反向代理的目的:儘早返回資料給使用者,一方面加快使用者訪問速度,另一方面減輕應用伺服器的負載壓力。
使用分散式檔案系統和分散式資料庫系統
隨著網站業務發展,原有讀寫分離的資料庫也不能支撐。另外,原有的檔案伺服器也無法滿足需求了。
這時,需要使用分散式資料庫和分散式檔案系統。
分散式資料庫是網站資料庫拆分的最後手段,只有在單表資料規模非常龐大時才使用。
網站更常用的資料庫拆分手段是業務分庫,將不同的業務資料部署在不同的物理伺服器上。
使用NoSQL和搜尋引擎
隨著業務越來越複雜,對資料儲存和檢索的需求也越來越複雜,網站需要採用NoSQL和非資料庫查詢技術比如搜尋引擎。
業務拆分(分治)
網站過於複雜,將業務拆分。比如商城拆分為首頁、店鋪、訂單、買家、賣家等產品線,歸不同的業務團隊負責。具體到技術,也會根據產品線劃分,將一個網站拆分為多個應用,每個應用獨立部署維護。
應用之間可以透過一個超連結建立關係(在首頁的導航連結指向不同的應用地址),也可以透過訊息佇列進行資料分發,當然最多的還是透過訪問同一個資料儲存系統來構成一個關聯的完整系統。
分散式服務
業務拆分越來越小,儲存系統越來越大,應用系統整體複雜度呈指數型增加,部署維護越來越困難。由於所有應用都需要連線資料庫,在數萬臺伺服器的情況下,資料庫連線會資源不足。
既然每個應用系統都需要相同的業務操作,比如使用者管理、商品管理等,可以把這些共用業務抽取出來,獨立部署。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~