成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Motan+Zipkin+Brave鏈路跟蹤初探

woshicixide / 2372人閱讀

0.Why Zipkin

隨著業(yè)務(wù)發(fā)展,系統(tǒng)拆分導(dǎo)致系統(tǒng)調(diào)用鏈路愈發(fā)復(fù)雜一個(gè)前端請(qǐng)求可能最終需要調(diào)用很多次后端服務(wù)才能完成,當(dāng)整個(gè)請(qǐng)求變慢或不可用時(shí),我們是無(wú)法得知該請(qǐng)求是由某個(gè)或某些后端服務(wù)引起的,這時(shí)就需要解決如何快讀定位服務(wù)故障點(diǎn),以對(duì)癥下藥。于是就有了分布式系統(tǒng)調(diào)用跟蹤的誕生。而zipkin就是開源分布式系統(tǒng)調(diào)用跟蹤的佼佼者

zipkin基于google-Dapper的論文有興趣的可以看下

1. 部署zipkin 快速上手

上zipkin官網(wǎng)把可運(yùn)行jar包下下來(lái)
zipkin latest release

運(yùn)行
java -jar zipkin.jar

改變存儲(chǔ)方式

zipkin默認(rèn)會(huì)將鏈路跟蹤數(shù)據(jù)保存到內(nèi)存,同時(shí)也支持MySql、ElasticSearch等多種持久化插件

以MySql為例,只需在啟時(shí)加上以下參數(shù)即可:

java -jar zipkin.jar --zipkin.storage.StorageComponent=mysql
--zipkin.storage.type=mysql --zipkin.storage.mysql.host=127.0.0.1--zipkin.storage.mysql.port=3306 --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=root --zipkin.storage.mysql.db=zipkin_test
--zipkin.storage.StorageComponent=mysql #使用mysql組件
--zipkin.storage.type=mysql #使用mysql持久化
--zipkin.storage.mysql.host #mysql數(shù)據(jù)庫(kù)域名
--zipkin.storage.mysql.port=3306 #mysql數(shù)據(jù)庫(kù)端口
--zipkin.storage.mysql.username=root #數(shù)據(jù)庫(kù)賬號(hào)
--zipkin.storage.mysql.password=root #數(shù)據(jù)庫(kù)密碼
--zipkin.storage.mysql.db=zipkin_test #庫(kù)名
2.服務(wù)集成
本文使用Brave作為Tracer實(shí)現(xiàn),使用spring-cloud的小伙伴可以選擇spring-cloud-sleuth
引入依賴

引入Brave


    
        
            io.zipkin.brave
            brave-bom
            ${brave.version}
            pom
            import
        
    

    io.opentracing.brave
    brave-opentracing
    0.31.0


    io.zipkin.reporter2
    zipkin-sender-okhttp3
    2.6.1

引入filter-opentracing模塊


    com.weibo
    filter-opentracing
    
        
            io.opentracing
            opentracing-api
        
    
此處要exclud掉opentracing-api防止filter-opentracing跟brave的依賴沖突
實(shí)現(xiàn)TracerFactory
public class BraveTarcerFactory implements TracerFactory {
    private static Tracer braveTracer = BraveTracer.create(Tracing.newBuilder()
            // 設(shè)置當(dāng)前服務(wù)的服務(wù)名,需做成配置化
            .localServiceName("goods-service")
            // 此處采用OkHttpSender通過(guò)HTTP請(qǐng)求的方式發(fā)送跟蹤數(shù)據(jù),Zipkin的日志接口地址需做成配置化的
            .spanReporter(AsyncReporter.create(OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans")))
            .build());
    @SuppressWarnings("deprecation")
    @Override
    public Tracer getTracer() {
        return braveTracer;
    }
}
將TracerFactory注冊(cè)到openTracingContext
@Bean
BraveTarcerFactory tarcerFactory() {
    return new BraveTarcerFactory();
}

@Bean
OpenTracingContext openTracingContext(TracerFactory tracerFactory) {
    OpenTracingContext context = new OpenTracingContext();
    context.setTracerFactory(tracerFactory);
    return context;
}
記得注冊(cè)filter噢~
@Bean(name = "motanClientBasicConfig")
@ConditionalOnMissingBean
public BasicRefererConfigBean baseRefererConfig() {
    BasicRefererConfigBean config = new BasicRefererConfigBean();
    config.setFilter("opentracing");
    return config;
}

@Bean(name = "motanServerBasicConfig")
@ConditionalOnMissingBean
public ServerBasicConfig() {
    BasicRefererConfigBean config = new BasicRefererConfigBean();
    config.setFilter("opentracing");
    return config;
}
3. 走你!

zipkin默認(rèn)監(jiān)聽9411端口,通過(guò)瀏覽器訪問(wèn)localhost:9441即可進(jìn)入他的UI頁(yè)面,點(diǎn)擊Find Traces即可看到跟蹤結(jié)果:

4. SpringClould全家桶萬(wàn)歲!

因?yàn)轫?xiàng)目沒(méi)有用SpringCloud,自己折騰Brave的依賴真真蛋痛,想要方便還是得上SpringCloud全家桶??!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69499.html

