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

2020-12-04 mikechen網際網路架構

大型網站的架構設計,涉及到的面非常多,並不像大家想像的那樣,就是一個網站這麼簡單,今天拋磚引玉,希望能給想從事網際網路行業的同學一點初步的概念。架構設計,其實就要清楚整個大型網站技術架構的演變歷程,知道每個階段的瓶頸在哪裡,以及對應的解決方案。很多公司都是小做到大,特別是創業公司,如果一步步發展起來,網站架構演變都會經歷這些步驟,請重點注意順序。

大型網站架構演變過程

架構演變第一步:物理分離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 原創發布於頭條號,未經許可,禁止轉載。

相關焦點

  • 不要企圖設計一個大型網站 - 談一談大型網站架構的演變過程
    1、前言沒有一開始就做成的大型網站,現在我們熟知的所有大型網站都是從小到大一點點做起來的。比如說:facebook是在大學宿舍中產生的,淘寶是在馬雲家客廳產生的。這一章我們就來談一下大型網站的演變過程。
  • 大型網站架構設計的演變和重構發展歷程
    在網站架構設計時,迷信和追求大公司的網站解決方案或者為了技術而技術,都是不可取的。許許多多的大型網站架構設計,都是經歷了從小型網站逐步演變和重構成大型網站的歷程。在這個演變和重構的過程中,決定性因素是:高並發的數據訪問量和海量數據的存儲容量。
  • 大型網站架構設計十步秘密攻略
    第一步:物理分離web伺服器和資料庫最開始,由於某些想法,於是在網際網路上搭建了一個網站,這個時候甚至有可能主機都是租借的,但由於這篇文章我們只關注架構的演變歷程,因此就假設這個時候 已經是託管了一臺主機,並且有一定的帶寬了,這個時候由於網站具備了一定的特色,吸引了部分人訪問,逐漸你發現系統的壓力越來越高,響應速度越來越慢,
  • 高並發高流量的大型網站架構設計(一)
    本文圍繞高並發高流量的網站架構設計問題,主要研究討論了以下內容:首 先在整個網絡的高度討論了使用鏡像網站,CDN內容分發網絡等技術對負載均衡帶來的便利及各自的優缺點比較。然後在區域網層次對第四層交換技術,包括硬體 解決方案F5和軟體解決方案LVS,進行了簡單的討論。
  • 兩年磨一劍開發了這套爬蟲系統(附架構講解)
    不管是對想從事爬蟲工作的小夥伴還是爬蟲工程師們來說,目前網上關於爬蟲領域的文章,大多都停留在表面,聊來聊去還是那些東西,新手一看就會、老手早已知曉。已經很久沒有一些實質性的內容了。一、怎麼設計爬蟲系統?
  • 大型門戶網站SEO框架規劃設計
    大型門戶網站SEO工作非常複雜最重要的一點是:有一個統籌的SEO,然後按照條理對大型門戶戶網站的sEO工作進行分解,來輔助這個統工作非常複雜,。時桃路,這一點對於大型門戶網站的SEO人員再按部就班實現優化目標。我們可以通過一個框來說非常關鍵。
  • 從企業架構到信息化規劃,從現狀調研到架構設計的核心邏輯
    在這篇文章我不會詳細的去談當前主流的企業架構方法論理論框架和內容。而是根據多年IT諮詢實踐,將一些關鍵邏輯點和你分析。為什麼要談核心IT規劃和諮詢邏輯?可以毫不客氣的講,大部分的做IT規劃諮詢的人是不具備進行全局架構規劃諮詢能力的,這個一方面是需要你有大量業務和技術雙領域的實踐經驗積累,一方面是需要你真正做過大型的諮詢規劃項目並在這個過程中將實踐內容,各個架構之間輸出關係想清楚。系統學習下類似TOGAF課程當然有用,但是這不代表你具備了諮詢規劃能力。
  • Grin架構設計選擇分析|火星號精選
    文章僅代表作者觀點,不代表火星財經官方立場。小編:記得關注哦來源:區塊鏈研究實驗室原文標題:隱私加密系列|Grin架構設計選擇分析01簡介Grin是一種在Rust中實現的加密貨幣,它利用Mimblewimble交易和Cuckatoo算法來執行工作量證明(PoW)計算。
  • 網站原創文章不收錄是什麼原因?
    關於網站文章錄入問題,有的網站原創文章就是錄入欠好,這點讓人很疑問,信任這個問題做SEO都遇到過,自己寫的原創文章搜尋引擎不錄入。那麼,網站原創文章不被錄入是什麼原因呢?今天就跟從小編一起來了解下吧!過度優化在文章內部重複增加堆砌關鍵詞,針對每一個關鍵詞加粗,而且都增加一次錨文本連結,這種做法很明顯是優化過度,會導致搜尋引擎對網站的反感,會對網站採納降權處理,天然也不會去錄入網站。以往更新頻率問題網站可能之前很長一段時間不更新,這種情況搜尋引擎蜘蛛就會下降訪問你網站的頻率。
  • 拆解|SAAS系統的底層架構設計
    作者對SaaS系統的底層架構的設計進行了拆解並梳理了需求邏輯,供大家一同參考和學習。SaaS系統在建設過程中,因面向的用戶群體業務靈活性變化,許多同仁在做系統時,基於公司/市場等多方面壓力,往往在建設初期忽略最為重要的底層架構設計,將更多的視角精力投入至業務場景的支撐。
  • 印度大型相親網站移除「膚色」選項,稱該功能是設計上的誤區
    【環球時報記者 李雪】美國黑人弗洛伊德之死在多國掀起反種族主義浪潮,不僅「黑人牙膏」因名稱遭到抵制、強生公司宣布下架美白產品,印度的一家大型相親網站近日也迫於壓力,移除了「膚色」這一選項。據英國廣播公司(BBC)網站23日報導,印度最大相親網站之一Shaadi.com原本要求用戶在加入該網站時,在「膚色」選項下選擇自己膚色的深淺,以此來搜索潛在的伴侶。這一功能近日引發關注和不滿。其中,來自美國達拉斯的印度裔女子赫塔爾將不滿訴諸行動。她在網上發起了反對「膚色匹配」功能的請願,14個小時內就收到了超過1500個籤名。
  • 優化網站文章可讀性的9個簡單技巧
    對於內容創作者來說,除了保證文章內容質量,怎麼樣才能為讀者提供更好的閱讀體驗呢?在本文中,將跟大家分享9個簡單排版小技巧,讓網站文章更易於用戶閱讀。
  • 音樂製作課:一次搞懂「錄音、混音、母帶」之間的差別
    繼《音樂製作課:一篇文章輕鬆搞懂作詞、作曲、編曲》文章發布之後,獲得不少讀者的喜愛。接下來,帶大家進入到重要的音樂製作環節,即錄音、混音、母帶後制,讓大家一次搞懂「錄音、混音、母帶」之間的差別以及三者之間的內在關係。是的,今天的家庭錄音室越來越普及。好的音樂也可以從臥室、車庫或雜物間中製作出來。錄一首歌、傳上網、病毒傳播,然後一夜成名。
  • 像人體骨骼系統一樣,設計B端產品架構
    做好一個產品的產品架構,能清晰地組織好業務系統的邏輯、明確指導產品的設計、迭代、優化。而細化到B端產品架構上,筆者認為有以下四步需要注意。產品架構指的是產品的整體性結構。對於B端產品,產品架構就是整個產品的頂層設計,就是整個產品的骨骼。
  • JavaEE——架構模式
    聲明:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。架構模式一般的程序架構都分為B/S(伺服器---瀏覽器)和C/S(伺服器---客戶端)架構。 什麼模式才算是B/S呢?
  • 如何在 3 天內完成一篇英文文章,寫作殺手鐧幫你一把……
    別著急,辦法還是有的,不但讓你能把文章寫好,而且能讓你幾天內就能寫出一篇完整的英文文章。今天,筆者推薦給大家一個 SCI 寫作神器:AI 寫作助手。圖片來源:網站截圖2.舉個例子,比如我正在寫一篇有關「靜脈血栓栓塞」的文章,相對這個疾病的風險進行探討,有沒有言簡意賅的英文描述呢?輸入「靜脈血栓栓塞 風險」,點擊「查詢」。
  • 如何挑選一間好的網站設計公司?
    只要花一點點時間,就可以從以下我們整理的四個大方向,看出一間好的網站設計公司!公司的歷史,是穩健網站設計公司的基石一個公司的成立歷史無可取代,許多大型企業在企業LOGO旁標註成立年份,顯見出公司成立的資歷重要性。基本上我們相信只要成立超過十年以上的公司,大多已經有健全的體制,值得信賴,但如果未特別提及成立的年份或資歷,就要注意。
  • 高效寫作6板塊之二——怎樣處理素材打造一篇爆款文章
    等把這些想法寫出來後,大家會說那怎麼能把這些想法整理成一篇文章呢。接下來我將從以下4點來說明。比如拿紅樓夢中的交友來說,交朋友要真誠,要對朋友好,要互幫互助,那麼根據總結出來的觀點便能寫出一篇《紅樓夢裡的交友之道,學會了受益一生》的文章,之後根據這些觀點再補充上相應的事例就可以了。所以平日裡看電影看書便可以將一些不錯的觀點總結出來,這樣每個觀點既可以單獨成文,也可以囊括起來組成一篇文章。
  • 乾貨:記一次JavaWeb網站技術架構總結
    【IT168 評論】題記  工作也有幾多年了,無論是身邊遇到的還是耳間聞到的,多多少少也積攢了自己的一些經驗和思考,當然,博主並沒有太多接觸高大上的分布式架構實踐,相對比較零碎,隨時補充(附帶架構裝逼詞彙)。
  • 文章配圖資源哪裡找?這裡有21個網站!
    文章配圖上哪裡找?我攢了好久的插畫網站們現在要分享給大家啦,快拿好小板凳,一起來圍觀。這些網站題材豐富、主題各異、風格多樣、並且更新也快,你們能夠欣賞到來自全球各地的插畫家們出色的作品,看到別人的腦洞是有多大,相信靈感也會源源不斷。