Dorado之鏈路追蹤trace-cat

    Dorado是美團點評的一個RPC框架,可以在github上看到其源碼。然後看到其中的鏈路追蹤模塊,在這記錄下。

    如下圖1,這個模塊裏面只有一個類,這個類繼承了AbstractInvokeTrace,在框架裏面爲了擴展性,所以幾乎都會使用抽象,這裏也是,這個類在core模塊裏面。圖1中在resources下加入這個類下實現文件,這是JDK的SPI。

                                                                      圖1

    如下圖2所示,trace模塊在dorado-core模塊,而InvokeTrace是最抽象的基類,AbstractInvokeTrace是抽象類,實現公共的實現

                                                                    圖2

    如下所示,定義了一些基礎的方法,實現則由子抽象類和子實現類來實現,所以最重要的實現放在AbstractInvokeTrace和CatInvokeTrace中。

    List-1

@SPI
public interface InvokeTrace {

    String getName();

    void init(String appkey);

    void clientSend(TraceParam traceParam, RpcInvocation invocation);

    void clientRecv(TraceParam traceParam, RpcInvocation invocation);

    void serverRecv(TraceParam traceParam, RpcInvocation invocation);

    void serverSend(TraceParam traceParam, RpcInvocation invocation);
}

    List-1中有註解@SPI是因爲這個接口的實現類,如果需要使用,都必須使用JDK的SPI的方式來。

    很多和PingCAT的調用都是在CatInvokeTrace中實現,而AbstractInvokeTrace則是較爲抽象,並沒有涉及PingCAT的代碼。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章