直播開發(fā)APP,百變的資源隔離策略
資源隔離是直播開發(fā)APP必過的門檻,業(yè)務(wù)分類是最基本的標(biāo)準(zhǔn),每個分類都有不同的模塊負(fù)責(zé),在未進行模塊劃分時,容器中的線程數(shù)量會持續(xù)增加導(dǎo)致CPU資源耗盡,整個直播開發(fā)APP的服務(wù)對外不可用,集群環(huán)境下就會出現(xiàn)雪崩,這就很有必要讓多個依賴服務(wù)的調(diào)用分別隔離到各自的資源池內(nèi)。
?

一、線程隔離
適用于絕大多數(shù)的場景,對依賴服務(wù)的網(wǎng)絡(luò)調(diào)用timeout,TPS要求高等。
執(zhí)行依賴代碼的線程與請求線程分離,請求線程可以自由控制離開時間,也就是異步變成。線上建議線程池不要設(shè)置過大,否則大量堵塞線程有可能會拖慢服務(wù)器。
線程池隔離的優(yōu)缺點:
優(yōu)點,一個依賴調(diào)用可以給予一個線程池,這個依賴的異常不會影響其他依賴;使用線程可以完全隔離業(yè)務(wù)代碼,請求線程可以快速返回;可以完全模擬異步調(diào)用,方便異步變成
缺點,使用線程池的缺點主要是增加了計算的開銷,每一個依賴調(diào)用都會涉及到直播開發(fā)APP的隊列,調(diào)用、上下文切換,這些操作都可能在不同的線程中執(zhí)行
?

二、信號量隔離
直播開發(fā)APP用于隔離本地代碼或可快速返回的遠(yuǎn)程調(diào)用,可以直接使用信號量隔離,降低線程隔離的上下文切換開銷。線程隔離會帶來線程開銷,有些場景可能會因為用開銷換取隔離效果,反而得不償失。
使用場景:并發(fā)需求不大的依賴調(diào)用,如果并發(fā)需求量大,相應(yīng)的信號量數(shù)量就要設(shè)置的夠大,因為tomcat線程與處理線程為同一個線程,那么依賴調(diào)用就會占用過多的Tomcat線程資源,這可能會影響到直播開發(fā)APP其他服務(wù)的接收
?

針對直播開發(fā)APP的不同需求,平臺可選擇的資源隔離也有一定的局限,并不想其他方面一樣有多種方案,所以直播開發(fā)APP需要慎重選擇。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任