大型網站架構系列筆記(一)——大型網站架構演化


——本文結合《大型網站技術架構》(李智慧著)一書,與自身經驗撰寫,僅做學習使用。如有侵權,請聯繫本人。

大型網站架構演化

  • 本節是《大型網站技術架構》筆記第一節,主要介紹大型網站軟件技術特點、發展歷程、設計思想等。
  • 隨着互聯網技術的不斷髮展,互聯網技術不斷滲透進人們生活的各個角落,但在互聯網火熱的背後隱藏着大量的問題,並反推着技術的快速更新。如何實現高併發性、安全性、高可用性、易擴展性、可升縮性等,成爲了衆多企業最關心的指標。

1.大型網站軟件系統特點

大型網站或應用系統有以下特點:

  1. 高併發,大流量: 需要面對大量用戶同時訪問造成的搞併發、大流量。
  2. 高可用: 需要實現7*24小時不間斷的服務,不能發生宕機事件,且在系統升級維護時需要實現業務層面無感知。
  3. 海量數據: 需要存儲、管理海量的數據,設計到大量數據服務器。
  4. 用戶分佈廣泛,網絡情況複雜: 許多大型網站都爲全球用戶提供服務,由於用戶分佈廣泛,網絡情況天差地別,故一些大型網站在各地建立數據中心。
  5. 安全環境: 由於互聯網具有很強的開放性,使得互聯網站更容易受到攻擊,安全問題不容忽視。
  6. 需求變更快,發佈週期短: 互聯網產品爲了快速適應市場,滿足用戶需求,緊跟熱點,通常具有較高的發佈頻率。
  7. 漸進式發展: 互聯網產品通常不是從一開始就具有全部功能的,絕大多數的大型互聯網站都是從一個小網站開始漸進式發展起來的,如阿里巴巴、Google、Facebook等。絕大部分功能都是隨着產品的發展與運營慢慢增加的,這正好與網站架構的發展演化過程相對應。

2.大型網站架構發展歷程

2.1最簡單的網站架構

網站一般分爲應用服務器、文件服務器、數據庫服務器三部分,在實際的使用過程中,三種服務器的配置側重各不相同:

  • 應用服務器側重於更強的運算能力;
  • 文件服務器側重於更大的硬盤;
  • 數據庫服務器側重於更快的讀寫速度。

但在最開始的階段,網站一般沒有什麼訪問量、也不會面臨攻擊等問題,所以通常對上述三類服務器沒有明顯的劃分,甚至都集中在一臺服務器上,且只需要最簡單的配置即可。

  • LWIP: 我所接觸過的最簡單的是LWIP,它是一個小型、開源的TCP/IP協議棧,甚至能部署在單片機上。
    在這裏插入圖片描述
  • BOA: 稍微大一點的是以BOA服務器爲代表的嵌入式服務器,通常搭建在嵌入式開發板上,系統爲linux,通過CGI與H5程序搭建簡單的網站。在嵌入式BOA服務器上,甚至可以不存在數據庫服務器,由於數據量較少,更多采用數據文件保存相應的數據。
    在這裏插入圖片描述
  • Apache與MySQL: 常用的初始階段的網站通常採用PHP開發應用程序,由於PHP是一種可以嵌入HTML的腳本語言,可以很好的部署於Apache上。使用MySQL作爲數據庫,由於MySQL是關係型數據庫,所以它允許多人同時在線操作,所有操作均基於SQL語句實現,開發人員可通過Navicat實時操作數據庫。MySQL底層採用C,C++編寫,爲多種編程語言提供了API接口。同時幾乎支持所有主流的操作系統,支持多線程操作,使得CPU資源可以得到充分的利用,並提高數據的讀寫速度。

