1.可控、可配置性
1.1場景描述
- 代碼執(zhí)行邏輯可以實(shí)時(shí)控制兔乞,當(dāng)不需要執(zhí)行或者因異常宕機(jī)等意外因素需要停止該邏輯時(shí)可以實(shí)時(shí)控制,
- 比如往es寫日志,es磁盤已滿或者es宕機(jī)時(shí) 持續(xù)提交es會(huì)導(dǎo)致源代碼邏輯不斷報(bào)錯(cuò)客情,我們可以提供外部開關(guān),通過關(guān)閉開關(guān)停止邏輯的繼續(xù)執(zhí)行
1.2實(shí)現(xiàn)方式
- 1.通過DB
- 最簡單癞己,通過數(shù)據(jù)庫如MySQL 表字段flag標(biāo)記膀斋,flag為true則代碼執(zhí)行,flag改為false則停止代碼繼續(xù)執(zhí)行
- 關(guān)鍵需要實(shí)時(shí)刷新flag字段值痹雅,保持實(shí)時(shí)性仰担,比如通過緩存
- 2.通過配置中心
- 比如Apollo
- Apollo相對DB,Apollo提供了頁面UI用于應(yīng)用配置绩社,以此取代DB中對表數(shù)據(jù)的直接修改摔蓝,對DB直接修改在生產(chǎn)環(huán)境一般是禁止的
- Apollo通過推拉的方式自動(dòng)將更改推給應(yīng)用
- 比如Apollo
2. 影響范圍可控
2.1 問題描述
- 我們知道,程序會(huì)出現(xiàn)各種意外情況從而導(dǎo)致異常愉耙,異常會(huì)中斷程序的正常執(zhí)行贮尉,有些異常我們對其要求不是很苛刻,即不需終止當(dāng)前程序繼續(xù)執(zhí)行劲阎,故我們可以對其做捕獲(catch)但不拋出異常
2.2 實(shí)現(xiàn)方式
- 1.通過catch處理
try{
......
}catch() {
//值記錄錯(cuò)誤绘盟,但不throw new Exception()等
log.error(......);
}