互聯(lián)網架構如何實現“高并發(fā)”

      網友投稿 839 2022-05-29

      本文轉載自公眾號? 架構師之路

      一、什么是高并發(fā)

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

      高并發(fā)相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),并發(fā)用戶數等。

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

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

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

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

      二、如何提升系統(tǒng)的并發(fā)能力

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

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

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

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

      在互聯(lián)網業(yè)務發(fā)展非常迅猛的早期,如果預算不是問題,強烈建議使用“增強單機硬件性能”的方式提升系統(tǒng)并發(fā)能力,因為這個階段,公司的戰(zhàn)略往往是發(fā)展業(yè)務搶時間,而“增強單機硬件性能”往往是最快的方法。

      不管是提升單機硬件性能,還是提升單機架構性能,都有一個致命的不足:單機性能總是有極限的。所以互聯(lián)網分布式架構設計高并發(fā)終極解決方案還是水平擴展。

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

      三、常見的互聯(lián)網分層架構

      互聯(lián)網架構如何實現“高并發(fā)”

      常見互聯(lián)網分布式架構如上,分為:

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

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

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

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

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

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

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

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

      反向代理層的水平擴展

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

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

      站點層的水平擴展

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

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

      服務層的水平擴展

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

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

      數據層的水平擴展

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

      互聯(lián)網數據層常見的水平拆分方式有這么幾種,以數據庫為例:

      按照范圍水平拆分

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

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

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

      這個方案的好處是:

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

      (2)數據均衡性較好;

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

      不足是:

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

      按照哈希水平拆分

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

      user0庫,存儲偶數uid數據

      user1庫,存儲奇數uid數據

      這個方案的好處是:

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

      (2)數據均衡性較好;

      (3)請求均勻性較好;

      不足是:

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

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

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

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

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

      (3)數據水平拆分到了n個服務器上,理論上讀性能擴充了n倍,寫性能也擴充了n倍(其實遠不止n倍,因為單機的數據量變?yōu)榱嗽瓉淼?/n);

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

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

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

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

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

      五、總結

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

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

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

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

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

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

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

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

      —————END—————

      喜歡本文的朋友們,歡迎長按下圖關注訂閱號程序員小灰,收看更多精彩內容

      分布式 Nginx 彈性負載均衡 ELB

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:電商微服務實戰(zhàn)之服務監(jiān)控
      下一篇:Deduplication(重復數據刪除)技術
      相關文章
      国产精品亚洲精品日韩动图| 亚洲大成色www永久网站| 爱爱帝国亚洲一区二区三区| 亚洲一区在线视频观看| 亚洲熟妇色自偷自拍另类| 亚洲AV日韩AV永久无码免下载| 中文字幕精品亚洲无线码一区| 亚洲无码高清在线观看| 亚洲电影日韩精品| 久久人午夜亚洲精品无码区| 亚洲av日韩综合一区二区三区| 亚洲youwu永久无码精品| 亚洲妇女无套内射精| 国产亚洲人成在线播放| 国产精品亚洲专区在线播放 | 亚洲色图国产精品| 久久精品国产精品亚洲艾草网| 亚洲av永久无码精品网站| 亚洲AV综合色区无码一区爱AV| 亚洲va中文字幕无码久久不卡 | 亚洲日韩中文字幕在线播放| 亚洲欭美日韩颜射在线二| 亚洲免费人成在线视频观看| 亚洲成AV人片在| 亚洲欧洲日产国产综合网| 4444亚洲国产成人精品| 亚洲午夜电影在线观看| 亚洲三级高清免费| 亚洲国产成人AV在线播放| 日批日出水久久亚洲精品tv| 久久亚洲av无码精品浪潮| 亚洲国产另类久久久精品小说| 无码乱人伦一区二区亚洲| 亚洲精品国产专区91在线| 亚洲天堂免费在线| 精品久久久久久久久亚洲偷窥女厕| 亚洲国产香蕉人人爽成AV片久久 | 亚洲综合色区在线观看| 久久久久久久综合日本亚洲 | 亚洲精品美女久久久久9999| 亚洲高清有码中文字|