相關(guān)文章

  • 微服務(wù)調(diào)用鏈追蹤中心搭建

    摘要:一個(gè)客戶端請(qǐng)求從發(fā)出到被響應(yīng)經(jīng)歷了哪些組件哪些微服務(wù)請(qǐng)求總時(shí)長(zhǎng)每個(gè)組件所花時(shí)長(zhǎng)等信息我們有必要了解和收集,以幫助我們定位性能瓶頸進(jìn)行性能調(diào)優(yōu),因此監(jiān)控整個(gè)微服務(wù)架構(gòu)的調(diào)用鏈?zhǔn)钟斜匾?,本文將闡述如何使用搭建微服務(wù)調(diào)用鏈追蹤中心。 showImg(https://segmentfault.com/img/remote/1460000014553707); 概述 一個(gè)完整的微服務(wù)系統(tǒng)包含...

    Pines_Cheng 評(píng)論0 收藏0
  • 利用Zipkin追蹤Mysql數(shù)據(jù)庫(kù)調(diào)用鏈

    摘要:注本文首發(fā)于公眾號(hào),可長(zhǎng)按或掃描下面的小心心來(lái)訂閱擴(kuò)展組件是在微服務(wù)調(diào)用鏈追蹤中心搭建一文中編寫的與通信的工具組件,利用其追蹤微服務(wù)調(diào)用鏈的,現(xiàn)在我們想追蹤數(shù)據(jù)庫(kù)調(diào)用鏈的話,可以擴(kuò)展一下其功能。 showImg(https://segmentfault.com/img/remote/1460000014751186); 概述 在前面:微服務(wù)調(diào)用鏈追蹤中心搭建 一文中我們利用Zipki...

    姘存按 評(píng)論0 收藏0
  • Spring Cloud 參考文檔(Spring Cloud Sleuth特性)

    摘要:介紹從版本開始,使用作為追蹤庫(kù),為方便起見,在此處嵌入了的部分文檔。具有一個(gè)上下文,其中包含標(biāo)識(shí)符,該標(biāo)識(shí)符將放置在表示分布式操作的樹中的正確位置。追蹤通常由攔截器自動(dòng)完成,在幕后,他們添加與他們?cè)诓僮髦械慕巧嚓P(guān)的標(biāo)簽和事件。 Spring Cloud Sleuth特性 將trace和span ID添加到Slf4J MDC,因此你可以在日志聚合器中從給定的trace或span提取...

    chinafgj 評(píng)論0 收藏0
  • Spring Cloud Sleuth 之Greenwich版本全攻略

    摘要:服務(wù)提供者提供一個(gè)接口,服務(wù)消費(fèi)者通過(guò)消費(fèi)服務(wù)。服務(wù)提供者服務(wù)提供者,對(duì)外提供一個(gè),并向服務(wù)注冊(cè)中心注冊(cè),這部分內(nèi)容,不再講述,見源碼。 微服務(wù)架構(gòu)是一個(gè)分布式架構(gòu),微服務(wù)系統(tǒng)按業(yè)務(wù)劃分服務(wù)單元,一個(gè)微服務(wù)系統(tǒng)往往有很多個(gè)服務(wù)單元。由于服務(wù)單元數(shù)量眾多,業(yè)務(wù)的復(fù)雜性較高,如果出現(xiàn)了錯(cuò)誤和異常,很難去定位。主要體現(xiàn)在一個(gè)請(qǐng)求可能需要調(diào)用很多個(gè)服務(wù),而內(nèi)部服務(wù)的調(diào)用復(fù)雜性決定了問(wèn)題難以定位...

    PascalXie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<