中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

發布時間:2020-08-10 20:07:11 來源:ITPUB博客 閱讀:123 作者:恩墨學院 欄目:關系型數據庫

架構設計 | 互聯網架構“高并發”是什么?



一、什么是高并發


高并發(High Concurrency)是互聯網分布式系統架構設計中必須考慮的因素之一,它通常是指:通過設計保證系統能夠同時并行處理很多請求。


高并發相關常用的一些指標:


響應時間(Response Time):系統對請求做出響應的時間。例如系統處理一個HTTP請求需要200ms,這個200ms就是系統的響應時間。


吞吐量(Throughput):單位時間內處理的請求數量。


QPS(Quety Per Second):每秒響應請求數。在互聯網領域,這個指標和吞吐量區分的沒有這么明顯。


并發用戶數:同時承載正常使用系統功能的用戶數量。例如一個即時通訊系統,同時在線量一定程度上代表了系統的并發用戶數。


二、如何提升系統的并發能力


互聯網分布式架構設計,提高系統并發能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。


垂直擴展


提升單機處理能力。垂直擴展的方式又有兩種:

(1)增強單機硬件性能,例如:增加CPU核數如32核,升級更好的網卡如萬兆,升級更好的硬盤如SSD,擴充硬盤容量如2T,擴充系統內存如128G;

(2)提升單機架構性能,例如:使用Cache來減少IO次數,使用異步來增加單服務吞吐量,使用無鎖數據結構來減少響應時間;


在互聯網業務發展非常迅猛的早期,如果預算不是問題,強烈建議使用“增強單機硬件性能”的方式提升系統并發能力,因為這個階段,公司的戰略往往是發展業務搶時間,而“增強單機硬件性能”往往是最快的方法。不管是提升單機硬件性能,還是提升單機架構性能,都有一個致命的不足:單機性能總是有極限的。所以互聯網分布式架構設計高并發終極解決方案還是水平擴展


水平擴展


只要增加服務器數量,就能線性擴充系統性能。水平擴展對系統架構設計是有要求的,如何在架構各層進行可水平擴展的設計,以及互聯網公司架構各層常見的水平擴展實踐,是本文重點討論的內容。


三、常見的互聯網分層架構


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

常見互聯網分布式架構如上,分為:   

                                    

(1)客戶端層:典型調用方是瀏覽器browser或者手機應用APP

(2)反向代理層:系統入口,反向代理

(3)站點應用層:實現核心應用邏輯,返回html或者json

(4)服務層:如果實現了服務化,就有這一層

(5)數據-緩存層:緩存加速訪問存儲

(6)數據-數據庫層:數據庫固化數據存儲


整個系統各層次的水平擴展,又分別是如何實施的呢?


四、分層水平擴展架構實踐


反向代理層的水平擴展


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

反向代理層的水平擴展,是通過“DNS輪詢”實現的:dns-server對于一個域名配置了多個解析ip,每次DNS解析請求來訪問dns-server,會輪詢返回這些ip。

當nginx成為瓶頸的時候,只要增加服務器數量,新增nginx服務的部署,增加一個外網ip,就能擴展反向代理層的性能,做到理論上的無限高并發。


站點層的水平擴展


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

站點層的水平擴展,是通過“nginx”實現的。通過修改nginx.conf,可以設置多個web后端。

當web后端成為瓶頸的時候,只要增加服務器數量,新增web服務的部署,在nginx配置中配置上新的web后端,就能擴展站點層的性能,做到理論上的無限高并發。


服務層的水平擴展


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

服務層的水平擴展,是通過“服務連接池”實現的。

站點層通過RPC-client調用下游的服務層RPC-server時,RPC-client中的連接池會建立與下游服務多個連接,當服務成為瓶頸的時候,只要增加服務器數量,新增服務部署,在RPC-client處建立新的下游服務連接,就能擴展服務層性能,做到理論上的無限高并發。如果需要優雅的進行服務層自動擴容,這里可能需要配置中心里服務自動發現功能的支持。


