當(dāng)系統(tǒng)遇到大的流量,為了能讓系統(tǒng)健康的運(yùn)行哑诊,我們會采取一些措施群扶,上節(jié)課講到的限流是一種方式,拒絕掉一些流量镀裤,今天講另一種方式竞阐,降級,它的本質(zhì)是在有限的資源下暑劝,處理盡量多的事情骆莹。
為了實現(xiàn)這個目的,需要在某些方面做犧牲担猛。主要包含以下三個方面
1 降低一致性
流程的一致性汪疮,從原來的強(qiáng)一致性變?yōu)樽罱K一致性,如電商下單的過程毁习,先生成訂單,扣減庫存的操作做成異步卖丸,最后再通知用戶下單是否成功纺且。
數(shù)據(jù)的一致性,原先數(shù)據(jù)從數(shù)據(jù)庫中讀取稍浆,降級開始后载碌,從緩存中讀數(shù)據(jù)。
2 停止沒必要的功能衅枫,在大流量的沖擊下嫁艇,可以暫時把不太重要的功能停掉,比如商品的評論功能弦撩,待流程恢復(fù)正常后再開啟停止的功能步咪。
3 簡化功能,對一些功能進(jìn)行裁剪益楼,提供一個精簡版的實現(xiàn)猾漫,例如商品展示頁面,不展示商品的評論數(shù)據(jù)感凤,與該商品關(guān)聯(lián)的推薦商品的展示先去掉等等悯周。在不影響最重要的最核心的業(yè)務(wù)流程情況下,適當(dāng)?shù)娜コ恍└郊拥臉I(yè)務(wù)陪竿。
以上是降級的思路禽翼。下面總結(jié)下在設(shè)計降級時的幾個要點。
1 梳理業(yè)務(wù),分清業(yè)務(wù)的重要程度
2 定義好降級的觸發(fā)條件闰挡,如響應(yīng)時間過長锐墙,失敗請求過多等等。
3 降級的開關(guān)可以設(shè)置手動開啟解总,或者可由上游系統(tǒng)控制贮匕,比如在協(xié)議頭部加入降級標(biāo)志。