首頁>Club>
7
回覆列表
  • 1 # 昔惜憶

    微服務架構上篇

    1. grpc技術介紹

    2. grpc+protobuf+閘道器實戰

    3. etcd技術介紹

    4. 基於etcd的服務發現與註冊

    5. 基於etcd的分散式鎖實戰

    2. 微服務架構中篇

    1. k8s架構介紹


    2. 基於k8s的容器化部署


    3. 基於k8s的Deployment工作負載


    4. 基於k8s的ingress實戰


    5. 基於ingress和service實現灰度釋出


    6. 常見的服務治理策略


    3. 微服務架構下篇

    分散式鏈路追蹤實戰

    乾貨:


    什麼是APM


    什麼是Opentracing


    什麼是SpanID


    什麼是TraceID


    基於zipkin構建鏈路追蹤


    1. 什麼是APM

    APM(Application Performance Management,即應用效能管理,在分散式領域也稱為分散式跟蹤管理)對企業的應用系統進行實時監控,它是用於實現對應用程式效能管理和故障管理的系統化的解決方案。


    APM核心功能:


    服務呼叫跟蹤


    應用系統存活檢測


    監控告警


    開源APM管理工具:


    ZipKin


    PinPoint


    SkyWalking


    Prometheus


    我們這篇文章主要是講解APM的核心功能之一:服務呼叫跟蹤,用到的工具是ZipKin,本來想用Prometheus搭建一個監控平臺,想來想去比較簡單,大家直接在本地就可以搭建單機版的監控平臺。


    2. 什麼是Opentracing

    OpenTracing透過提供平臺無關、廠商無關的API,使得開發人員能夠方便的新增(或更換)追蹤系統的實現。


    不過OpenTracing並不是標準。因為CNCF不是官方標準機構,但是它的目標是致力為分散式追蹤建立更標準的API和工具。


    3. 什麼是TraceID

    一個trace代表了一個事務或者流程在(分散式)系統中的執行過程,而這個過程會有唯一ID去標識,這個唯一ID就是Trace ID,通俗解釋就是一個API請求的完整呼叫流程。


    4. 什麼是SpanID

    一個span代表在分散式系統中完成的單個工作單元,這個工作單元有唯一ID去標識,這個唯一ID就是Span ID。也包含其他span的“引用”,這允許將多個spans組合成一個完整的Trace。


    通俗解釋就是在Trace這樣一個完整呼叫的流程中,Span扮演的角色就是每次執行的一次IO或者非IO操作。所以你透過Trace找到整個鏈路,然後從鏈路中找到確定的Span,這樣就可以準確定位一次問題或者效能查詢。


    5. 其他名稱解釋

    Span tags(跨度標籤)可以理解為使用者自定義的Span註釋。便於查詢、過濾和理解跟蹤資料。


    Span logs(跨度日誌)可以記錄Span內特定時間或事件的日誌資訊。主要用於捕獲特定Span的日誌資訊以及應用程式本身的其他除錯或資訊輸出。


    SpanContext 代表跨越程序邊界,傳遞到子級Span的狀態。常在追蹤示意圖中建立上下文時使用。


    6. 案例

    執行時間的上下文,服務間的層次關係,服務間序列或並行呼叫鏈,結合以上資訊,在實際場景中我們可以透過整個系統的呼叫鏈的上下文、效能等指標資訊,一下子就能夠發現系統的痛點在哪兒。


    7. 什麼是ZipKin

    Zipkin是分散式追蹤系統。它的作用是收集解決微服務架構中的延遲問題所需的時序資料。它管理這些資料的收集和查詢。


    Zipkin的設計基於Google Dapper論文。


    8. 基於ZipKin構建鏈路追蹤

    首先在基於之前的專案之中,把server.go修改一下,讓其支援分散式鏈路追蹤。server.go:


    至此我們的grpc服務就有了鏈路追蹤功能,接下來我們演示下,啟動server.go:k8s-grpc-demo go run cmd/svr/svr.go -port 50004


    然後啟動客戶端:k8s-grpc-demo go run cmd/cli/cli.go


    我們可以看下server.go的日誌:圖片我們發現日誌完美記錄到ZipKin中,接下來我們看下ZipKin地址:圖片當我們點選RUN QUERY的時候可以看到如下:圖片當我們點選某一個Trace的時候,就進入這個Trace的整個呼叫鏈路詳情中:

    這樣我就基於gRPC + Opentracing + Zipkin的分散式鏈路追蹤系統就搭建完成了,大家下去可以自己嘗試下。

  • 中秋節和大豐收的關聯?
  • 在農村老家吃酒席,為什麼鄉親們特別喜歡和城市人同桌?