真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

zipkin的原理是什么

這篇文章主要介紹“zipkin的原理是什么”,在日常操作中,相信很多人在zipkin的原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”zipkin的原理是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)是專業(yè)的開魯網(wǎng)站建設(shè)公司,開魯接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行開魯網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

通過zipkin的表結(jié)構(gòu),理解dapper;trace把多個(gè)span進(jìn)行串接;
形成依賴鏈路。

結(jié)構(gòu)

zipkin主要包括:collector、storage、search、webui;
zipkin collector會(huì)對(duì)一個(gè)到來的被trace的數(shù)據(jù)(span)進(jìn)行驗(yàn)證、存儲(chǔ)并設(shè)置索引。
其中storage包括:內(nèi)存、MySQL、es、cassandra。

數(shù)據(jù)結(jié)構(gòu)

Annotation:用于定位一個(gè)request的開始和結(jié)束,cs/sr/ss/cr含有額外的信息,比如說時(shí)間點(diǎn),當(dāng)這個(gè)annotation被記錄了,這個(gè)RPC也被認(rèn)為完成了。

     cs:Client Start,表示客戶端發(fā)起請(qǐng)求 ;一個(gè)span的開始;
     cr:Client Received,表示客戶端獲取到服務(wù)端返回信息;一個(gè)span的結(jié)束

     sr:Server Receive,表示服務(wù)端收到請(qǐng)求
     ss:Server Send,表示服務(wù)端完成處理,并將結(jié)果發(fā)送給客戶端

    sr-cs:網(wǎng)絡(luò)延遲
    ss-sr:邏輯處理時(shí)間
    cr-cs:整個(gè)流程時(shí)間

Span:一個(gè)請(qǐng)求(包含一組Annotation和BinaryAnnotation);它是基本工作單元,一次鏈路調(diào)用(可以是RPC,DB等沒有特定的限制)創(chuàng)建一個(gè)span,通過一個(gè)64位ID標(biāo)識(shí)它。span通過還有其他的數(shù)據(jù),例如描述信息,時(shí)間戳,key-value對(duì)的(Annotation)tag信息,parent-id等,其中parent-id 可以表示span調(diào)用鏈路來源,通俗的理解span就是一次請(qǐng)求信息。

Trace:類似于樹結(jié)構(gòu)的Span集合,表示一條調(diào)用鏈路,存在唯一標(biāo)識(shí)
Traces are built by collecting all Spans that share a traceId。通過traceId、spanId和parentId,被收集到的span會(huì)匯聚成一個(gè)tree,從而提供出一個(gè)request的整體流程。

流程圖

zipkin的原理是什么

image.png

表設(shè)計(jì)

1.span表

CREATE TABLE IF NOT EXISTS zipkin_spans (
  `trace_id` BIGINT NOT NULL,
  `id` BIGINT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `parent_id` BIGINT,
  `debug` BIT(1),
  `start_ts` BIGINT 
   COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement 
   TTL',
  `duration` BIGINT 
COMMENT 'Span.duration(): micros used for minDuration and maxDuration query'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;

一些約束

ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id`, `id`) 
COMMENT 'ignore insert on duplicate';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id`, `id`) 
COMMENT 'for joining with zipkin_annotations';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id`) 
COMMENT 'for getTracesByIds';
ALTER TABLE zipkin_spans ADD INDEX(`name`) 
COMMENT 'for getTraces and getSpanNames';
ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) 
COMMENT 'for getTraces ordering and range';
CREATE TABLE IF NOT EXISTS zipkin_annotations (
  `trace_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',
  `span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',
  `a_key` VARCHAR(255) NOT NULL 
            COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',
  `a_value` BLOB 
            COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',
  `a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',
  `a_timestamp` BIGINT 
          COMMENT 'Used to implement TTL; Annotation.timestamp or         
          zipkin_spans.timestamp',
  `endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_ipv6` BINARY(16) 
        COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',
  `endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_service_name` VARCHAR(255) COMMENT 'Null when 
          Binary/Annotation.endpoint is null'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id`, `span_id`, `a_key`, `a_timestamp`)
 COMMENT 'Ignore insert on duplicate';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`)
 COMMENT 'for joining with zipkin_spans';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`) COMMENT 'for getTraces/ByIds';
ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) 
COMMENT 'for getTraces and getServiceNames';
ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces';

3.依賴關(guān)系

CREATE TABLE IF NOT EXISTS zipkin_dependencies (
  `day` DATE NOT NULL,
  `parent` VARCHAR(255) NOT NULL,
  `child` VARCHAR(255) NOT NULL,
  `call_count` BIGINT
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;

ALTER TABLE zipkin_dependencies ADD UNIQUE KEY(`day`, `parent`, `child`);

到此,關(guān)于“zipkin的原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


分享題目:zipkin的原理是什么
本文來源:http://weahome.cn/article/poopde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部