互聯網三高架構
摘要:越來越多的互聯網用戶和高并發的訪問等使得各大網站都需要提高系統的高性能、高并發和高可用性,這也就是互聯網的三高架構。文章探討了互聯網三高架構的特點及要求,并分別闡述了三個特性的解決方案,探討三高架構在網站開發中的重要作用與策略。
關鍵詞:三高架構;高性能;高并發;高可用
中圖分類號: 文獻標志碼:A
0 引言
大型Web網站的技術挑戰主要來自于大量的用戶,高并發的訪問和海量的數據存儲,任何簡單的業務一旦需要處理TB級別的數據和面對數以億計的用戶,問題就會變得很棘手。那么如何打造一個高可用、高性能、易擴展、可伸縮且安全的網站?首先要從架構方面入手,打造高并發、高性能、高可用的系統。
1 三高架構概述
互聯網三高架構:高并發、高性能、高可用,簡稱三高(3H)。目前所有集群分布式,微服務,云原生,中臺,數據湖,大數據等等,包括SpringCloud一系列解決方案組件等等,最終目的都是為了這三點。
1.1 高并發
高并發(High Concurrency)通常是指通過設計保證系統能夠同時并行處理很多請求。當多個進程或線程同時(或者在同一段時間內)訪問同一資源時會產生并發問題,因此需要通過專門的設計來保證系統能夠同時(并發)正確處理多個請求。
1.2 高性能
高性能計算(High performance computing, 縮寫HPC)是指設備性能強,系統運算能力強,響應速度快。與性能相關的一些指標有響應時間、吞吐量、并發用戶數、TPS等。
1.3 高可用
高可用性H.A.(High Availability)指的是一個系統經過專門的設計,從而縮短因日常維護操作和突發的系統崩潰所導致的停機時間,以提高系統和應用的持續可用。HA系統是企業防止核心計算機系統因故障停機的最有效手段。
2 高并發設計方案
2.1 高并發場景
像淘寶這樣的大型站點,單憑一個接口調用的量就有可能達到百萬的并發。在雙11這樣的大型活動場景里,淘寶的并發請求數都能達到上億次,這樣的體量無論是在國內還是在國際都是排在前列的。
那么如何設計一個可以承載巨量并發請求的架構呢?要想設計一個高并發的架構,首先要搞清楚架構的分層,我們先來看一個綜合分層的架構圖:

圖2-1 分層架構圖
2.2 架構策略
2.2.1 CDN
CDN(Content Delivery Network,內容發網絡),它依靠部署在各個區域的邊緣服務器,實現負載均衡、內容分發調度等功能。它使得用戶就近獲取內容,降低網絡堵塞,提供用戶訪問響應速度。
CDN是處于整個架構體系中最前端的一層,它是直接面對用戶的,CDN會把靜態的請求(圖片、js、css等)直接消化掉,然后把動態的請求往后傳遞。高并發網站一定會使用CDN,而且需要把靜態文件存儲在邊緣服務器上。
2.2.2 負載均衡
這一層,其實就是一個反向代理(或者叫做分發器),它的主要作用是把用戶的請求按照預設的算法發送給它后面的WEB服務器。該層在實現上大致分為兩類:四層和七層。從吞吐量上來分析,四層的負載均衡更有優勢。所以,要想實現高并發,負載均衡這一層必須要使用四層技術,其中LVS就是一款不錯的開源負載均衡軟件。
2.2.3 WEB層
如果最前端使用了CDN,那么在WEB這一層處理的請求絕大多數為動態的請求。圖片、js、css、html、音頻、視頻等等都屬于靜態資源。而涉及到數據庫存取操作的請求都屬于動態請求。如果到了WEB這一層全都是動態的請求的話,那么并發量的多少主要取決于WEB層后端的DB層或者Cache層。也就是說要想提升WEB層服務器的并發性能,必須首先要提升DB層或者Cache層的并發性能。
2.2.4 Cache層
增加這一層的目的是為了減輕DB層的壓力,Cache層有一個特點:數據的讀寫發生在內存里,跟磁盤并沒有關系。正是因為這個特點,保證了數據的讀寫速度非常快。假如沒有Cache層,并發1000萬的動態請求意味著這1000萬會直接透傳到DB層(如MySQL),1000萬的并發就會造成1000萬對磁盤的讀寫操作。
2.2.5 DB層
DB層是整個架構體系中非常關鍵的一層,因為它涉及到對磁盤的讀寫。所以,為了提升性能,對服務器磁盤要求很高。高并發網站一定會使用CDN,而且需要把靜態文件存儲在邊緣服務器上。
2.2.6 消息隊列層
消息隊列的引入極大提升了整個架構的并發能力。從WEB層接收到動態的請求后,Cache層過濾掉一部分,然后請求逐一地發送到DB層,在這個過程中,查詢時間很長的請求可以單獨摘出來,把它搞到消息隊列里,這樣WEB層和DB層只處理那種快速有結果的查詢,并發量自然很大。
2.2.7 存儲層
DB層的存儲使用本地磁盤,日志類、靜態文件類使用分布式文件存儲可以更好地提高并發性。
3 高性能設計方案
3.1 高性能場景
高性能就是指程序處理速度快、耗能少。高并發和高性能是緊密相關的,提高應用的性能,可以提高系統的并發能力。

