高併發架構最全詳解(圖文全面總結)

碼農談IT發表於2024-02-19

來源:mikechen的網際網路架構


高併發架構是架構師的必備技能,也是網際網路大廠經常使用的,下面我就全面來詳解高併發架構



高併發架構

"高併發" 是指系統在同一時間段內,同時處理大量請求或併發使用者訪問的能力。

比如:在阿里雙11期間,大量使用者會湧入阿里巴巴的電商平臺,導致系統面臨極大的併發訪問壓力,這就是高併發。

高併發架構最全詳解(圖文全面總結)

而高併發架構,主要是為了解決這樣的高併發場景的一種系統架構。

以下是一些常見的高併發架構設計原則和技術,比如:分散式、微服務、負載均衡、分庫分表等。

高併發架構最全詳解(圖文全面總結)


微服務架構

微服務架構是將整個應用拆解成小而獨立的服務單元,每個服務都執行在獨立的程式中,透過輕量級通訊協議相互通訊。

如下圖所示:

高併發架構最全詳解(圖文全面總結)

這種架構風格有助於提高系統的靈活性、可維護性和可擴充套件性。每個微服務都專注於特定業務功能,獨立開發、測試、部署和擴充套件,使團隊能夠更加敏捷地進行開發和部署。微服務之間透過 API 進行通訊,允許使用不同的技術棧和獨立部署。微服務架構有助於解耦系統的各個元件,提高系統的可伸縮性,使得應用能夠更好地適應不斷變化的需求和業務規模。

常見的分散式架構,最典型的一定會涉及到微服務架構,比如:Spring Cloud 和Spring Cloud Alibaba。


負載均衡

在大型網站、應用程式或分散式系統中,負載均衡是一個關鍵的架構設計元素。

高併發架構最全詳解(圖文全面總結)

常見的軟體負載均衡方式,包括:反向代理伺服器,比如:Nginx、HAProxy等,或應用伺服器自身實現的負載均衡機制。

然後負載均衡根據預定的演算法,比如:輪詢、加權輪詢、最小連線數等分配請求。

  • 輪詢演算法(Round Robin): 請求按照順序輪流分配給每個伺服器,每個伺服器接收到的請求數目大致相等。

  • 加權輪詢演算法(Weighted Round Robin): 類似於輪詢演算法,但每個伺服器被分配一個權重值,權重決定了每個伺服器獲得請求的機率。

  • 最小連線數演算法(Least Connections): 請求被分配給當前連線數最少的伺服器,這樣可以確保負載更均勻,適用於處理每個連線時間不一致的場景。

  • 隨機演算法(Random): 請求被隨機分配給後端伺服器,這是一種簡單但不夠精確的演算法,適用於負載均衡要求不太嚴格的場景。

 

分散式架構

分散式架構是將系統拆分成多個獨立的模組或服務,分佈在不同的物理或虛擬環境中,透過網路進行通訊和協同工作。

比如:將系統拆分成小型、獨立的服務,每個服務專注於特定的業務功能。

以及:將資料庫分佈在不同的節點上,以提高資料訪問速度和系統的容錯性。

以及:使用分散式計算框架,比如:Spark等,以處理大規模資料的計算和分析。

 

分散式快取

分散式快取是一種將快取資料分散式儲存在多個節點上的技術,目的是提高系統效能、降低資料庫負載。

一些流行的分散式快取系統包括:

  • Redis: 開源的記憶體資料庫,支援豐富的資料結構和高階功能。

  • Memcached: 一款高效能的分散式記憶體物件快取系統,主要用於快取鍵/值對。

當然,這也會面臨快取的問題,比如:快取雪崩、擊穿等問題。

快取雪崩是指大量快取同時過期或失效,導致大量請求直接落到底層儲存系統上,導致資料庫或其他儲存系統負載激增。

高併發架構最全詳解(圖文全面總結)

 

非同步處理

在非同步處理中,任務的執行不會阻塞程式的執行。

在傳統的同步模型中,當一個任務阻塞時,整個程式可能會停滯。

非同步處理透過避免阻塞,使得程式在等待某些操作完成的同時能夠繼續執行其他任務,從而提升效能。

比如:發簡訊、增加積分完成時,程式可以繼續執行其他任務而不必等待。

透過將任務放入訊息佇列中,可以實現非同步任務的解耦。

如下圖所示:

高併發架構最全詳解(圖文全面總結)

非同步處理可以用於提高系統對使用者請求的響應速度,尤其是對於需要等待外部資源的操作。

 

分庫分表

分庫分表是一種資料庫水平切分的策略,用於處理大型資料集,提高資料庫效能和可擴充套件性。

如下圖所示:

高併發架構最全詳解(圖文全面總結)

庫分表採用水平切分的方式,即按照一定規則將資料行分佈到不同的資料庫或表中。

通常,切分規則可以基於資料的範圍、雜湊演算法、業務邏輯等來確定。

分庫分表支援水平擴充套件,允許透過增加資料庫節點,或表的數量來適應不斷增長的資料量,從而提升效能。

常見的資料庫分庫分表的實現方式,包括:MySQL的分庫分表中介軟體,比如:MyCAT、Vitess等。

 

訊息中介軟體

訊息中介軟體是構建分散式、鬆散耦合系統的重要元件,為系統提供了強大的非同步通訊能力,以及流量削峰等能力。

削峰填谷是一種在系統中處理流量波動的策略,目的是避免因流量激增,或急劇下降而導致的系統效能問題。

如下圖所示:

高併發架構最全詳解(圖文全面總結)

這一策略通常結合了削峰和填谷兩個方面:

1.削峰(Peak Shaving)

削峰是指在系統面臨激增的請求時,透過一系列手段來平滑或減少請求的峰值,以確保系統穩定執行。

削峰的目標:是透過流量控制、限流等手段,防止瞬時高峰對系統造成衝擊,保障系統的正常執行。

2.填谷(Valley Filling)

填谷是指在系統面臨請求急劇下降時,透過調整資源分配等手段來填充谷底。

填谷的目標是在低流量期間合理利用資源,避免資源浪費。

比如:線上技術在阿里雙11都會涉及到。

 


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024924/viewspace-3006754/,如需轉載,請註明出處,否則將追究法律責任。

相關文章