1. 程式人生 > >中大型網站技術架構演變過程

中大型網站技術架構演變過程

1、大型網站的特點

  • 高併發,大流量:PV量巨大。即頁面瀏覽量;使用者每1次對網站中的每個網頁訪問均被記錄1次。使用者對同一頁面的多次訪問,訪問量累計。

  • 高可用:7*24小時不間斷服務。

  • 海量資料:需要儲存、管理海量資料,需要使用大量伺服器。

  • 使用者分佈 廣泛,網路情況複雜:為全球使用者提供服務,使用者分佈範圍廣。

  • 安全環境惡劣:黑客攻擊多。

  • 需求快速變更,釋出頻繁:快速適應市場,滿足使用者需求。

  • 漸進式發展:慢慢地運營出大型網站。

2、大型網站架構演變過程

  • 初始階段網站架構

640?wx_fmt=png

一臺Server就剛需—應用程式、資料庫、檔案等所有資源都集中在一臺Server上,典型案例:基於LAMP架構的PHP網站。

  • 應用和資料服務分離

640?wx_fmt=png

三臺Server平天下—業務發展,單臺不再適應業務的發展,將應用和資料分離後成三臺Sever(應用伺服器、檔案伺服器與資料庫伺服器)。分離後三臺Server對硬體資源的需求各不相同:應用伺服器需要更快更強大的CPU,而資料庫伺服器需要更快的硬碟和更大的記憶體,檔案伺服器則需要更大的硬碟。

  • 使用快取改善網站效能

640?wx_fmt=png

3+N的Server模式—減少資料庫訪問壓力,提高網站的資料訪問速度。快取又可以分為:本地快取和遠端快取(可以是分散式的),本地快取訪問速度快,但資料量有限;遠端分散式快取可以叢集,因此容量不受限制。

  • 使用應用伺服器叢集改善網站併發處理能力

640?wx_fmt=png

叢集—解決高併發、海量資料問題的常用手段,實現系統的可伸縮性。通過負載均衡排程器,可將使用者訪問分發到叢集中的某臺Server上,應用伺服器的負載壓力不再成為整個網站的瓶頸。

  • 資料庫讀寫分離

640?wx_fmt=png

隨著使用者量的增加,資料庫成為最大的瓶頸,改善資料庫效能常用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,通過主備功能實現資料同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個數據庫特大的表進行拆分,例如使用者表。垂直切分則是根據業務不同來切換,如使用者業務、商品業務相關的表放在不同的資料庫中。

  • 使用反向代理和CDN加速網站響應

640?wx_fmt=png

CDN和反向代理的基本原理都是快取,區別在於CDN部署在網路提供商的機房,而反向代理則部署在網站的中心機房。使用CDN和反向代理的目的都是儘早返回資料給使用者,一方面加快使用者訪問速度,另一方面也減輕後端伺服器的負載壓力。

  • 使用分散式檔案系統和分散式資料庫系統

640?wx_fmt=png

使用者一天天增加,業務量越來越大,產生的檔案越來越多,單臺的檔案伺服器已經不能滿足需求。需要分散式的檔案系統支撐。

  • 使用NoSQL和搜尋引擎

640?wx_fmt=png

NoSQL和搜尋引擎都是源自網際網路的技術手段,對可伸縮的分散式特性具有更好的支援。應用伺服器則通過一個統一資料訪問模組訪問各種資料,減輕應用程式管理諸多資料來源的麻煩。

  • 業務拆分

640?wx_fmt=png

隨著業務進一步擴充套件,應用程式變得非常臃腫,這時我們需要將應用程式進行業務拆分,如百度分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過訊息進行通訊或者同享資料庫來實現。

  • 分散式服務

640?wx_fmt=png

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如使用者服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分散式服務。

出處:

https://juejin.im/post/5aeea414f265da0ba266e242

640?wx_fmt=png

架構文摘

ID:ArchDigest

網際網路應用架構丨架構技術丨大型網站丨大資料丨機器學習

640?wx_fmt=jpeg

更多精彩文章,請點選下方:閱讀原文