色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql查詢微秒,如何實現(xiàn)調(diào)用鏈服務(wù)端

mysql查詢微秒,如何實現(xiàn)調(diào)用鏈服務(wù)端?

分布式環(huán)境下,實現(xiàn)服務(wù)端調(diào)用鏈,市面上有很多開源的框架供選擇,不過理論模型大多都是借鑒Google Dapper論文,常見的APM(Application Performance Management)組件有:

1.Zipkin

由Twitter公司開源,開放源代碼分布式的跟蹤系統(tǒng),用于收集服務(wù)的定時數(shù)據(jù),以解決微服務(wù)架構(gòu)中的延遲問題,包括數(shù)據(jù)的收集、存儲、查找和展現(xiàn);

github地址:https://github.com/openzipkin/zipkin

2.Pinpoint

Pinpoint是一款對Java編寫的大規(guī)模分布式系統(tǒng)的APM工具,由韓國人開源的分布式跟蹤組件;

github地址:https://github.com/naver/pinpoint

3.SkyWalking

是一款國人主導(dǎo)開發(fā)的開源應(yīng)用性能監(jiān)控系統(tǒng),包括指標(biāo)監(jiān)控,分布式追蹤,分布式系統(tǒng)性能診斷;

github地址:https://github.com/apache/skywalking

4.CAT

CAT 是基于 Java 開發(fā)的實時應(yīng)用監(jiān)控平臺,為美團(tuán)點(diǎn)評提供了全面的實時監(jiān)控告警服務(wù)

github地址:https://github.com/dianping/cat

類似的還有淘寶的EgleEye,京東的Hydra等;

本人之前寫過一篇關(guān)于zipkin的快速入門文章,如下所示:

Zipkin快速開始

Zipkin是什么

Zipkin分布式跟蹤系統(tǒng);它可以幫助收集時間數(shù)據(jù),解決在microservice架構(gòu)下的延遲問題;它管理這些數(shù)據(jù)的收集和查找;Zipkin的設(shè)計是基于谷歌的Google Dapper論文。每個應(yīng)用程序向Zipkin報告定時數(shù)據(jù),Zipkin UI呈現(xiàn)了一個依賴圖表來展示多少跟蹤請求經(jīng)過了每個應(yīng)用程序;如果想解決延遲問題,可以過濾或者排序所有的跟蹤請求,并且可以查看每個跟蹤請求占總跟蹤時間的百分比。

為什么使用Zipkin

隨著業(yè)務(wù)越來越復(fù)雜,系統(tǒng)也隨之進(jìn)行各種拆分,特別是隨著微服務(wù)架構(gòu)和容器技術(shù)的興起,看似簡單的一個應(yīng)用,后臺可能有幾十個甚至幾百個服務(wù)在支撐;一個前端的請求可能需要多次的服務(wù)調(diào)用最后才能完成;當(dāng)請求變慢或者不可用時,我們無法得知是哪個后臺服務(wù)引起的,這時就需要解決如何快速定位服務(wù)故障點(diǎn),Zipkin分布式跟蹤系統(tǒng)就能很好的解決這樣的問題。

Zipkin下載和啟動

官方提供了三種方式來啟動,這里使用第二種方式來啟動;

wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'java -jar zipkin.jar

首先下載zipkin.jar,然后直接使用-jar命令運(yùn)行,要求jdk8以上版本;

基于Undertow WEB服務(wù)器,提供對外端口:9411,可以打開瀏覽器訪問http://ip:9411

詳細(xì)參考:https://zipkin.io/pages/quickstart.html

Zipkin架構(gòu)跟蹤器(Tracer)位于你的應(yīng)用程序中,并記錄發(fā)生的操作的時間和元數(shù)據(jù),提供了相應(yīng)的類庫,對用戶的使用來說是透明的,收集的跟蹤數(shù)據(jù)稱為Span;將數(shù)據(jù)發(fā)送到Zipkin的儀器化應(yīng)用程序中的組件稱為Reporter,Reporter通過幾種傳輸方式之一將追蹤數(shù)據(jù)發(fā)送到Zipkin收集器(collector),然后將跟蹤數(shù)據(jù)進(jìn)行存儲(storage),由API查詢存儲以向UI提供數(shù)據(jù)。架構(gòu)圖如下:

