ZipkinServer存儲Cassandra數據分析

接着上篇我們來分析一下存儲在cassandra的數據結構。

對cassandra不瞭解的可以看我cassandra的博客 cassandra博客目錄

上一篇博客地址微服務應用開發進階①鏈路追蹤Zipkin

數據簡述

ZipkinServer存儲方式選擇Cassandra3,指定相應的keyspace,我們可以看到有五張表。

  --STORAGE_TYPE=cassandra3
  • select * from autocomplete_tags; 
  • select * from dependency; 
  • select * from span; 
  • select * from span_by_service; 
  • select * from trace_by_service_span; 

autocomplete_tags: 找到半天找到一份說明,用來壓測cassandra的表(浪費時間。。)

dependency:如圖明顯可以看到是保存依賴關係的一張表

 

 

 

span:zipkin基本的存儲單元,包含一次請求的信息

annotations_query  字段類型text  請求的基本信息

http.method░http.method=POST
░http.path░http.path=/demo/servicea/person/save░mvc.controller.class░mvc.controller.class=PersonController░mvc.controller.method░mvc.controller.method=save░

Kind: 字段類型text server還是client;

l_ep和 e_ep :服務名和Ip等,示例如下

 {service:'service-a',ipv4:'192.168.56.1',ipv6:NULL,port:0}   {service:NULL,ipv4:'127.0.0.1',ipv6:NULL,port:58397} 

I_service 字段類型 text serviceName

tag 字段類型 map<text,text>  具體執行信息

 

span_by_service:serviceName和方法的信息

 

trace_by_service_span:tracle和service的信息

 

貼一份es的完整的span信息參考(網上找的,侵刪):

{
  "_index": "zipkin:span-2018-08-07",
  "_type": "span",
  "_id": "AWUSkiT_lG0UQ3Osck2S",
  "_version": 1,
  "_score": 1,
  "_source": {
    "traceId": "6c3c748ff257f23b",
    "duration": 2928879,
    "localEndpoint": {
      "ipv4": "10.208.204.119",
      "port": 7900,
      "serviceName": "sleuthconsumer"
    },
    "timestamp_millis": 1533614872966,
    "kind": "SERVER",
    "name": "http:/consumer",
    "id": "6c3c748ff257f23b",
    "timestamp": 1533614872966000,
    "parentId": "6c3c748ff257f23b",
    "tags": {
      "mvc.controller.class": "HomeController",
      "mvc.controller.method": "service1",
      "lc": "hystrix",
      "spring.instance_id": "DESKTOP-CBSVPL2:sleuthConsumer:7900",
      "thread": "hystrix-sleuthConsumer2-1"
    }
  }
}

簡單分析 

查詢一個完整的鏈路發現(serviceb調用servicea),一次服務B調用服務A,產生了三個span;

第一次服務B作爲服務端,被調用接口

第二次服務B作爲客戶端,調用A的接口

第三次服務A作爲服務端,被服務B調用

所以servicec調用servicea,kafka有兩條消息,servicec發送了兩條消息

其他

如果不小心存儲到了低版本的cassandra中,那麼keyspace裏面有8張表;不小心存錯了一次,簡述如下:

## 總共8張表
select * from annotations_index;   // 
select * from autocomplete_tags;
https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/cassandra/src/test/resources/autocomplete_tags-stress.yaml
select * from dependencies;  // 應該就是依賴分析了
select * from service_name_index;// serviceName和bucket、traceId
select * from service_names; // 存儲服務名serverName
select * from service_span_name_index; //服務方法和traceId
select * from span_names; // 服務名和服務方法
select * from traces; // trace信息

 

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