![黑馬程序員:高并發(fā)解決方案_第1頁(yè)](http://file4.renrendoc.com/view/9ebc42555bdadde0ee6b1a6ddd5b003d/9ebc42555bdadde0ee6b1a6ddd5b003d1.gif)
![黑馬程序員:高并發(fā)解決方案_第2頁(yè)](http://file4.renrendoc.com/view/9ebc42555bdadde0ee6b1a6ddd5b003d/9ebc42555bdadde0ee6b1a6ddd5b003d2.gif)
![黑馬程序員:高并發(fā)解決方案_第3頁(yè)](http://file4.renrendoc.com/view/9ebc42555bdadde0ee6b1a6ddd5b003d/9ebc42555bdadde0ee6b1a6ddd5b003d3.gif)
![黑馬程序員:高并發(fā)解決方案_第4頁(yè)](http://file4.renrendoc.com/view/9ebc42555bdadde0ee6b1a6ddd5b003d/9ebc42555bdadde0ee6b1a6ddd5b003d4.gif)
![黑馬程序員:高并發(fā)解決方案_第5頁(yè)](http://file4.renrendoc.com/view/9ebc42555bdadde0ee6b1a6ddd5b003d/9ebc42555bdadde0ee6b1a6ddd5b003d5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
黑馬程序員鄭州中心編著黑馬程序員:高并發(fā)解決方案一、什么是高并發(fā)?高并發(fā)(HighConcurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過(guò)設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并行處理很多請(qǐng)求。高并發(fā)相關(guān)常用的一些指標(biāo)有響應(yīng)時(shí)間(ResponseTime),吞吐量(Throughput),每秒查詢(xún)率QPS(QueryPerSecond),并發(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í)間。吞吐量:?jiǎn)挝粫r(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í)在線(xiàn)量一定程度上代表了系統(tǒng)的并發(fā)用戶(hù)數(shù)。二、什么是秒殺?秒殺場(chǎng)景一般會(huì)在電商網(wǎng)站舉行一些活動(dòng)或者節(jié)假日在12306網(wǎng)站上搶票時(shí)遇到。對(duì)于電商網(wǎng)站中一些稀缺或者特價(jià)商品,電商網(wǎng)站一般會(huì)在約定時(shí)間點(diǎn)對(duì)其進(jìn)行限量銷(xiāo)售,因?yàn)檫@些商品的特殊性,會(huì)吸引大量用戶(hù)前來(lái)?yè)屬?gòu),并且會(huì)在約定的時(shí)間點(diǎn)同時(shí)在秒殺頁(yè)面進(jìn)行搶購(gòu)。?此種場(chǎng)景就是非常有特點(diǎn)的高并發(fā)場(chǎng)景,如果不對(duì)流量進(jìn)行合理管控,肆意放任大流量沖擊系統(tǒng),那么將導(dǎo)致一系列的問(wèn)題出現(xiàn),比如一些可用的連接資源被耗盡、分布式緩存的容量被撐爆、數(shù)據(jù)庫(kù)吞吐量降低,最終必然會(huì)導(dǎo)致系統(tǒng)產(chǎn)生雪崩效應(yīng)。?一般來(lái)說(shuō),大型互聯(lián)網(wǎng)站通常采用的做法是通過(guò)擴(kuò)容、動(dòng)靜分離、緩存、服務(wù)降級(jí)及限流五種常規(guī)手段來(lái)保護(hù)系統(tǒng)的穩(wěn)定運(yùn)行。?三、擴(kuò)容?由于單臺(tái)服務(wù)器的處理能力有限,因此當(dāng)一臺(tái)服務(wù)器的處理能力接近或已超出其容量上限時(shí),采用集群技術(shù)對(duì)服務(wù)器進(jìn)行擴(kuò)容,可以很好地提升系統(tǒng)整體的并行處理能力,在集群環(huán)境中,節(jié)點(diǎn)的數(shù)量越多,系統(tǒng)的并行能力和容錯(cuò)性就越強(qiáng)。?在無(wú)狀態(tài)服務(wù)下,擴(kuò)容可能是迄今為止效果最明顯的增加并發(fā)量的技巧之一。?從擴(kuò)容方式角度講,分為垂直擴(kuò)容(scaleup)和水平擴(kuò)容(scaleout)。垂直擴(kuò)容就是增加單機(jī)處理能力,懟硬件,但硬件能力畢竟還是有限;水平擴(kuò)容說(shuō)白了就是增加機(jī)器數(shù)量,懟機(jī)器,但隨著機(jī)器數(shù)量的增加,單應(yīng)用并發(fā)能力并不一定與其呈現(xiàn)線(xiàn)性關(guān)系,此時(shí)就可能需要進(jìn)行應(yīng)用服務(wù)化拆分了。?從數(shù)據(jù)角度講,擴(kuò)容可以分為無(wú)狀態(tài)擴(kuò)容和有狀態(tài)擴(kuò)容。無(wú)狀態(tài)擴(kuò)容一般就是指我們的應(yīng)用服務(wù)器擴(kuò)容;有狀態(tài)擴(kuò)容一般是指數(shù)據(jù)存儲(chǔ)擴(kuò)容,要么將一份數(shù)據(jù)拆分成不同的多份,即sharding,要么就整體復(fù)制n份,即副本。sharding遇直到扯到最特近用戶(hù)的一層,每一層都可能或可以有緩存的存在。我們這里不扯這么多,只說(shuō)簡(jiǎn)單服務(wù)端緩存?,F(xiàn)在從幾個(gè)不同角度來(lái)看一下緩存:①?gòu)男Ч嵌?。命中率越高越好嗎?0萬(wàn)個(gè)店鋪數(shù)據(jù),緩存了1000個(gè),命中率穩(wěn)定100%,那是不是說(shuō),有99000個(gè)店鋪都是長(zhǎng)尾店鋪?緩存效果評(píng)估不能單看命中率。②從回收策略。如果把緩存當(dāng)做數(shù)據(jù)庫(kù)一樣的存儲(chǔ)設(shè)備去用,那就沒(méi)有回收的說(shuō)法了(除非重啟或者宕機(jī),否則數(shù)據(jù)依然有效);如果只存儲(chǔ)熱數(shù)據(jù),那就有回收和替換的問(wèn)題?;厥沼袃煞N方式,一種是空間配額,另一種是時(shí)間配額。替換也有幾種方式,LRU,F(xiàn)IFO,LFU。③從緩存使用模式角度:用戶(hù)直接操作緩存和db;用戶(hù)直接操作緩存,緩存幫助我們讀寫(xiě)DbB;④從緩存分級(jí)角度。java堆內(nèi)緩存、java堆外緩存、磁盤(pán)緩存、分布式緩存,多級(jí)緩存。⑤從緩存使用角度。null穿透問(wèn)題、驚群?jiǎn)栴}、緩存熱點(diǎn)問(wèn)題、緩存一致性問(wèn)題、讀寫(xiě)擴(kuò)散問(wèn)題。。。。。。⑥更新方式。讀更新、寫(xiě)更新、異步更新。如果緩存集群涉及到異地多集群部署,再結(jié)合大數(shù)據(jù)量高并發(fā)業(yè)務(wù)場(chǎng)景,還會(huì)遇到很多更加復(fù)雜的問(wèn)題,這里就不一一列舉了。六、服務(wù)降級(jí)?業(yè)務(wù)高峰期,為了保證核心服務(wù),需要停掉一些不太重要的業(yè)務(wù),eg商品評(píng)論、論壇或者粉絲積分等另外一些場(chǎng)景就是某些服務(wù)不可用時(shí),又不能直接讓整個(gè)流程失敗就本地Mcok(模擬)實(shí)現(xiàn),做流程放通eg用戶(hù)登錄余額鑒權(quán)服務(wù)不能正常工作,需要做業(yè)務(wù)放通,記錄消費(fèi)話(huà)單允許用戶(hù)繼續(xù)訪(fǎng)問(wèn),而不是返回失敗為了保證以上兩種場(chǎng)景的正常服務(wù),服務(wù)需要有降級(jí)。服務(wù)降級(jí)主要包括容錯(cuò)降級(jí)和屏蔽降級(jí)屏蔽降級(jí):?1)thrownull不發(fā)起遠(yuǎn)程調(diào)用,直接返回空?2)throwexception不發(fā)起遠(yuǎn)程調(diào)用,直接拋出指定異常?3)executebean不發(fā)起遠(yuǎn)程調(diào)用,直接執(zhí)行本地模擬接口實(shí)現(xiàn)服務(wù)降級(jí)是可逆操作,當(dāng)系統(tǒng)壓力恢復(fù)到一定值不需要降級(jí)服務(wù)時(shí),要重新發(fā)起遠(yuǎn)程調(diào)用,服務(wù)狀態(tài)改為正常容錯(cuò)降級(jí):非核心服務(wù)不可調(diào)用時(shí),可以對(duì)故障服務(wù)做業(yè)務(wù)放通,保證主流程不受影響?1)RPC異常:通常指超時(shí)、消息解碼異常、流控異常、系統(tǒng)擁塞保護(hù)異常等?2)Service異常eg登錄校驗(yàn)異常、數(shù)據(jù)庫(kù)操作失敗異常等七、限流?通過(guò)對(duì)并發(fā)訪(fǎng)問(wèn)和請(qǐng)求進(jìn)行限速或者一個(gè)時(shí)間窗口內(nèi)的請(qǐng)求進(jìn)行限速來(lái)保護(hù)系統(tǒng)的可用性,一旦達(dá)到限制速率就可以拒絕服務(wù)(友好定向到錯(cuò)誤頁(yè)或告知資源沒(méi)有了),排隊(duì)或者等待(比如秒殺,評(píng)論,下單),降級(jí)(返回默認(rèn)數(shù)據(jù))。?通過(guò)壓測(cè)的手段找到每個(gè)系統(tǒng)的處理峰值,然后通過(guò)設(shè)定峰值閾值,來(lái)防止當(dāng)系統(tǒng)過(guò)載時(shí),通過(guò)拒絕處理過(guò)載的請(qǐng)求來(lái)保障系統(tǒng)可用性,同時(shí)也應(yīng)該根據(jù)系統(tǒng)的吞吐量,響應(yīng)時(shí)間,可用率來(lái)動(dòng)態(tài)調(diào)整限流閾值。分類(lèi):?限制總并發(fā)數(shù)---數(shù)據(jù)庫(kù)連接池,線(xiàn)程池?限制瞬時(shí)并發(fā)數(shù)---nginx的limit_conn模塊,用來(lái)限制瞬時(shí)并發(fā)連接數(shù)?限制時(shí)間窗口內(nèi)的平均速率---guava的RateLimiter,nginx的limit_req模塊,限制每秒平均速率?其他---限制遠(yuǎn)程接口調(diào)用速率,限制MQ消費(fèi)速率,另外,還可以根據(jù)網(wǎng)絡(luò)連接數(shù),網(wǎng)絡(luò)流量,CPU或內(nèi)存負(fù)載等來(lái)限流。算法:滑動(dòng)窗口協(xié)議---改善吞吐量的技術(shù)漏桶---強(qiáng)制限制數(shù)據(jù)的傳輸速率,限制的流出速率?令牌桶---(控制(流入)速率類(lèi)型的限流算法)系統(tǒng)以恒定的速度往桶中放入令牌,如果請(qǐng)求需要被處理,則需要先從桶中獲取一個(gè)令牌,當(dāng)桶中沒(méi)有令牌可取,則拒絕服務(wù)。當(dāng)平時(shí)處理速率小于桶中令牌的速率,那么在突發(fā)流量時(shí)桶內(nèi)有堆積可以有效預(yù)防。令牌桶漏桶八、總結(jié)?任何一個(gè)分布式系統(tǒng)的容量都會(huì)存在上限,哪怕天貓這種級(jí)別的網(wǎng)站也不例外。一旦用戶(hù)流量過(guò)載,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品推廣與營(yíng)銷(xiāo)方案總結(jié)
- 私人心理咨詢(xún)服務(wù)免責(zé)協(xié)議書(shū)
- 廢舊物資購(gòu)銷(xiāo)合同
- 股份制企業(yè)合同審查文書(shū)模板
- Unit 1 You and Me 大單元整體教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版英語(yǔ)七年級(jí)上冊(cè)
- 第3章開(kāi)源硬件創(chuàng)意設(shè)計(jì)3.4審查并優(yōu)化方案 -高中教學(xué)同步《信息技術(shù)人工-開(kāi)源硬件項(xiàng)目設(shè)計(jì)》教學(xué)設(shè)計(jì)(人教-中圖版2019)
- 川教版信息技術(shù)(2019)五年級(jí)上冊(cè)第三單元 圖形化編程之聰明的角色 2 偵測(cè)太空垃圾-教學(xué)設(shè)計(jì)
- 20《美麗的小興安嶺》教學(xué)設(shè)計(jì)-2024-2025學(xué)年三年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版(五四制)
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第四章 細(xì)胞的生命歷程 課時(shí)1 細(xì)胞的增殖
- 第六單元課題3二氧化碳的實(shí)驗(yàn)室制取教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版上冊(cè)
- 《檔案管理培訓(xùn)》課件
- 氧化還原反應(yīng)配平專(zhuān)項(xiàng)訓(xùn)練
- 2025年中考復(fù)習(xí)必背外研版初中英語(yǔ)單詞詞匯(精校打?。?/a>
- 全國(guó)教育科學(xué)規(guī)劃課題申報(bào)書(shū):02.《鑄牢中華民族共同體意識(shí)的學(xué)校教育研究》
- GB/T 44679-2024叉車(chē)禁用與報(bào)廢技術(shù)規(guī)范
- 《船舶精通急救》全套教學(xué)課件
- 什么叫績(jī)效考勤管理制度
- 外墻噴漆施工合同協(xié)議書(shū)
- 《積極心理學(xué)(第3版)》 課件 第2章 心理流暢體驗(yàn)
- 軟件系統(tǒng)平臺(tái)項(xiàng)目實(shí)施方案
- 陜西延長(zhǎng)石油集團(tuán)礦業(yè)公司招聘筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論