圖3-1 影響系統性能的因素
從上圖可以分析出性能瓶勁主要表現在兩個方面:
1、 硬件資源層面,如不同運營上的網絡,服務器的帶寬限制,服務器的CPU、內存及磁盤IO等;
2、 軟件層面,Web應用程序的性能,數據庫服務器的性能;
3.2 架構策略
3.2.1高性能緩存架構
絕大部分在線業務都是讀多寫少。導致幾千萬條的select語句對數據庫的壓力非常大。緩存就是為了彌補存儲系統在復雜業務場景下的不足,其基本原理是將可能重復使用的數據放到內存中,一次生成、多次使用,避免每次使用都去訪問存儲系統。緩存能夠帶來性能的大幅提升。
3.2.2高性能負載均衡
負載均衡也是高性能的一塊,一個合適的負載均衡,對系統的提升也非常明顯。從大往小了說,主要分為三類,分別是:DNS負載,硬件負載,軟件負載。
4 高可用設計方案
4.1 高可用場景
可用性是在各種異常情況下,應用都要是可用的,用戶都能夠正常訪問系統,完成業務處理。
這些異常情況包括各種硬件故障,比如應用服務器及數據庫宕機、磁盤損壞等。還有各種軟件故障。此外,還有外部環境引發的不可用,比如促銷引來大量用戶訪問,導致系統并發壓力太大而崩潰,以及,黑客攻擊、機房火災、挖掘機挖斷光纜,各種情況導致的應用不可用。

圖4-1 影響系統可用性的因素
4.2 架構策略
4.2.1容錯設計
程序是人開發的,錯誤當然就是不可避免的,一個好的容錯方案可以大大提高軟件對于錯誤的兼容程度,使得系統在遇到突發錯誤時候仍能夠保證一定的可用性。
(1)避免單點
如采用負載均衡策略,相對直接的一種容錯方案,通過部署多個節點解決故障節點業務承接的問題,一般節點越多,容錯效果就越好。
(2)服務降級
服務降級,是一種“犧牲局部、保全整體”的思想,在系統面臨崩坍時,實現保證主線業務的存活。主要方式有:關閉非核心功能,如電商平臺在“618,雙11大促”時候,發貨的時效性并不是最重要的,那么就可以關閉物流發貨服務,空閑出來的資源則可以優先保障產品、訂單和計費服務的正常運轉;簡化系統流程;同步變異步等
(3)重試機制
超時重試是比較典型的架構容錯設計思想,但是重試機制不可肆意運用,無限制的重試機制對于服務來說可能會是一種災難。重試的實現方試包括編碼和開源框架兩種,
(4)隔離設計
隔離設計的初衷是將錯誤控制在一定范圍,避免錯誤的傳播,對于交易型的業務系統一定要進行“隔離設計”。
4.2.2 限流設計
限流設計是一種面向未知的設計思想,在流量超過實際容量時,拒絕容量之外的請求以達到保護系統的目的,對于高并發類業務系統,限流是必備選項。
5 結論
綜上所述,在進行架構設計時要對架構策略搭配使用,最大程度選擇組合才可以設計出符合業務的高性能、高并發和高可用的架構。基于此,相關開發人員應重視對該方面的研發,使其更好地應用于網站設計中。
參考文獻:
[1] 房輝,常盛. 大型網站高性能架構研究[J]. 信息系統工程,2015(12):76-77.
[2] 劉健,黃才勝.基于協程的高并發架構研究[J].數字技術用,2018,36(04):85-86.DOI:10.19695/j.cnki.cn12-1369.2018.04.43.
[3] 馬辰,王博,曹寧生.云架構中高可用技術現狀與發展[J].艦船電子工程,2017,37(07):1-5.
浙公網安備 33010602011771號