您的位置:首頁>正文

一篇文章搞懂大型網站架構設計

大型網站的架構設計, 涉及到的面非常多, 並不像大家想像的那樣, 就是一個網站這麼簡單, 今天抛磚引玉, 希望能給想從事互聯網行業的同學一點初步的概念。

架構設計, 其實就要清楚整個大型網站技術架構的演變歷程, 知道每個階段的瓶頸在哪裡, 以及對應的解決方案。 很多公司都是小做到大, 特別是創業公司, 如果一步步發展起來, 網站架構演變都會經歷這些步驟, 請重點注意順序。

大型網站架構演變過程

架構演變第一步:物理分離webserver和資料庫

架構演變第二步:增加頁面緩存

架構演變第三步:增加頁面片段緩存

架構演變第四步:資料緩存

架構演變第五步: 增加webserver(集群)

架構演變第六步:分庫(首先考慮)

架構演變第七步:分表、DAL和分散式緩存

架構演變第八步:增加更多的webserver

架構演變第九步:資料讀寫分離和廉價存儲方案

架構演變第十步:進入大型分散式應用時代和廉價伺服器群夢想時代

由於篇幅的關係, 今天不重點講如何一步步演變的歷程, 我們倒序來查看, 先看森林, 再看樹木。

大型分散式應用架構

隨著互聯網技術迅速發展和演變, 不斷改變的商業化應用系統越來越複雜, 由單一的應用架構到垂直的應用架構, 但還是面臨的擴容的問題。 流量分散在各個系統中, 雖然體積可控, 但對開發人員和維護人員帶來極麻煩。 此時, 將核心的業務單獨提煉出來作為單獨的系統對外提供服務。 達成業務之間複用, 系統也將演變成分散式系統架構。

分散式架構是各元件分佈在網路電腦上、元件之間僅僅通過消息傳遞來通信並協調行動, 與上面提到的SOA服務架構一脈相承。

大型網站最終都會走向大型分散式業務場景

分散式緩存

高併發環境下, 大量的讀寫請求湧向資料庫, 磁片的處理速度與記憶體顯然不在一個量級, 從減輕資料庫的壓力和提高系統回應速度兩個角度來考慮, 一般都會在資料庫之前加一層緩存。 由於單台機器的記憶體資源以及承載能力有限, 並且, 如果大量使用本地緩存, 也會使相同的資料被不同的節點存儲多份, 對記憶體資源造成較大的浪費, 因此, 才催生出了分散式緩存。

分散式緩存系統

memcached ,redis, 動態、靜態資料的緩存, 這裡會涉及到:一致性hash演算法、分散式session、資料複製多份、單台緩存失效、集群間能夠自動複製和備份等知識點。

CDN

全稱:Content Delivery Network或Content Ddistribute Network, 即內容分發網路基本。 通過在網路各處放置節點伺服器所構成的在現有的互聯網基礎之上的一層智慧虛擬網路, CDN系統能夠即時地根據網路流量和各節點的連接、負載狀況以及到使用者的距離和回應時間等綜合資訊將使用者的請求重新導向離使用者最近的服務節點上。

現在大型互聯網公司都建立由屬於自己的CDN基站, 也有協力廠商專注於CDN的基站等。

主要特點:

1、本地Cache加速, 提高了企業網站(尤其含有大量圖片和靜態頁面網站)的存取速度, 並大大提高以上性質網站的穩定性

2、鏡像服務消除了不同運營商之間互聯的瓶頸造成的影響, 實現了跨運營商的網路加速,保證不同網路中的使用者都能得到良好的訪問品質。

3、遠端加速 遠端存取使用者根據DNS負載均衡技術 智慧自動選擇Cache伺服器,選擇最快的Cache伺服器,加快遠端存取的速度

4、頻寬優化 自動生成伺服器的遠端Mirror(鏡像)cache伺服器,遠端用戶訪問時從cache伺服器上讀取資料,減少遠端存取的頻寬、分擔網路流量、減輕原網站WEB伺服器負載等功能。

