當前位置:編程學習大全網 - 源碼下載 - 如何搭建壹個大型網站系統?

如何搭建壹個大型網站系統?

程序員都希望努力學習,提高技能,獲得更好的收入。雖然技術提升和高收入不容易實現,但總有規律可循。

壹個成熟的大型網站(如淘寶、JD.COM等)的系統架構。)從設計之初就不具備完整的高性能、高可用性和安全性的特點。它總是隨著用戶的增加和業務功能的擴展而不斷進化和完善。在這個過程中,開發模式、技術架構、設計思路也發生了很大的變化,甚至技術人員也從幾個人發展到壹個部門甚至壹條產品線。所以成熟的系統架構是隨著業務的拓展而完善的,不是壹朝壹夕的;不同業務特點的系統會有各自的側重點,比如淘寶解決海量商品信息的搜索、訂購、支付,比如騰訊解決數億用戶的實時消息傳遞,百度處理海量搜索請求,都有各自的業務特點和不同的系統架構。盡管如此,我們也可以找出在這些不同的網站背景中使用的技術,這些技術可以廣泛應用於大型網站系統的架構中。我們先介紹壹下大型網站系統的演進過程,來了解這些技術和手段。

首先,最初的網站架構

在初始架構中,應用程序、數據庫和文件都部署在壹臺服務器上,如下圖所示:

?第二,應用程序、數據和文件的分離

隨著業務的擴展,壹臺服務器已經不能滿足性能需求,於是將應用、數據庫、文件部署在獨立的服務器上,根據服務器的用途配置不同的硬件,以達到最佳的性能效果。

?第三,利用緩存提高網站性能

在優化硬件性能的同時,我們也優化了軟件的性能。在大多數網站系統中,緩存技術被用來提高系統的性能。緩存的使用主要來源於熱數據的存在。大多數網站訪問遵循28原則(即80%的訪問請求最終落在20%的數據上),因此我們可以緩存熱點數據,減少這些數據的訪問路徑,提高用戶體驗。

常見的緩存實現方式有本地緩存和分布式緩存。當然還有CDN,反向代理等等,後面會講到。本地緩存,顧名思義就是將數據緩存在應用服務器本地,可以存在內存中,也可以存在文件中。Oscar緩存是壹個常見的本地緩存組件。本地緩存的特點是速度快,但是由於本地空間有限,緩存的數據量有限。分布式緩存的特點是可以緩存海量數據,並且非常容易擴展。常用於門戶網站,速度不如本地緩存快。常用的分布式緩存有Memcached和Redis。

第四,使用集群來提高應用服務器的性能

應用服務器作為網站的入口,會承擔大量的請求,我們經常通過應用服務器集群來分擔請求的數量。在應用服務器前部署負載均衡服務器調度用戶請求,根據分發策略將請求分發到多個應用服務器節點。

?負載均衡技術常用的硬件是F5,比較貴,軟件是LVS,Nginx,HAProxy。LVS是四層負載均衡,根據目的地址和端口選擇內部服務器。Nginx是七層負載均衡,HAProxy支持四層和七層負載均衡,可以根據消息內容選擇內部服務器。所以LVS分發路徑比Nginx和HAProxy更好,性能更高,而Nginx和HAProxy更具可配置性,比如可以進行靜態和動態分離(根據請求消息的特性選擇靜態資源服務器或應用服務器)。

五、數據庫讀寫分離和數據庫表。

隨著用戶數量的增加,數據庫成為了最大的瓶頸。提高數據庫性能的常用手段是讀寫分離和表分離。顧名思義,讀寫分離就是將數據庫分為讀寫庫,通過主用和備用功能實現數據同步。子數據庫和子表分為橫向分割和縱向分割,橫向切換是將壹個數據庫的壹個非常大的表進行拆分,比如壹個用戶表。垂直細分就是根據不同的業務進行切換,比如不同數據庫中的用戶業務和商品業務相關表。

?第六,利用CDN和反向代理提高網站性能

如果我們的服務器都部署在成都的機房,那麽四川的用戶訪問更快,北京的用戶訪問更慢。這是因為四川和北京分別屬於電信和聯通不同的發達地區,北京用戶通過互聯網路由器訪問成都的服務器需要經過很長的路徑,回程路徑相同,所以數據傳輸時間更長。在這種情況下,經常使用CDN來解決問題。CDN將數據內容緩存在運營商機房,用戶訪問時先從最近的運營商獲取數據,大大減少了網絡訪問的路徑。比較專業的CDN運營商有藍汛、網房等。

部署在網站機房的反向代理,在用戶請求到達時首先訪問反向代理服務器,反向代理服務器將緩存的數據返回給用戶。如果沒有緩存的數據,會繼續去應用服務器獲取,這樣也降低了獲取數據的成本。反向代理中有Squid和Nginx。

?七、分布式文件系統的使用

用戶數量與日俱增,業務量越來越大,產生的文件越來越多。單個文件服務器已經不能滿足需求。需要分布式文件系統支持。常用的分布式文件系統是NFS。

?八、使用NoSql和搜索引擎

對於海量數據的查詢,使用nosql數據庫和搜索引擎可以達到更好的性能。不是所有的數據都應該放在關系數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

?9.拆分應用服務器的服務。

隨著業務的進壹步擴展,應用變得非常臃腫。這時候就需要把應用拆分成新聞、網頁、圖片等服務。每個業務應用負責相對獨立的業務操作。企業可以通過消息或共享數據庫相互通信。

?十、建立分布式服務

這時候我們發現所有的商業應用都會用到壹些基本的商業服務,比如用戶服務、訂單服務、支付服務、安全服務,這些都是支撐所有商業應用的基本要素。我們提取這些服務,並通過使用部分服務框架來構建分布式服務。淘寶的Dubbo是個不錯的選擇。

?大型網站的架構是根據業務需求不斷完善的,會根據不同的業務特點進行具體的設計和考慮。本文只描述壹個常規的大型網站所涉及的壹些技術和手段。

如果妳還有這些疑問,成熟的網站架構師需要學習哪些核心技能?Java程序員如何晉升為互聯網架構師?Java語言在架構構建中起到什麽作用?如何成為壹名年收入幾十萬的建築師?歡迎致電並參觀昌平北大青鳥java培訓。

  • 上一篇:12個創新思維模型:06“戰略杠桿”
  • 下一篇:福建源代碼開發
  • copyright 2024編程學習大全網