-
低消耗:全鏈路跟蹤中介軟體在接入後應該做到對線上服務的影響足夠小,甚至可以忽略不計;
-
低侵入:不應該讓各線上服務顯示感受到跟蹤API的存在,至少不應該顯示侵入業務程式碼內部,也就是不能出現在類中的import處;
-
可開關:全鏈路跟蹤中介軟體的呼叫鏈引數傳遞及日誌落地時機要做到線上開關,以避免重大Bug影響線上服務;
-
延展性:全鏈路跟蹤中介軟體至少在未來幾年的服務體量和叢集規模都應該能完全把控住,主要針對的是儲存元件。
-
呼叫鏈TraceId串列
-
呼叫鏈串列
-
依賴分析圖
-
節點詳情頁
-
人為呼叫:呼叫鏈源頭可追溯至javax.servlet.Filter上
-
系統定時呼叫:呼叫鏈源頭可追溯至定時任務的執行點(基於我們自研的分散式定時任務產品)
-
OkHttp2.x、OkHttp3.x(HTTP)
-
Apache HttpClient(HTTP)
-
Spring RestTemplate(HTTP)
-
REST介面(HTTP)
-
RabbitMQ Send(MQ)
-
RabbitMQ Recv(MQ)
-
Dubbo Provider(RPC)
-
Dubbo Consumer(RPC)
-
RMI Server(RPC)
-
RMI Client(RPC)
-
非同步呼叫時,執行緒池內的執行緒是獲取不到與主執行緒關聯的物件資料的,需要用使用阿裡開源的一個類庫(transmittable-thread-local)對原有執行緒池進行包裝:
-
OkHttp2.x、OkHttp3.x(HTTP)
-
Apache HttpClient(HTTP)
-
Spring RestTemplate(HTTP)
-
REST介面(HTTP)
-
RabbitMQ Send(MQ)
-
RabbitMQ Recv(MQ)
-
Dubbo(RPC)
-
RMI Server(RPC)
-
BeanPostProcessor(Spring的擴充套件點實現隱式改造)
-
OkHttp3註冊方式調整(OkHttp3的攔截器鏈List是不可能更改的):
-
Apached HttpClient註冊方式調整(Apached HttpClient的攔截器鏈沒有公開新增的方法):
-
Dubbo服務改造(Dubbo的Filter介面沒有納入Spring體系)