數據層的水平擴展


在數據量很大的情況下,數據層(緩存,數據庫)涉及數據的水平擴展,將原本存儲在一臺服務器上的數據(緩存,數據庫)水平拆分到不同服務器上去,以達到擴充系統性能的目的。


 互聯網數據層常見的水平拆分方式有這么幾種 :


按照范圍水平拆分


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

每一個數據服務,存儲一定范圍的數據,上圖為例:

user0庫,存儲uid范圍1-1kw

user1庫,存儲uid范圍1kw-2kw


好處是:


(1)規則簡單,service只需判斷一下uid范圍就能路由到對應的存儲服務;

(2)數據均衡性較好;

(3)比較容易擴展,可以隨時加一個uid[2kw,3kw]的數據服務;


不足是:


請求的負載不一定均衡,一般來說,新注冊的用戶會比老用戶更活躍,大range的服務請求壓力會更大;


按照哈希水平拆分


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

每一個數據庫,存儲某個key值hash后的部分數據,上圖為例:

user0庫,存儲偶數uid數據

user1庫,存儲奇數uid數據


好處是:


(1)規則簡單,service只需對uid進行hash能路由到對應的存儲服務;

(2)數據均衡性較好;

(3)請求均勻性較好;


不足是:


不容易擴展,擴展一個數據服務,hash方法改變時候,可能需要進行數據遷移;


【恩墨學院】架構設計 | 互聯網架構“高并發”是什么?

這里需要注意的是,通過水平拆分來擴充系統性能,與主從同步讀寫分離來擴充數據庫性能的方式有本質的不同。


 通過水平拆分擴展數據庫性能:


(1)每個服務器上存儲的數據量是總量的1/n,所以單機的性能也會有提升;

(2)n個服務器上的數據沒有交集,那個服務器上數據的并集是數據的全集;

(3)數據水平拆分到了n個服務器上,理論上讀性能擴充了n倍,寫性能也擴充了n倍(其實遠不止n倍,因為單機的數據量變為了原來的1/n);


通過主從同步讀寫分離擴展數據庫性能:


(1)每個服務器上存儲的數據量是和總量相同;

(2)n個服務器上的數據都一樣,都是全集;

(3)理論上讀性能擴充了n倍,寫仍然是單點,寫性能不變;


緩存層的水平拆分和數據庫層的水平拆分類似,也是以范圍拆分和哈希拆分的方式居多,就不再展開。


五、總結


高并發(High Concurrency)是互聯網分布式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時并行處理很多請求


提高系統并發能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。前者垂直擴展可以通過提升單機硬件性能,或者提升單機架構性能,來提高并發性,但單機性能總是有極限的,互聯網分布式架構設計高并發終極解決方案還是后者:水平擴展。


互聯網分層架構中,各層次水平擴展的實踐又有所不同:

(1)反向代理層可以通過“DNS輪詢”的方式來進行水平擴展;

(2)站點層可以通過nginx來進行水平擴展;

(3)服務層可以通過服務連接池來進行水平擴展;

(4)數據庫可以按照數據范圍,或者數據哈希的方式來進行水平擴展;


各層實施水平擴展后,能夠通過增加服務器數量的方式來提升系統的性能,做到理論上的性能無限。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌兰察布市| 张家口市| 金华市| 萨迦县| 侯马市| 连州市| 嘉黎县| 清苑县| 亚东县| 星座| 内丘县| 莒南县| 张家界市| 仲巴县| 南皮县| 平江县| 商丘市| 蕉岭县| 南宁市| 长寿区| 昭觉县| 盐边县| 邵武市| 汨罗市| 洛浦县| 南康市| 额尔古纳市| 北辰区| 乐昌市| 绥中县| 会东县| 天门市| 赣州市| 宁远县| 囊谦县| 固阳县| 蒲江县| 柳林县| 嘉善县| 德化县| 都昌县|