欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud分布式鏈路跟蹤的方法

 更新時(shí)間:2019年03月25日 09:09:57   作者:StanleyBlogs  
這篇文章主要介紹了SpringCloud分布式鏈路跟蹤的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

注:作者使用IDEA + Gradle

注:需要有一定的java SpringBoot and SSM+Springcloud基礎(chǔ)

程序測試錯(cuò)誤追責(zé)

我舉個(gè)例子,我現(xiàn)在要做一個(gè)電商項(xiàng)目,項(xiàng)目里面有一個(gè)購買模塊,那我這邊可能要執(zhí)行一個(gè)代碼,比如減庫存之類的東西,那我兩個(gè)服務(wù)不就是要相互調(diào)用嘛,我自身是一個(gè)服務(wù),我現(xiàn)在要調(diào)用減庫存這個(gè)服務(wù);

你調(diào)用它,你知道它一定能執(zhí)行成功嗎?肯定是不一定;

比如說,我現(xiàn)在要執(zhí)行一個(gè)減庫存的代碼,我調(diào)用這個(gè)方法會(huì)進(jìn)行庫存的一個(gè)更改,這個(gè)庫存減少成功還好,萬一要是失敗就會(huì)出現(xiàn)一個(gè)問題就是,做前端的來調(diào)用你,但是你出錯(cuò)了,這時(shí)你也不知道你這個(gè)減庫存到底有沒有執(zhí)行成功,兩個(gè)人就會(huì)相互排斥問題,不知道到底是你前端調(diào)用的問題,還是我后端代碼寫的有毛病,反正測試工程師就只知道庫存沒有減;

解決方案就是,記日志;

記錄日志

首先,springboot里面有集成好的日志組件,我們僅需拿來用即可,接下來,我將會(huì)分幾個(gè)步驟來教大家如何在記日志;

1.首先我們打開一個(gè)編寫好的子項(xiàng)目(服務(wù)),在yml配置文件中進(jìn)行一些簡單的配置👇:

logging:
  path: 日志打印輸出路徑
  level:
  該服務(wù)的全包名: #級(jí)別【info級(jí)別最好,我用的是debug級(jí)別】

2.在我們的Controllerc引入Logge接口👇:

 public static Logger logger = LoggerFactory.getLogger(#當(dāng)前類);

注意:引入Logger時(shí),它有許多個(gè)記日志的版本,java統(tǒng)一了成了slf4j,所以導(dǎo)入包的時(shí)候一定注意不要導(dǎo)錯(cuò)!

2.導(dǎo)入成功并且后需要把當(dāng)前類加入到日志中👇:

3.開始調(diào)用日志

在控制層接口中調(diào)用日志

logger.debug("執(zhí)行了查詢,開始調(diào)用project-solr的服務(wù)");

這里的話就簡單的記錄一下日志,將來方便追錯(cuò);

4.運(yùn)行程序,查看是日志是否能被記錄

首先運(yùn)行注冊(cè)中心,再啟動(dòng)自己寫好的服務(wù)朝注冊(cè)中心注冊(cè)一下

查看注冊(cè)中心:

發(fā)現(xiàn)solr注冊(cè)進(jìn)來了,注冊(cè)中心我這邊用的是集群負(fù)載均衡,三個(gè)注冊(cè)中心相互注冊(cè),在后面可以清楚的看到我另外三個(gè)注冊(cè)中心的端口號(hào)

5.調(diào)用solr服務(wù),查看日志是否輸出并打印👇:

點(diǎn)擊去查看一下👇:

總中我我們可以清楚的看到,從開始,到結(jié)束,就是中間打印了一些其他的東西,這個(gè)先不去深究它;

小結(jié)

在工作中,別人的代碼到底能不能執(zhí)行成功,你是保證不了的,唯有記日志,來證明自己的代碼沒有問題,從上我選擇在調(diào)用前打印日志,在調(diào)用后也打印了日志,說明我這個(gè)接口沒有問題,但是,你調(diào)用你的solr服務(wù),出現(xiàn)了問題,那是你的問題,跟我調(diào)用無關(guān),我正常調(diào)用沒問題,至于后面庫存沒有減少,那,就是你的問題;

給solr添加日志記錄

剛才我是以調(diào)用對(duì)方服務(wù)的方式來記錄日志,保證自己正常調(diào)用,那么,我們solr也應(yīng)該記錄一下日志,因?yàn)?,它也保證不了調(diào)用solr的人,是否存在調(diào)用問題,所以,我要保證我solr正常執(zhí)行,為了證明我是沒有問題的,所以我們也給solr這個(gè)服務(wù)記錄日志;

很簡單,跟上面的一樣,我直接復(fù)制粘貼即可,但是這次稍微的改一下;

logging:
  path: C:\Users\30901\Desktop\log\project_solr
  level:
  com.lh.project.solr: info

