一對(duì)一直播源碼開(kāi)發(fā),利大于弊的服務(wù)降級(jí)措施
當(dāng)一對(duì)一源碼面臨流量激增場(chǎng)景,且軟硬件的優(yōu)化已達(dá)到瓶頸時(shí),為了保證服務(wù)的可用性,通常采取的手段就是將系統(tǒng)資源傾斜給核心業(yè)務(wù),降低非核心業(yè)務(wù)對(duì)系統(tǒng)資源的占用,甚至直接放棄非核心業(yè)務(wù),這就是一對(duì)一源碼中的服務(wù)降級(jí)處理。
?
一、限流降級(jí)
該降級(jí)類型主要針對(duì)一對(duì)一源碼中的用戶訪問(wèn),在開(kāi)發(fā)時(shí),提前對(duì)各個(gè)類型的請(qǐng)求設(shè)置最好的每秒查詢率閾值,對(duì)于超過(guò)閾值的請(qǐng)求就進(jìn)行直接返回處理,不再調(diào)用后續(xù)資源。通過(guò)放棄一部分用戶請(qǐng)求來(lái)保證大多數(shù)用戶的正常使用體驗(yàn)。
?
二、超時(shí)降級(jí)
該降級(jí)類型主要針對(duì)的是一對(duì)一源碼中被調(diào)用的數(shù)據(jù),在開(kāi)發(fā)時(shí),可以對(duì)調(diào)用的數(shù)據(jù)設(shè)置超時(shí)時(shí)間,當(dāng)某個(gè)非核心業(yè)務(wù)調(diào)用某數(shù)據(jù)失敗且超過(guò)訪問(wèn)時(shí)效時(shí),就對(duì)該業(yè)務(wù)進(jìn)行降級(jí)處理。
?
三、故障降級(jí)
該降級(jí)類型主要針對(duì)的是一對(duì)一源碼中的服務(wù)器,如果在遠(yuǎn)程調(diào)用中服務(wù)器出現(xiàn)了網(wǎng)絡(luò)故障、DNS故障等,則可以進(jìn)行降級(jí)處理,通過(guò)返回兜底數(shù)據(jù)或靜態(tài)頁(yè)面的方式優(yōu)化用戶體驗(yàn)。
當(dāng)一對(duì)一源碼中的服務(wù)器出現(xiàn)故障,可以通過(guò)自動(dòng)重試機(jī)制恢復(fù)服務(wù),包含客戶端重試、API調(diào)用重試、Web端重試等。在實(shí)現(xiàn)自動(dòng)重試機(jī)制時(shí),要注意設(shè)置重試次數(shù)和數(shù)據(jù)冪等處理。
?
四、前端降級(jí)
主要是指當(dāng)一對(duì)一源碼出現(xiàn)問(wèn)題時(shí),將請(qǐng)求隔離至離用戶最近的位置,避免無(wú)效鏈路的訪問(wèn),然后等到后端服務(wù)部分或完全不可用時(shí),可以通過(guò)使用兜底數(shù)據(jù)或本地緩存,為用戶提供服務(wù),甚至還可以做一些假數(shù)據(jù)應(yīng)用在對(duì)數(shù)據(jù)一致性要求不高的場(chǎng)景中。
在一對(duì)一源碼開(kāi)發(fā)中,前端降級(jí)包含JS降級(jí)、接入層降級(jí)、應(yīng)用層降級(jí)等:
1、JS降級(jí)主要控制的是頁(yè)面功能的降級(jí)。
2、接入層降級(jí)主要控制的請(qǐng)求入口的降級(jí)。
3、應(yīng)用層降級(jí)主要控制的是一對(duì)一源碼中業(yè)務(wù)的降級(jí)。
?
五、片段降級(jí)
主要是指當(dāng)一對(duì)一源碼進(jìn)行內(nèi)容加載時(shí),將沒(méi)有請(qǐng)求到的部分內(nèi)容進(jìn)行片段降級(jí)處理,通過(guò)不加載該部分內(nèi)容的方式,保證系統(tǒng)的可用性,優(yōu)化用戶的使用體驗(yàn)。
?
其實(shí)服務(wù)降級(jí)是一種保證一對(duì)一源碼可用性的兜底措施,盡管經(jīng)過(guò)服務(wù)降級(jí)保證了核心業(yè)務(wù)的可用性,但仍舊犧牲了部分非核心業(yè)務(wù),也就是同樣會(huì)影響一小部分用戶的使用體驗(yàn)。不過(guò),總的來(lái)說(shuō),在一對(duì)一源碼中實(shí)現(xiàn)服務(wù)降級(jí)還是利大于弊。
?
?
?