喬幫主的直播内容經精煉整理、分以下5篇: 一、分享介紹&架構三原則 二、雲架構、架構的原始階段和基礎階段 三、架構動靜分離和分布式階段 四、架構資料緩存階段和兩個次元拓展階段 五、架構微服務階段
架構動靜分離階段:靜态緩存 + 對象存儲階段

當通路壓力達到100萬PV到300萬PV的時候,我們看到前端web服務出現性能瓶頸。大量的web請求被堵塞,同時伺服器的CPU、磁盤IO、帶寬都有壓力,尤其是帶寬壓力。這時候我們一方面将網站圖檔、js、css、html及應用服務相關的檔案存儲在oss中進行靜态資源集中管理,另外一方面通過CDN将靜态資源分布式緩存在各個節點實作“就近通路”。通過将動态請求、靜态請求的通路分離(也就是“動靜分離”),有效解決了伺服器在磁盤IO、帶寬方面的通路壓力。那這階段采用的雲産品,相比上階段,主要增加了CDN和OSS。
值得注意的是,CDN可以直接進行動靜請求分離,但在此階段使用者量規模的架構中,可能很多人覺得甚至沒必要用OSS。但我還是建議将靜态資源采用獨立的二級域名集中部署在OSS中,友善後續架構擴充,也是友善CDN回源請求加速。當然如若業務方面沒有未來擴充的考慮等,直接采用CDN是最高效省事的做法。
架構動靜分離階段有兩個技術特點:
第一點,動靜分離其實是靜态請求和動态請求的解耦。
第二點,CDN被譽為網際網路高速公路的最後一公裡。特别在電商等Web領域應用廣泛,我們知道,電商業務中有大量的商品圖檔的靜态資源,是以在電商類應用中幾乎都會必選CDN,都說沒有CDN的電商不是好電商。
接着進入架構分布式階段:負載均衡。
架構分布式階段:負載均衡
當通路壓力達到300萬PV到500萬PV的時候,雖然“動靜分離”有效分離了靜态請求的壓力,但是動态請求的壓力已經讓伺服器”吃不消”。最直覺的現象是,前端通路堵塞、延遲、伺服器程序增多、CPU100%,并且出現常見的502/503/504的錯誤碼。顯然單台 Web伺服器已經滿足不了需求,這裡需要通過負載均衡技術增加多台 Web伺服器,進一步保障業務的性能和高可用。負載均衡的加入,進而告别了單機的時代,轉變分布式架構的階段。
那在這個架構階段采用的雲産品,如左邊架構圖所示,相比上階段,主要增加了SLB。此階段的架構中,值得注意的是,采用七層SLB雖然可以滿足絕大數Web應用場景。但在高并發場景下,我們優先考慮使用四層的SLB提高性能。雖然四層SLB在穩定性和性能會比七層要好,但是會帶來運維配置管理工作量。
此階段的技術特點主要有兩點:
第一點,負載均衡是分布式架構的起點。雲計算的普及,其實也是分布式架構的普及。值得注意的是,分布式架構是叢集架構的演變,有很多人把傳統的叢集架構和分布式架構混為一談,這是很大的誤區。叢集的虛拟VIP技術隻能讓一台伺服器平時作為Backup熱備,隻有在故障的時候,才會切換到Backup上讓其頂上,平時都是空閑狀态。而分布式架構的技術特點,就是負載均衡的引入,讓不同伺服器來同時處理業務壓力。
第二點,分布式架構是雲計算體系階段的标配。為什麼是标配呢?接下來我們聊聊分布式架構的核心優勢對比。
分布式經典架構1+1>2,我在分享中經常比較喜歡說這個案例,真的是百說不厭。一台4核8G配置的主機,部署着一個分布式業務,如傳統電商系統。我們用單台部署,以及如若我們拆分成兩台2核4G配置的主機,用分布式架構思路部署,會有什麼不一樣?我們詳細來看看對比的差別。
1、在成本方面,單機要402,兩台也差不多四百多,基本一樣。
2、在性能方面,差距就開始出來了。帶寬方面,雲主機僅有200Mbps,而兩台部署,通過SLB對外通路,帶寬有1Gbps。
3、磁盤方面,一台預設40G雲盤,而兩台就是兩塊預設40G系統盤,就是2倍的IO性能。是以在早起還未推出SSD雲盤,那時候IO很低,為了滿足業務對IO的需求,相比單機高配部署,通過分布式架構拆分成多台低配機器部署,就能擷取成倍的IO性能,這招對提升IO性能非常管用。
4、安全性方面,單機直接暴露源IP,被黑客直接攻擊源站。而兩台分布式部署,隐藏後端IP避免被掃描、被直接打。甚至SLB是基于LVS,由于直接改了LVS的源碼,具有一定的抗攻擊功能。
5、擴充性方面,單機隻能更新伺服器配置來垂直擴充,而兩台分布式部署,不僅能垂直快照,而且隻需要往SLB後面增加更多ECS來進行水準擴充。
6、穩定性方面,單機肯定存在單點故障,而兩台分布式部署的,沒有單點問題。
通過分布式部署唯一的缺點,是在管理維護上會變複雜。不過通過ansible等自動化運維工具,這個對運維來說也沒多大問題。是以:擁抱雲計算,其實也是擁抱分布式如若業務不适合用分布式架構,其實發揮不了雲計算的核心優勢。
接着進入架構資料緩存階段:資料庫緩存。
下一篇:架構資料緩存階段和兩個次元拓展階段