5、集群抗攻擊 廣泛分佈的CDN節點加上節點之間的智慧冗餘機制,可以有效地預防駭客入侵以及降低各種D.D.o.S攻擊對網站的影響,同時保證較好的服務品質 。

說了這麼多,你也可以理解為自動分發的緩存系統,把圖片等消耗資源優先從CDN進行訪問。

持久化儲存

具體說就是以IBM為代表的主機、以ORACLE為代表的關係型數據庫,以及以EMC為代表的高端存放裝置,被新型的雲計算技術所替換,也就是我們常說的“雲化”,也就是廉價存儲方案。

IBM的產品,在我國的金融行業中佔據著絕對的優勢,Oracle的資料庫,在電信、證券行業占著相當大的份額,EMC的存儲,在銀行、電信、證券等壟斷行業,都佔據著較大的份額,要知道,EMC是全球最大的存儲公司。

由於互聯網技術發展日新月異,擴展速度十分迅速,這是傳統的電信、金融、證券、保險、電力等行業所不能比的。因此互聯網企業的後臺架構,需要具備很強的可擴展性。比如,假設一個網站,今年的活躍用戶數量只有10萬,明天就有可能上升到1000多萬,這就需要後臺架構具有很強的擴展性,可以根據使用者的數量進行靈活的擴展。

所以才有了阿裡從2008年開始的轟轟烈烈的去IOE事件。

資料庫拆分

一般先分庫,如果分庫後查詢仍然慢,於是按照分庫的思想開始做分表的工作資料庫採用分散式資料庫(所有節點的資料加起來才算是整體資料),檔案系統採用分散式檔案系統任何強大的單一伺服器都滿足不了大型系統持續增長的業務需求,資料庫讀寫分離隨著業務的發展最終也將無法滿足需求,需要使用分散式資料庫及分散式檔案系統來支撐。

分散式資料庫是系統資料庫拆分的最後方法,只有在單表資料規模非常龐大的時候才使用,更常用的資料庫拆分手段是業務分庫,將不同的業務資料庫部署在不同的物理伺服器上。

比如淘寶中期開始的資料庫端按照業務垂直拆分:按照業務交易資料庫、使用者資料庫、商品資料庫、店鋪資料庫等進行拆分。

還有就是水準擴展,分庫分表,再結合讀寫分離一起。當然,分庫分表需要涉及到對應的SQL路由規則主庫備庫等,淘寶設計了一套TDDL來解決這些問題,應用端只需配置對應的規則即可,對應用端的沒有任何侵入的設計。

消息系統

訊息佇列中介軟體是分散式系統中重要的元件,主要解決應用耦合,非同步消息,流量削鋒等問題。實現高性能,高可用,可伸縮和最終一致性架構。是大型分散式系統不可缺少的中介軟體。

目前使用較多的訊息佇列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。

消息系統使用場景

典型的非同步處理,應用解耦,流量削鋒和消息通訊四個場景。

除了以上還要設計運維(掌握分散式平行計算、報表、監控技術以及規則策略),安全、運營、服務、存儲、業務拆分、機房容災等等,要做好一個大型的網站真的很不容易。

優知學院(youzhixueyuan),專注互聯網人核心能力進階,如果你想職場進階,管理進階,架構進階,終極目標CTO進階,這一站您不容錯過!

作者:陳睿|mikechen,前攜程定制旅遊CTO,現優知學院(專注互聯網人核心能力進階)創始人,在互聯網擁有13年產品技術&運營經驗,曾先後就職於淘寶、百度、攜程。你一同分享13年產品技術&運營經驗以及心得!

本文由 @mikechen 原創發佈於頭條號,未經許可,禁止轉載。

實現了跨運營商的網路加速,保證不同網路中的使用者都能得到良好的訪問品質。

3、遠端加速 遠端存取使用者根據DNS負載均衡技術 智慧自動選擇Cache伺服器,選擇最快的Cache伺服器,加快遠端存取的速度