注意:級(jí)別前面的包名需要更改成當(dāng)前服務(wù)的包名,這次我在日志輸出路徑中多加了一個(gè)當(dāng)前服務(wù)名,這樣打印出的日志就能分別出誰打印出來的;

注意,日志文件是自動(dòng)生成出來的;

我們把項(xiàng)目跑起來,試試,看看日志能不能被成功輸出👇:

我們也可以清楚的看見,日志信息在這里打印的非常清楚;

這個(gè)是它自動(dòng)生成的日志文件:

分布式鏈路追蹤

首先需要引入依賴:

compile 'org.springframework.cloud:spring-cloud-starter-sleuth'

根據(jù)以上的例子,兩個(gè)服務(wù)均需要用到用到分布式鏈路跟蹤,所以我們兩個(gè)兩個(gè)都配置一下;

加完所需依賴后,我們?cè)龠M(jìn)行日志的輸出,看看有什么區(qū)別👇:

區(qū)別就能發(fā)現(xiàn),前面多出來了一串亂碼,跟上面對(duì)比,就能看出來,那么具體是什么意思呢?

首先打印出來的日志有兩個(gè),一個(gè)是調(diào)用方,一個(gè)是被調(diào)用方,我們打開這兩個(gè)日志來看一下:

這個(gè)時(shí)候,假設(shè),以上一個(gè)請(qǐng)求,其中一個(gè)有問題,那么,你就可以把這個(gè)有問題的這個(gè)亂碼跟被調(diào)用方里面的日志進(jìn)行匹配,如果查詢到了,那么說明這兩個(gè)日志,對(duì)應(yīng)的是同一個(gè)請(qǐng)求,咱們就可以通過這個(gè)亂碼就可以判斷,這兩個(gè)服務(wù)調(diào)用的到底是不是屬于同一個(gè)請(qǐng)求;

這個(gè)亂碼分成三段:

第一高段請(qǐng)求方與調(diào)用方式一樣的,因?yàn)樗鼈儗儆谕粋€(gè)鏈路上,所以一樣,因此,我們可以通過第一段代碼,來跟蹤;

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis查詢語句結(jié)果集的總結(jié)大全

    Mybatis查詢語句結(jié)果集的總結(jié)大全

    這篇文章主要給大家總結(jié)介紹了關(guān)于Mybatis查詢語句結(jié)果集的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Spring?Boot讀取配置文件內(nèi)容的3種方式(@Value、Environment和@ConfigurationProperties)

    Spring?Boot讀取配置文件內(nèi)容的3種方式(@Value、Environment和@ConfigurationP

    工作中經(jīng)常會(huì)有一些參數(shù)需要配置,同時(shí)在代碼里面需要用到,所有就需要配置類讀取,然后在使用的時(shí)候注入該類進(jìn)行獲取相關(guān)參數(shù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot讀取配置文件內(nèi)容的3種方式,需要的朋友可以參考下
    2023-01-01
  • Spring高級(jí)之注解@PropertySource的原理

    Spring高級(jí)之注解@PropertySource的原理

    這篇文章主要介紹了Spring高級(jí)之注解@PropertySource的原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JAVA序列化和反序列化的底層實(shí)現(xiàn)原理解析

    JAVA序列化和反序列化的底層實(shí)現(xiàn)原理解析

    這篇文章主要介紹了JAVA序列化和反序列化的底層實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解Java信號(hào)量Semaphore的原理及使用

    詳解Java信號(hào)量Semaphore的原理及使用

    Semaphore來自于JDK1.5的JUC包,直譯過來就是信號(hào)量,被作為一種多線程并發(fā)控制工具來使用。本文將詳解其原理與使用方法,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 基于Java實(shí)現(xiàn)簡單的身材計(jì)算程序

    基于Java實(shí)現(xiàn)簡單的身材計(jì)算程序

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)簡單的身材計(jì)算程序,可以計(jì)算身體的體脂率以及BMI數(shù)值等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • Java字符串split方法的坑及解決

    Java字符串split方法的坑及解決

    這篇文章主要介紹了Java字符串split方法的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java的jdbc簡單封裝方法

    java的jdbc簡單封裝方法

    本篇文章是對(duì)java的jdbc簡單封裝方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2015-07-07
  • 淺析Java多線程同步synchronized

    淺析Java多線程同步synchronized

    本篇文章給大家詳細(xì)分析了Java多線程同步synchronized的相關(guān)知識(shí)點(diǎn),需要的讀者們可以參考學(xué)習(xí)下。
    2018-02-02
  • 淺談javaSE GUI (Action事件)

    淺談javaSE GUI (Action事件)

    下面小編就為大家?guī)硪黄獪\談javaSE GUI (Action事件)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06

最新評(píng)論