2023年網際網路架構設計 高效能的後端

2021-09-24 19:16:09 字數 2922 閱讀 9597

先簡略回顧一下。對於網際網路產品的高效能架構設計通常包括以下幾個大方面:

web瀏覽器高效能設計

高效能的網路和硬體

後台服務高效能設計

後端服務一般指使用者直接看到的遠端服務,涉及到網路硬體、邏輯計算、通訊協議和資料儲存等部分。下面我們將著重介紹高效能後台服務的設計方法和策略。

網路硬體是提供實現高效能服務的先決條件,如果網路硬體失敗,再優秀的團隊也是「巧婦難為無公尺之炊」。網際網路產品在網路硬體方面經常需要使用的高效能方案有如下幾種:

cdn加速技術。cdn加速將**的內容快取在網路邊緣(離使用者接入網路最近的地方),然後在使用者訪問**內容的時候,通過排程系統將使用者的請求路由或者引導到離使用者接入網路最近或者訪問效果最佳的快取伺服器上,由該快取伺服器為使用者提供內容服務;相對於直接訪問源站,這種方式縮短了使用者和內容之間的網路距離,從而達到加速的效果。

足夠的頻寬。頻寬應該滿足在**峰值的情況還能足夠快速的使用,所以網路頻寬應該大於峰值流量 = 峰值qps * 平均請求大小。只有在保證頻寬的情況才能實現高效能服務。

伺服器效能。伺服器效能主要從cpu、記憶體和磁碟三個方面來考慮,cpu核心數量能盡量多點,記憶體大小最好大一點,利用到磁碟儲存的話ssd會優於機械磁碟。

硬體負載均衡裝置。對於有條件的團隊可以採購硬體負載均衡裝置,加強後台服務負載均衡的能力,比如f5。

後台服務的高效能設計是網際網路產品高效能架構設計中最重要的一環,對服務整體效能起到決定性的作用。我們來看看設計高效能後台服務的方法:

1分布式快取。

一般的快取設計架構如下:使用者第一次請求應用程式時,通過儲存服務直接讀取資料,然後將資料儲存到快取系統去,使用者第二次請求的時候就直接從快取系統讀取,從而提公升讀取速度。

對於分布式快取系統可以set化部署,比如商品資料快取到set1,使用者資料快取到set2,或者一類使用者的資料快取到set1,另一類的使用者快取到set2,如下圖:

此外,也可以按集群化部署,每乙個快取服務儲存的資料都是對等的,可以對外提供同等的服務,所以外部請求需要負載均衡到不同有快取伺服器,如下圖:

set化部署的目的主要在於將不同型別的資料路由到不同的地方,好處就是可以減少不同業務資料的耦合,可以針對不同業務進行不同的優化,從而提公升整體效能。集群式部署的目的在於,提高快取系統的對外服務能力,上層業務的路由策略簡單靈活,擴縮容比較容易。

2.服務分層

在經典的三層(接入層、邏輯層和儲存層)後台服務架構中,三層的劃分的原則就是同層次的系統專注處理自己的事情。接入層專注於處理前端和後台服務的接入連通、安全認證和資料**。邏輯層專注於處理不同業務的無狀態邏輯服務。儲存層專注於處理業務資料的儲存。這樣分層的好處在於各個層次能夠依據業務特點專注於自己的事情,提高系統復用性,降低業務間的耦合性。在中小型**中三層架構的典型實現是nginx(接入層)、apache web(邏輯層)、mysql/redis(儲存層)。

3.操作非同步化

目前大型系統中普遍訊息佇列來將呼叫非同步化,不僅可以提公升系統效能還可以提公升系統的擴充套件性。對於大量的資料庫寫請求,對於資料庫的壓力很大,同時也會造成資料庫響應不及時。可以考慮使用訊息佇列,資料庫的寫請求可以直接寫入到訊息佇列,然後通過多執行緒或多程序從訊息佇列中讀取資料慢慢寫入到資料庫。訊息佇列伺服器的處理速度會遠遠快於資料庫,所以使用者在寫入操作時會感覺到很快的寫入速度。

此外,訊息佇列對於請求不均衡的系統,還具有削峰填谷的作用,將短時間內的高峰請求,逐步平攤到更長的時間裡去,從而避免短時間內大量請求壓跨系統。

4.服務拆分

服務拆分有多種說法,比如大系統小做,分布式拆分,分層結構以及目前很流行的微服務化。不過服務拆分一般來說有以下原則:

5分布式集群化

分布式集群化是指將不同的業務用集群化的方式部署到不同的機器上去,對於每乙個業務都具備大規模集群化的能力,從而提公升系統的擴充套件性和高效能。

對於無狀態化的被調服務a,在基於負載均衡的技術下,可以通過集群化部署成倍的提公升服務效能,比如a1服務的效能是1萬請求每秒,那麼部署3臺a服務機器,那麼a服務的效能就是3萬請求每秒了。

6.**優化

對於io操作的請求可以採用基於狀態機的非同步化程式設計。如下圖的請求需要業務系統呼叫三個介面才能返回響應資料,當業務系統收到請求時,將給該請求分配乙個seqid,該seqid在介面響應中也應該原封返回,然後併發三個io介面的請求包,將該seqid對應的請求上下文儲存到timer中,然後去併發處理其他請求,從而極大的提公升系統效能。

此外,高效能的程式設計模型還有多執行緒模型、多程序模型、多協程模型和事件驅動模型。

對於資料結構的設計可以採用高效的資料結構,比如典型的key-value快取系統就是基於hash的基本原理來實現的,hash表的查詢效率是o(1),效率極快。

網際網路架構設計漫談 3

中小型網際網路公司在併發量不高的情況下可以選用軟體負載均衡作為 層,他們通常和更靠外的 接入層 的硬體負載均衡器合作,為使用者提供更好的服務。軟體負載均衡的特點是併發1 2w,基於作業系統,容易上手,費用較低。要點什麼是軟體負載均衡?了解 有哪些流行的軟體負載均衡器?了解 網路負載均衡的發展與技術選...

網際網路架構

網際網路架構,主要追求的是高可用,可擴充套件 這兩個特性 在這裡做了一些個人的總結,算是給2014年的工作做個總結。推陳出新 一定要做的,死守積累會逐漸丟失人才,但凡技術公司都會不斷更新技術 kiss原則 keep it stupid優秀的 都會很簡單,簡單理解,簡單更改,能把複雜的事情做簡單是一種...

網際網路架構

使用者在同一時間內大量的訪問伺服器,tomcat伺服器併發能力為 200 250左右 jvm調優為1000 硬體條件 物理伺服器處理能力 網路頻寬 2.1 分布式計算 由多個執行緒,共同來完成某項特定的任務,拆合問題 2.2 分布式系統 distributed system 是建立在網路之上的軟體系...