4、頻寬優化 自動生成伺服器的遠端Mirror(鏡像)cache伺服器,遠端用戶訪問時從cache伺服器上讀取資料,減少遠端存取的頻寬、分擔網路流量、減輕原網站WEB伺服器負載等功能。

5、集群抗攻擊 廣泛分佈的CDN節點加上節點之間的智慧冗餘機制,可以有效地預防駭客入侵以及降低各種D.D.o.S攻擊對網站的影響,同時保證較好的服務品質 。

說了這麼多,你也可以理解為自動分發的緩存系統,把圖片等消耗資源優先從CDN進行訪問。

持久化儲存

具體說就是以IBM為代表的主機、以ORACLE為代表的關係型數據庫,以及以EMC為代表的高端存放裝置,被新型的雲計算技術所替換,也就是我們常說的“雲化”,也就是廉價存儲方案。

IBM的產品,在我國的金融行業中佔據著絕對的優勢,Oracle的資料庫,在電信、證券行業占著相當大的份額,EMC的存儲,在銀行、電信、證券等壟斷行業,都佔據著較大的份額,要知道,EMC是全球最大的存儲公司。

由於互聯網技術發展日新月異,擴展速度十分迅速,這是傳統的電信、金融、證券、保險、電力等行業所不能比的。因此互聯網企業的後臺架構,需要具備很強的可擴展性。比如,假設一個網站,今年的活躍用戶數量只有10萬,明天就有可能上升到1000多萬,這就需要後臺架構具有很強的擴展性,可以根據使用者的數量進行靈活的擴展。

所以才有了阿裡從2008年開始的轟轟烈烈的去IOE事件。

資料庫拆分

一般先分庫,如果分庫後查詢仍然慢,於是按照分庫的思想開始做分表的工作資料庫採用分散式資料庫(所有節點的資料加起來才算是整體資料),檔案系統採用分散式檔案系統任何強大的單一伺服器都滿足不了大型系統持續增長的業務需求,資料庫讀寫分離隨著業務的發展最終也將無法滿足需求,需要使用分散式資料庫及分散式檔案系統來支撐。

分散式資料庫是系統資料庫拆分的最後方法,只有在單表資料規模非常龐大的時候才使用,更常用的資料庫拆分手段是業務分庫,將不同的業務資料庫部署在不同的物理伺服器上。

比如淘寶中期開始的資料庫端按照業務垂直拆分:按照業務交易資料庫、使用者資料庫、商品資料庫、店鋪資料庫等進行拆分。

還有就是水準擴展,分庫分表,再結合讀寫分離一起。當然,分庫分表需要涉及到對應的SQL路由規則主庫備庫等,淘寶設計了一套TDDL來解決這些問題,應用端只需配置對應的規則即可,對應用端的沒有任何侵入的設計。

消息系統

訊息佇列中介軟體是分散式系統中重要的元件,主要解決應用耦合,非同步消息,流量削鋒等問題。實現高性能,高可用,可伸縮和最終一致性架構。是大型分散式系統不可缺少的中介軟體。

目前使用較多的訊息佇列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。

消息系統使用場景

典型的非同步處理,應用解耦,流量削鋒和消息通訊四個場景。

除了以上還要設計運維(掌握分散式平行計算、報表、監控技術以及規則策略),安全、運營、服務、存儲、業務拆分、機房容災等等,要做好一個大型的網站真的很不容易。

優知學院(youzhixueyuan),專注互聯網人核心能力進階,如果你想職場進階,管理進階,架構進階,終極目標CTO進階,這一站您不容錯過!

作者:陳睿|mikechen,前攜程定制旅遊CTO,現優知學院(專注互聯網人核心能力進階)創始人,在互聯網擁有13年產品技術&運營經驗,曾先後就職於淘寶、百度、攜程。你一同分享13年產品技術&運營經驗以及心得!

本文由 @mikechen 原創發佈於頭條號,未經許可,禁止轉載。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示