1.TraceZipkin使用Trace結(jié)構(gòu)表示對一次請求的跟蹤,一次請求可能由后臺的若干服務(wù)負(fù)責(zé)處理,每個服務(wù)的處理是一個Span,Span之間有依賴關(guān)系,Trace就是樹結(jié)構(gòu)的Span集合;

2.Span每個服務(wù)的處理跟蹤是一個Span,可以理解為一個基本的工作單元,包含了一些描述信息:id,parentId,name,timestamp,duration,annotations等,例如:

traceId:標(biāo)記一次請求的跟蹤,相關(guān)的Spans都有相同的traceId;

id:span id;

name:span的名稱,一般是接口方法的名稱;

parentId:可選的id,當(dāng)前Span的父Span id,通過parentId來保證Span之間的依賴關(guān)系,如果沒有parentId,表示當(dāng)前Span為根Span;

timestamp:Span創(chuàng)建時的時間戳,使用的單位是微秒(而不是毫秒),所有時間戳都有錯誤,包括主機(jī)之間的時鐘偏差以及時間服務(wù)重新設(shè)置時鐘的可能性,出于這個原因,Span應(yīng)盡可能記錄其duration;

duration:持續(xù)時間使用的單位是微秒(而不是毫秒);

annotations:注釋用于及時記錄事件;有一組核心注釋用于定義RPC請求的開始和結(jié)束;

cs:Client Send,客戶端發(fā)起請求;sr:Server Receive,服務(wù)器接受請求,開始處理;ss:Server Send,服務(wù)器完成處理,給客戶端應(yīng)答;cr:Client Receive,客戶端接受應(yīng)答從服務(wù)器;

binaryAnnotations:二進(jìn)制注釋,旨在提供有關(guān)RPC的額外信息。

3.Transport

收集的Spans必須從被追蹤的服務(wù)運(yùn)輸?shù)絑ipkin collector,有三個主要的傳輸方式:HTTP, Kafka和Scribe;

4.Components

有4個組件組成Zipkin:collector,storage,search,web UI

collector:一旦跟蹤數(shù)據(jù)到達(dá)Zipkin collector守護(hù)進(jìn)程,它將被驗證,存儲和索引,以供Zipkin收集器查找;

storage:Zipkin最初數(shù)據(jù)存儲在Cassandra上,因為Cassandra是可擴(kuò)展的,具有靈活的模式,并在Twitter中大量使用;但是這個組件可插入,除了Cassandra之外,還支持ElasticSearch和MySQL;

search:一旦數(shù)據(jù)被存儲和索引,我們需要一種方法來提取它。查詢守護(hù)進(jìn)程提供了一個簡單的JSON API來查找和檢索跟蹤,主要給Web UI使用;

web UI:創(chuàng)建了一個GUI,為查看痕跡提供了一個很好的界面;Web UI提供了一種基于服務(wù),時間和注釋查看跟蹤的方法。

實戰(zhàn)

使用Zipkin和Brave實現(xiàn)http服務(wù)調(diào)用的跟蹤,Brave 是用來裝備Java程序的類庫,提供了面向標(biāo)準(zhǔn)Servlet、Spring MVC、Http Client、JAX RS、Jersey、Resteasy 和 MySQL 等接口的裝備能力,可以通過編寫簡單的配置和代碼,讓基于這些框架構(gòu)建的應(yīng)用可以向 Zipkin 報告數(shù)據(jù)。同時 Brave 也提供了非常簡單且標(biāo)準(zhǔn)化的接口,在以上封裝無法滿足要求的時候可以方便擴(kuò)展與定制。

提供四個工程,分別對應(yīng)四個服務(wù)分別是:zipkin1,zipkin2,zipkin3,zipkin4;zipkin1通過httpclient調(diào)用zipkin2,然后zipkin2通過httpclient調(diào)用zipkin3和zipkin4,形成一個調(diào)用鏈;四個服務(wù)都是基于spring-boot來實現(xiàn),對應(yīng)的端口分別是8081,8082,8083,8084;

1.公共maven依賴庫

2.核心類ZipkinBean提供需要使用的Bean

3.核心類ZipkinController對外接口

分別啟動四個服務(wù),然后瀏覽器訪問:http://localhost:8081/service1,正常調(diào)用結(jié)果返回:

可以觀察zipkin web ui,查看服務(wù)的調(diào)用鏈: