日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

【分布式架构】“高并发” -- 详解

發(fā)布時(shí)間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【分布式架构】“高并发” -- 详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

? ? ? ?高并發(fā)相關(guān)常用的一些指標(biāo)有

? ? ? ?1響應(yīng)時(shí)間(Response Time),

? ? ? ?2吞吐量(Throughput)

? ? ? ?3每秒查詢(xún)率QPS(Query Per Second),

? ? ? ?4并發(fā)用戶(hù)數(shù)等。

?

? ? ? ?響應(yīng)時(shí)間:系統(tǒng)對(duì)請(qǐng)求做出響應(yīng)的時(shí)間。

? ? ? ?例如系統(tǒng)處理一個(gè)HTTP請(qǐng)求需要200ms,這個(gè)200ms就是系統(tǒng)的響應(yīng)時(shí)間。

? ? ? ?吞吐量:單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)量。

? ? ? ?QPS:每秒響應(yīng)請(qǐng)求數(shù)。在互聯(lián)網(wǎng)領(lǐng)域,這個(gè)指標(biāo)和吞吐量區(qū)分的沒(méi)有這么明顯。

? ? ? ?并發(fā)用戶(hù)數(shù):同時(shí)承載正常使用系統(tǒng)功能的用戶(hù)數(shù)量。

? ? ? ?例如一個(gè)即時(shí)通訊系統(tǒng),同時(shí)在線量一定程度上代表了系統(tǒng)的并發(fā)用戶(hù)數(shù)。

?

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

? ? ? ?互聯(lián)網(wǎng)分布式架構(gòu)設(shè)計(jì),提高系統(tǒng)并發(fā)能力的方式.

? ? ? ?方法論上主要有兩種:垂直擴(kuò)展(Scale Up)與水平擴(kuò)展(Scale Out)。

? ? ? ?垂直擴(kuò)展:提升單機(jī)處理能力。垂直擴(kuò)展的方式又有兩種:

? ? ? ?(1)???增強(qiáng)單機(jī)硬件性能。

? ? ? ? 例如:增加CPU核數(shù)如32核,升級(jí)更好的網(wǎng)卡如萬(wàn)兆,升級(jí)更好的硬盤(pán)如SSD,擴(kuò)充硬盤(pán)容量如2T,擴(kuò)充系統(tǒng)內(nèi)存如128G;

? ? ? ? (2)???提升單機(jī)架構(gòu)性能。

? ? ? ? 例如:使用Cache來(lái)減少I(mǎi)O次數(shù),使用異步來(lái)增加單服務(wù)吞吐量,使用無(wú)鎖數(shù)據(jù)結(jié)構(gòu)來(lái)減少響應(yīng)時(shí)間;在互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展非常迅猛的早期,如果預(yù)算不是問(wèn)題,強(qiáng)烈建議使用“增強(qiáng)單機(jī)硬件性能”的方式提升系統(tǒng)并發(fā)能力,因?yàn)檫@個(gè)階段,公司的戰(zhàn)略往往是發(fā)展業(yè)務(wù)搶時(shí)間,而“增強(qiáng)單機(jī)硬件性能”往往是最快的方法。

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

?

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

?

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

? ? ? ??

?

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

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

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

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

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

? ? ? (5)數(shù)據(jù)-緩存層:緩存加速訪問(wèn)存儲(chǔ)

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

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

?

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

? ? ? ?反向代理層的水平擴(kuò)展

? ? ? ?反向代理層的水平擴(kuò)展,是通過(guò)“DNS輪詢(xún)”實(shí)現(xiàn)的:

? ? ? ?1dns-server對(duì)于一個(gè)域名配置了多個(gè)解析ip,

? ? ? ?2每次DNS解析請(qǐng)求來(lái)訪問(wèn)dns-server,會(huì)輪詢(xún)返回這些ip。

? ? ? ?3當(dāng)nginx成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增nginx服務(wù)的部署,

? ? ? ?4增加一個(gè)外網(wǎng)ip,就能擴(kuò)展反向代理層的性能,做到理論上的無(wú)限高并發(fā)。

?

? ? ? ? 站點(diǎn)層的水平擴(kuò)展

? ? ? ?站點(diǎn)層的水平擴(kuò)展,是通過(guò)“nginx”實(shí)現(xiàn)的。通過(guò)修改nginx.conf,可以設(shè)置多個(gè)web后端。當(dāng)web后端成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增web服務(wù)的部署,在nginx配置中配置上新的web后端,就能擴(kuò)展站點(diǎn)層的性能,做到理論上的無(wú)限高并發(fā)。

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

? ? ? ? ??

? ? ? ? 服務(wù)層的水平擴(kuò)展,是通過(guò)“服務(wù)連接池”實(shí)現(xiàn)的。站點(diǎn)層通過(guò)RPC-client調(diào)用下游的服務(wù)層RPC-server時(shí),RPC-client中的連接池會(huì)建立與下游服務(wù)多個(gè)連接,當(dāng)服務(wù)成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增服務(wù)部署,在RPC-client處建立新的下游服務(wù)連接,就能擴(kuò)展服務(wù)層性能,做到理論上的無(wú)限高并發(fā)。