2.2提高網站性能基本操作

  • 將應用服務器與數據服務器分離
    將三種服務器在物理上分離,各司其職,改善網站的併發處理能力和數據存儲能力。
  • 使用緩存
    根據網站訪問特點,80%的訪問量集中在20%的用戶上,可以採用緩存服務器緩存核心用戶的數據,改善網站訪問速度。
  • 使用應用服務器集羣
    隨着網站的不斷髮展,如何解決用戶訪問的高併發與海量數據的處理成爲了亟待解決的問題,使用應用服務器集羣可以很好的解決這一問題,當一臺服務器在處理能力與存儲空間維度無法滿足日益增長的業務需求時,增加一臺或者多臺服務器甚至組件應用服務器集羣分擔壓力是最好的做法。
  • 分離數據庫讀寫功能
    當網站用戶數量達到一定規模後,緩存不能覆蓋的一部分讀操作與全部的寫操作都需要訪問數據庫。此時將數據庫讀寫功能分離,配置主從兩臺數據庫,寫操作時寫入主數據庫,主數據庫通過主從複製機制將數據同步到從數據庫,讀操作時,只需要訪問從數據庫即可,以此緩解數據庫負載壓力。

2.3進一步提高網站性能

  • 使用反向代理與CDN加速
    隨着網站規模越來越大,用戶數量也越來越多,用戶的分佈也越來越廣,用戶的網絡環境也天差地別。依靠上述的方法已經不足以提供完美的用戶體驗,可以使用CDN加速與反向代理等手段進行優化。
    CDN與反向代理都是基於緩存的技術手段,CDN部署於網絡提供商的機房,用戶請求數據時,可以從距離最近的網絡提供商的機房中獲取數據。而反向代理部署與中心機房,收到用戶請求時,首先訪問反向代理服務器,若反向代理服務器中有相關緩存,直接返回給用戶。加快了用戶訪問速度,提升了用戶體驗。
  • 業務拆分與分佈式系統
    當業務量增大到一定程度,單表數據規模非常龐大時,考慮使用按照業務分庫,將不同業務的數據部署在不同的物理服務器上,實現分佈式數據庫與文件系統。同時當系統越來越複雜、功能越來越多時,可以將應用服務器按照業務拆分開,形成子系統獨立部署運維,首頁上與子應用間通過超鏈接關係進行跳轉。

3.大型網站發展思路與價值觀

  • 業務驅動
    大型網站的建設從來不是一蹴而就的,而是隨着網站業務需求的不斷髮展一步一步反推技術的演化、更新的。在更新的過程中慢慢將一個只有一臺服務器,併發量幾十、幾百的小網站進化爲上萬臺服務器,上億用戶的大型網站。目前我們看到的百度、阿里、騰訊都是沿着這條路線發展的。
  • 技術是一種手段,不是目的
    技術是在解決不斷增長的業務量導致的問題中的一種手段,不能爲了技術而技術,方案選擇應緊密圍繞着實際業務的需求進行。否則技術變成了鏡中花、水中月。同時,技術是一種解決問題的工具,但不是全部,不能過分依賴技術,有時當技術解決不了問題時,調整一下業務邏輯,也許就會有新的發現與收穫。

4.雲平臺在網站建設中的作用

中小網站需要構建自己的網站架構是一個比較麻煩的事情,對於很多小型網站來說,其實無需自己搭建的網站架構、一步一步去演化更新。選擇一個靠譜的雲平臺就可以解決所有的問題,不僅節約了硬件成本、運維成本,還縮短了開發週期,甚至在安全性與災備等方面都有了最強有力的保證。尤其是使用雲平臺的便捷性是無與倫比的,所有的計算、存儲、網絡、數據庫、安全及CDN加速都可以按需租用,彈性伸縮,所使用的資源隨着業務量需求的變化靈活變化。也無需再關心技術架構的問題,只需要按需調整租用的資源即可,爲今後網站的不斷髮展提供了更大的空間與更便捷的開發方式。
下面是中國電信集團天翼雲產品鏈接與四川電信雲產品鏈接,提供了大量的相關雲產品及相關資源,以備各位不時之需。
www.ctyun.cn
www.sctyun.cn

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章