自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

究竟啥才是互聯(lián)網(wǎng)架構(gòu)“高并發(fā)”

開發(fā) 開發(fā)工具
本文主要介紹什么是互聯(lián)網(wǎng)架構(gòu)“高并發(fā)”、如何提升系統(tǒng)的并發(fā)能力、常見的互聯(lián)網(wǎng)分層架構(gòu)和整個系統(tǒng)各層次水平擴展的實施等。

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

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

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

  • 響應(yīng)時間:系統(tǒng)對請求做出響應(yīng)的時間。例如系統(tǒng)處理一個HTTP請求需要200ms,這個200ms就是系統(tǒng)的響應(yīng)時間。
  • 吞吐量:單位時間內(nèi)處理的請求數(shù)量。
  • QPS:每秒響應(yīng)請求數(shù)。在互聯(lián)網(wǎng)領(lǐng)域,這個指標和吞吐量區(qū)分的沒有這么明顯。
  • 并發(fā)用戶數(shù):同時承載正常使用系統(tǒng)功能的用戶數(shù)量。例如一個即時通訊系統(tǒng),同時在線量一定程度上代表了系統(tǒng)的并發(fā)用戶數(shù)。

[[181350]]

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

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

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

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

(2)提升單機架構(gòu)性能,例如:使用Cache來減少IO次數(shù),使用異步來增加單服務(wù)吞吐量,使用無鎖數(shù)據(jù)結(jié)構(gòu)來減少響應(yīng)時間;

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

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

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

三、常見的互聯(lián)網(wǎng)分層架構(gòu)

常見互聯(lián)網(wǎng)分布式架構(gòu)

常見互聯(lián)網(wǎng)分布式架構(gòu)如上,分為:

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

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

(3)站點應(yīng)用層:實現(xiàn)核心應(yīng)用邏輯,返回html或者json

(4)服務(wù)層:如果實現(xiàn)了服務(wù)化,就有這一層

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

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

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

四、分層水平擴展架構(gòu)實踐

1. 反向代理層的水平擴展

反向代理層的水平擴展

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

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

2. 站點層的水平擴展

站點層的水平擴展

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

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

3. 服務(wù)層的水平擴展

 服務(wù)層的水平擴展

服務(wù)層的水平擴展,是通過“服務(wù)連接池”實現(xiàn)的。

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

4. 數(shù)據(jù)層的水平擴展

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

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

(1)按照范圍水平拆分

數(shù)據(jù)層的水平擴展按照范圍水平拆分

每一個數(shù)據(jù)服務(wù),存儲一定范圍的數(shù)據(jù),上圖為例:

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

這個方案的好處是:

  • 規(guī)則簡單,service只需判斷一下uid范圍就能路由到對應(yīng)的存儲服務(wù);
  • 數(shù)據(jù)均衡性較好;
  • 比較容易擴展,可以隨時加一個uid[2kw,3kw]的數(shù)據(jù)服務(wù);

不足是:

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

(2)按照哈希水平拆分

數(shù)據(jù)層的水平擴展按照哈希水平拆分

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

  • user0庫,存儲偶數(shù)uid數(shù)據(jù)
  • user1庫,存儲奇數(shù)uid數(shù)據(jù)

這個方案的好處是:

  • 規(guī)則簡單,service只需對uid進行hash能路由到對應(yīng)的存儲服務(wù);
  • 數(shù)據(jù)均衡性較好;
  • 請求均勻性較好;

不足是:

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

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

通過水平拆分擴展數(shù)據(jù)庫性能:

  • 每個服務(wù)器上存儲的數(shù)據(jù)量是總量的1/n,所以單機的性能也會有提升;
  • n個服務(wù)器上的數(shù)據(jù)沒有交集,那個服務(wù)器上數(shù)據(jù)的并集是數(shù)據(jù)的全集;
  • 數(shù)據(jù)水平拆分到了n個服務(wù)器上,理論上讀性能擴充了n倍,寫性能也擴充了n倍(其實遠不止n倍,因為單機的數(shù)據(jù)量變?yōu)榱嗽瓉淼?/n);

通過主從同步讀寫分離擴展數(shù)據(jù)庫性能:

  • 每個服務(wù)器上存儲的數(shù)據(jù)量是和總量相同;
  • n個服務(wù)器上的數(shù)據(jù)都一樣,都是全集;
  • 理論上讀性能擴充了n倍,寫仍然是單點,寫性能不變;

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

五、總結(jié)

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

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

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

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

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

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

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

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

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2016-12-06 11:56:13

互聯(lián)網(wǎng)架構(gòu)高可用

2019-03-18 07:08:53

高可用互聯(lián)網(wǎng)架構(gòu)分布式

2019-04-10 14:10:02

高并發(fā)分布式系統(tǒng)架構(gòu)

2018-11-07 06:35:50

互聯(lián)網(wǎng)服務(wù)化高可用架構(gòu)

2019-12-26 07:39:36

互聯(lián)網(wǎng)架構(gòu)ip

2023-10-31 17:56:02

高并發(fā)設(shè)計架構(gòu)

2017-12-26 15:52:31

MQ互聯(lián)網(wǎng)耦合

2016-09-22 15:01:59

微服務(wù)互聯(lián)網(wǎng)架構(gòu)

2018-01-01 06:41:44

耦合互聯(lián)網(wǎng)架構(gòu)配置中心

2019-11-28 16:09:29

架構(gòu)模板存儲

2022-06-09 08:01:43

秒殺系統(tǒng)互聯(lián)網(wǎng)架構(gòu)

2016-09-22 15:55:39

互聯(lián)網(wǎng)架構(gòu)容量設(shè)計

2019-05-13 10:30:34

互聯(lián)網(wǎng)架構(gòu)容量

2017-10-27 14:52:31

互聯(lián)網(wǎng)高可用架構(gòu)高可用

2012-09-19 15:43:21

云時代

2024-05-13 11:43:26

開發(fā)層服務(wù)層ActiveMQ

2015-07-22 09:39:27

企商象云互聯(lián)網(wǎng)

2021-02-19 20:38:01

互聯(lián)網(wǎng)衛(wèi)星系統(tǒng)

2018-11-23 10:05:27

互聯(lián)網(wǎng)金融行業(yè)互聯(lián)網(wǎng)金融

2017-05-19 10:01:53

互聯(lián)網(wǎng)
點贊
收藏

51CTO技術(shù)棧公眾號