? ? ? ? 如果需要優(yōu)雅的進(jìn)行服務(wù)層自動(dòng)擴(kuò)容,這里可能需要配置中心服務(wù)自動(dòng)發(fā)現(xiàn)功能的支持。

? ? ? 數(shù)據(jù)層的水平擴(kuò)展

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

?

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

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

? ? ? ? ?user0庫(kù),存儲(chǔ)uid范圍1-1kw

? ? ? ? ?user1庫(kù),存儲(chǔ)uid范圍1kw-2kw

? ? ? ? 這個(gè)方案的好處是:

? ? ? ?(1)規(guī)則簡(jiǎn)單,service只需判斷一下uid范圍就能路由到對(duì)應(yīng)的存儲(chǔ)服務(wù);

? ? ? ?(2)數(shù)據(jù)均衡性較好;

? ? ? ?(3)比較容易擴(kuò)展,可以隨時(shí)加一個(gè)uid[2kw,3kw]的數(shù)據(jù)服務(wù);

? ? ? ? 不足是:

? ? ? ?(1)請(qǐng)求的負(fù)載不一定均衡,一般來(lái)說(shuō),新注冊(cè)的用戶(hù)會(huì)比老用戶(hù)更活躍,大range的服務(wù)請(qǐng)求壓力會(huì)更大;

?

? ? ? ? 按照哈希水平拆分

? ? ? ? 每一個(gè)數(shù)據(jù)庫(kù),存儲(chǔ)某個(gè)key值hash后的部分?jǐn)?shù)據(jù),上圖為例:

? ? ? ? user0庫(kù),存儲(chǔ)偶數(shù)uid數(shù)據(jù)

? ? ? ? user1庫(kù),存儲(chǔ)奇數(shù)uid數(shù)據(jù)

? ? ? ? 這個(gè)方案的好處是:

? ? ? (1)規(guī)則簡(jiǎn)單,service只需對(duì)uid進(jìn)行hash能路由到對(duì)應(yīng)的存儲(chǔ)服務(wù);

? ? ? (2)數(shù)據(jù)均衡性較好;

? ? ? (3)請(qǐng)求均勻性較好;

? ? ? ?不足是:

? ? ? (1)不容易擴(kuò)展,擴(kuò)展一個(gè)數(shù)據(jù)服務(wù),hash方法改變時(shí)候,可能需要進(jìn)行數(shù)據(jù)遷移;

?

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

? ? ? ? 通過(guò)水平拆分?jǐn)U展數(shù)據(jù)庫(kù)性能:

? ? ? ?(1)每個(gè)服務(wù)器上存儲(chǔ)的數(shù)據(jù)量是總量的1/n,所以單機(jī)的性能也會(huì)有提升;

? ? ? ?(2)n個(gè)服務(wù)器上的數(shù)據(jù)沒(méi)有交集,那個(gè)服務(wù)器上數(shù)據(jù)的并集是數(shù)據(jù)的全集;

? ? ? ?(3)數(shù)據(jù)水平拆分到了n個(gè)服務(wù)器上,理論上讀性能擴(kuò)充了n倍,寫(xiě)性能也擴(kuò)充了n倍(其實(shí)遠(yuǎn)不止n倍,因?yàn)閱螜C(jī)的數(shù)據(jù)量變?yōu)榱嗽瓉?lái)的1/n);

? ? ? ? 通過(guò)主從同步讀寫(xiě)分離擴(kuò)展數(shù)據(jù)庫(kù)性能:

? ? ? ?(1)每個(gè)服務(wù)器上存儲(chǔ)的數(shù)據(jù)量是和總量相同;

? ? ? ?(2)n個(gè)服務(wù)器上的數(shù)據(jù)都一樣,都是全集;

? ? ? ?(3)理論上讀性能擴(kuò)充了n倍,寫(xiě)仍然是單點(diǎn),寫(xiě)性能不變;

??

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

?

五、總結(jié)

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

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

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

? ? ? (1)反向代理層可以通過(guò)“DNS輪詢(xún)”的方式來(lái)進(jìn)行水平擴(kuò)展;

? ? ? (2)站點(diǎn)層可以通過(guò)nginx來(lái)進(jìn)行水平擴(kuò)展;

? ? ? (3)服務(wù)層可以通過(guò)服務(wù)連接池來(lái)進(jìn)行水平擴(kuò)展;

? ? ? (4)數(shù)據(jù)庫(kù)可以按照數(shù)據(jù)范圍,或者數(shù)據(jù)哈希的方式來(lái)進(jìn)行水平擴(kuò)展;

? ? ? ?各層實(shí)施水平擴(kuò)展后,能夠通過(guò)增加服務(wù)器數(shù)量的方式來(lái)提升系統(tǒng)的性能,做到理論上的性能無(wú)限。

轉(zhuǎn)載于:https://www.cnblogs.com/DreamRecorder/p/9944730.html

總結(jié)

以上是生活随笔為你收集整理的【分布式架构】“高并发” -- 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。