1. 代碼零侵入
可以通過(guò)切面或者代理的方式實(shí)現(xiàn)
2.低損耗
使用靜態(tài)代理的方式實(shí)現(xiàn),減少運(yùn)行期的性能損耗。
- 靜態(tài)代理實(shí)現(xiàn)
在編譯期做切面代碼注入,如 AspectJ - 動(dòng)態(tài)代理實(shí)現(xiàn)
在運(yùn)行期做切面代碼注入,如 Spring AOP
3.減少日志存儲(chǔ)量,采用采樣&功能開(kāi)關(guān)
通過(guò)日志采樣的方式實(shí)現(xiàn),減少日志存儲(chǔ)量,比如:只采集 10% 的請(qǐng)求,“requestId%10==0”
無(wú)論是自研還是開(kāi)源,再接入業(yè)務(wù)系統(tǒng)時(shí),提供功能特性開(kāi)關(guān),當(dāng)測(cè)試和排查錯(cuò)誤時(shí)才打開(kāi)
4.更加完整的鏈路獲取
如果requesId 能夠從客戶端生成獲取,通過(guò) header 傳遞給服務(wù)端,則獲取一條更加完整的調(diào)用鏈路,可知整條調(diào)用鏈?zhǔn)菑哪膫€(gè)客戶端發(fā)起的~