版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著黑馬程序員:高并發(fā)解決方案一、什么是高并發(fā)高并發(fā)(HighConcurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一,它通常是指,通過設(shè)計保證系統(tǒng)能夠同時并行處理很多請求。高并發(fā)相關(guān)常用的一些指標(biāo)有響應(yīng)時間(ResponseTime),吞吐量(Throughput),每秒查詢率QPS(QueryPerSecond),并發(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)域,這個指標(biāo)和吞吐量區(qū)分的沒有這么明顯。并發(fā)用戶數(shù):同時承載正常使用系統(tǒng)功能的用戶數(shù)量。例如一個即時通訊系統(tǒng),同時在線量一定程度上代表了系統(tǒng)的并發(fā)用戶數(shù)。二、什么是秒殺秒殺場景一般會在電商網(wǎng)站舉行一些活動或者節(jié)假日在12306網(wǎng)站上搶票時遇到。對于電商網(wǎng)站中一些稀缺或者特價商品,電商網(wǎng)站一般會在約定時間點對其進(jìn)行限量銷售,因為這些商品的特殊性,會吸引大量用戶前來搶購,并且會在約定的時間點同時在秒殺頁面進(jìn)行搶購。此種場景就是非常有特點的高并發(fā)場景,如果不對流量進(jìn)行合理管控,肆意放任大流量沖擊系統(tǒng),那么將導(dǎo)致一系列的問題出現(xiàn),比如一些可用的連接資源被耗盡、分布式緩存的容量被撐爆、數(shù)據(jù)庫吞吐量降低,最終必然會導(dǎo)致系統(tǒng)產(chǎn)生雪崩效應(yīng)。一般來說,大型互聯(lián)網(wǎng)站通常采用的做法是通過擴(kuò)容、動靜分離、緩存、服務(wù)降級及限流五種常規(guī)手段來保護(hù)系統(tǒng)的穩(wěn)定運行。三、擴(kuò)容由于單臺服務(wù)器的處理能力有限,因此當(dāng)一臺服務(wù)器的處理能力接近或已超出其容量上限時,采用集群技術(shù)對服務(wù)器進(jìn)行擴(kuò)容,可以很好地提升系統(tǒng)整體的并行處理能力,在集群環(huán)境中,節(jié)點的數(shù)量越多,系統(tǒng)的并行能力和容錯性就越強(qiáng)。在無狀態(tài)服務(wù)下,擴(kuò)容可能是迄今為止效果最明顯的增加并發(fā)量的技巧之一。從擴(kuò)容方式角度講,分為垂直擴(kuò)容(scaleup)和水平擴(kuò)容(scaleout)。垂直擴(kuò)容就是增加單機(jī)處理能力,懟硬件,但硬件能力畢竟還是有限;水平擴(kuò)容說白了就是增加機(jī)器數(shù)量,懟機(jī)器,但隨著機(jī)器數(shù)量的增加,單應(yīng)用并發(fā)能力并不一定與其呈現(xiàn)線性關(guān)系,此時就可能需要進(jìn)行應(yīng)用服務(wù)化拆分了。從數(shù)據(jù)角度講,擴(kuò)容可以分為無狀態(tài)擴(kuò)容和有狀態(tài)擴(kuò)容。無狀態(tài)擴(kuò)容一般就是指我們的應(yīng)用服務(wù)器擴(kuò)容;有狀態(tài)擴(kuò)容一般是指數(shù)據(jù)存儲擴(kuò)容,要么將一份數(shù)據(jù)拆分成不同的多份,即sharding,要么就整體復(fù)制n份,即副本。sharding遇到的問題就是分片的可靠性,一般做轉(zhuǎn)移、rehash、分片副本;副本遇到的問題是一致性性,一般做一致性算法,如paxos,raft等。、動靜分離動靜分離,靜態(tài)資源請求與動態(tài)請求分離,項目中需要訪問的圖片、聲音、js/css等靜態(tài)資源需要有獨立的存放位置,便于將來實現(xiàn)靜態(tài)請求分離時直接剝離出來,比如nginx可以直接配置圖片文件直接訪問目錄,而不需要經(jīng)過tomcat。這樣tomcat就可以專注處理動態(tài)請求,操作數(shù)據(jù)庫數(shù)據(jù)處理之類的。靜態(tài)請求代理服務(wù)器性能比tomcat高很多。動靜分離是指,靜態(tài)頁面與動態(tài)頁面分開不同系統(tǒng)訪問的架構(gòu)設(shè)計方法。一般來說:靜態(tài)頁面訪問路徑短,訪問速度快,幾毫秒動態(tài)頁面訪問路徑長,訪問速度相對較慢(數(shù)據(jù)庫的訪問,網(wǎng)絡(luò)傳輸,業(yè)務(wù)邏輯計算),幾十毫秒甚至幾百毫秒,對架構(gòu)擴(kuò)展性的要求更高靜態(tài)頁面與動態(tài)頁面以不同域名區(qū)分系統(tǒng)需要將動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)分而治之,用戶對靜態(tài)數(shù)據(jù)的訪問,應(yīng)該避免請求直接落到企業(yè)的數(shù)據(jù)中心,而是應(yīng)該在CDN中獲取,以加速系統(tǒng)的響應(yīng)速度。五、緩存緩存之所以能夠提高處理速度,是因為不同設(shè)備的訪問速度存在差異。緩存的話題可以扯幾本書不帶重樣的。從CPU可以一直扯到客戶端緩存,即從最底層黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著直到扯到最特近用戶的一層,每一層都可能或可以有緩存的存在。我們這里不扯這么多,只說簡單服務(wù)端緩存?,F(xiàn)在從幾個不同角度來看一下緩存:①從效果角度。命中率越高越好嗎?10萬個店鋪數(shù)據(jù),緩存了1000個,命中率穩(wěn)定100%,那是不是說,有99000個店鋪都是長尾店鋪?緩存效果評估不能單看命中率。②從回收策略。如果把緩存當(dāng)做數(shù)據(jù)庫一樣的存儲設(shè)備去用,那就沒有回收的說法了(除非重啟或者宕機(jī),否則數(shù)據(jù)依然有效);如果只存儲熱數(shù)據(jù),那就有回收和替換的問題。回收有兩種方式,一種是空間配額,另一種是時間配額。替換也有幾種方式,LRU,F(xiàn)IFO,LFU。③從緩存使用模式角度:用戶直接操作緩存和db;用戶直接操作緩存,緩存幫助我們讀寫DbB;④從緩存分級角度。java堆內(nèi)緩存、java堆外緩存、磁盤緩存、分布式緩存,多級緩存。⑤從緩存使用角度。null穿透問題、驚群問題、緩存熱點問題、緩存一致性問題、讀寫擴(kuò)散問題。。。。。。⑥更新方式。讀更新、寫更新、異步更新。如果緩存集群涉及到異地多集群部署,再結(jié)合大數(shù)據(jù)量高并發(fā)業(yè)務(wù)場景,還會遇到很多更加復(fù)雜的問題,這里就不一列舉了。六、服務(wù)降級業(yè)務(wù)高峰期,為了保證核心服務(wù),需要停掉一些不太重要的業(yè)務(wù),eg商品評論、論壇或者粉絲積分等另外一些場景就是某些服務(wù)不可用時,又不能直接讓整個流程失敗就本地Mcok(模擬)實現(xiàn),做流程放通eg用戶登錄余額鑒權(quán)服務(wù)不能正常工作,需要做業(yè)務(wù)放通,記錄消費話單允許用戶繼續(xù)訪問,而不是返回失敗為了保證以上兩種場景的正常月服務(wù),服務(wù)需要有降級。服務(wù)降級主要包括容錯降級和屏蔽降級屏蔽降級:1)thrownull不發(fā)起遠(yuǎn)程調(diào)用,直接返回空2)throwexception不發(fā)起遠(yuǎn)程調(diào)用,直接拋出指定異常3)executebean不發(fā)起遠(yuǎn)程調(diào)用,直接執(zhí)行本地模擬接口實現(xiàn)服務(wù)降級是可逆操作,當(dāng)系統(tǒng)壓力恢復(fù)到一定值不需要降級服務(wù)時,要重新發(fā)起遠(yuǎn)程調(diào)用,服務(wù)狀態(tài)改為正常容錯降級:非核心月服務(wù)不可調(diào)用時,可以對故障服務(wù)做業(yè)務(wù)放通,保證主流程不受影響1)RPC異常:通常指超時、消息解碼異常、流控異常、系統(tǒng)擁塞保護(hù)異常等2)Service異常eg登錄校驗異常、數(shù)據(jù)庫操作失敗異常等七、限流通過對并發(fā)訪問和請求進(jìn)行限速或者一個時間窗口內(nèi)的請求進(jìn)行限速來保護(hù)系統(tǒng)的可用性,一旦達(dá)到限制速率就可以拒絕服務(wù)(友好定向到錯誤頁或告知資源沒有了),排隊或者等待(比如秒殺,評論,下單),降級(返回默認(rèn)數(shù)據(jù))。通過壓測的手段找到每個系統(tǒng)的處理峰值,然后通過設(shè)定峰值閾值,來防止當(dāng)系統(tǒng)過載時,通過拒絕處理過載的請求來保障系統(tǒng)可用性,同時也應(yīng)該根據(jù)系統(tǒng)的吞吐量,響應(yīng)時間,可用率來動態(tài)調(diào)整限流閾值。分類:限制總并發(fā)數(shù)---數(shù)據(jù)庫連接池,線程池限制瞬時并發(fā)數(shù)---nginx的limit_conn模塊,用來限制瞬時并發(fā)連接數(shù)限制時間窗口內(nèi)的平均速率---guava的RateLimiter,nginx的limit_req模塊,限制每秒平均速率其他---限制遠(yuǎn)程接口調(diào)用速率,限制MQ消費速率,另外,還可以根據(jù)網(wǎng)絡(luò)連接數(shù),網(wǎng)絡(luò)流量,CPU或內(nèi)存負(fù)載等來限流。算法:滑動窗口協(xié)議---改善吞吐量的技術(shù)漏桶一強(qiáng)制限制數(shù)據(jù)的傳輸速率,限制的流出速率令牌桶---(控制(流入)速率類型的限流算法)系統(tǒng)以恒定的速度往桶中放入令牌,如果請求需要被處理,則需要先從桶中獲取一個令牌,當(dāng)桶中沒有令牌可取,則拒絕服務(wù)。當(dāng)平時處理速率小于桶中令牌的速率,那么在突發(fā)流量時桶內(nèi)有堆積可以有效預(yù)防。1.1.1令牌桶1.1.2漏桶黑馬程序員鄭州中心編著黑馬程序員鄭州中心編著編著編著八、總結(jié)任何一個分布式系統(tǒng)的容量都會存在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房屋裝修貸款合同模板8篇
- 2025年度城市更新項目土地使用權(quán)收購協(xié)議4篇
- 二零二五版貨運車輛租賃合同示范文本(含實時跟蹤服務(wù))2篇
- 個人房屋建筑施工安全合同2024年度2篇
- 二零二五版虛擬現(xiàn)實(VR)教育培訓(xùn)服務(wù)合同
- 科學(xué)課堂上的商業(yè)思維啟蒙-小學(xué)案例分享
- 教育信息化與嵌入式技術(shù)的融合路徑
- 二零二五版?zhèn)€人獨資企業(yè)股權(quán)出售與競業(yè)禁止協(xié)議3篇
- 二零二五年度物業(yè)服務(wù)合同:某大型商場物業(yè)服務(wù)管理協(xié)議6篇
- 安裝購銷合同
- 2024年醫(yī)銷售藥銷售工作總結(jié)
- GB/T 44888-2024政務(wù)服務(wù)大廳智能化建設(shè)指南
- 2023-2024學(xué)年江西省萍鄉(xiāng)市八年級(上)期末物理試卷
- 四則混合運算100道題四年級上冊及答案
- 四川省高職單招電氣技術(shù)類《電子基礎(chǔ)》歷年考試真題試題庫(含答案)
- 2024年江西生物科技職業(yè)學(xué)院單招職業(yè)技能測試題庫帶解析答案
- 橋本甲狀腺炎-90天治療方案
- (2024年)安全注射培訓(xùn)課件
- 2024版《建設(shè)工程開工、停工、復(fù)工安全管理臺賬表格(流程圖、申請表、報審表、考核表、通知單等)》模版
- 酒店人防管理制度
- 油田酸化工藝技術(shù)
評論
0/150
提交評論