日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

調(diào)用鏈跟蹤 Spring Cloud Sleuth+Zipkin

 碼農(nóng)9527 2021-11-19

 大家都知道分布式系統(tǒng)是非常龐大的,隨著功能的增加微服務(wù)之間的調(diào)用變得越來越多,形成非常復(fù)雜的分布式調(diào)用鏈路。一旦某個部分出現(xiàn)問題,我們應(yīng)該如何快速定位呢?這時就可以使用Spring Cloud Sleuth+Zipkin進(jìn)行調(diào)用鏈跟蹤 。

  業(yè)界內(nèi)對于調(diào)用鏈跟蹤的產(chǎn)品有很多,Google 2010年發(fā)表了"Dapper - a Large-Scale Distributed Systems Tracing Infrastructure"論文介紹他們的分布式系統(tǒng)跟蹤技術(shù),國內(nèi)具有代表性的的分布式跟蹤系統(tǒng)有:

  淘寶-鷹眼-Eagleeye、京東-Hydra、大眾點評-cat、新浪-watchman、唯品會-microscope ... ...

  但是從全世界范圍來看用的較多的還是Twitter-Zipkin。

  Sleuth

  官網(wǎng)鏈接:

  https:///projects/spring-cloud

  Spring Cloud Sleuth 為 Spring Cloud 實現(xiàn)了一個分布式跟蹤解決方案,大量借鑒了Dapper、Zipkin 和 HTrace。對于大多數(shù)用戶來說,Sleuth 是不可見的。

  三大核心概念

  服務(wù)跟蹤理論中存在有跟蹤單元的概念,而跟蹤單元中涉及三個重要概念:trace、span和annotation。

  trace:跟蹤單元是從客戶端所發(fā)起的請求抵達(dá)被跟蹤系統(tǒng)的邊界開始,到被跟蹤系統(tǒng)向客戶返回響應(yīng)為止的過程,這個過程稱為一個trace。

  span:每個trace中會調(diào)用若干個服務(wù),為了記錄調(diào)用了哪些服務(wù),以及每次調(diào)用所消 耗的時間等信息,在每次調(diào)用服務(wù)時,埋入一個調(diào)用記錄,這樣兩個調(diào)用記錄之間的區(qū)域稱為一個span。

  一個Trace由若干個有序的Span組成。

  annotation:用于及時記錄事件的實體,表示一個事件發(fā)生的時間點。這些實體本身僅僅是為了原理敘述的方便,對于 Spring Cloud Sleuth本身并沒有什么必要性。這樣的實體有多個,常用的有四個:

  cs:Client Send,表示客戶端發(fā)送請求的時間點。

  sr,Server Receive,表示服務(wù)端接收到請求的時間點。

  ss:Server Send,表示服務(wù)端發(fā)送響應(yīng)的時間點。

  cr:Client Receive,表示客戶端接收到服務(wù)端響應(yīng)的時間點。

  日志采樣

  只要在工程中添加了Spring Cloud Sleuth依賴, 那么工程在啟動與運行過程中就會自動生成很多的日志。Sleuth 會為日志信息打上收集標(biāo)記,需要收集的設(shè)置為true,不需要收集的設(shè)置為false。這個標(biāo)記可以通過在代碼中添加自己的日志信息看到。

  Sleuth對于這些日志支持抽樣收集,即并不是所有日志都會上傳到日志收集服務(wù)器,日志收集標(biāo)記就起這個作用。默認(rèn)的采樣比例為: 0.1.即 10%。在配置文件中可以修改該值。

  (若設(shè)置為 1 則表示全部采集,即100%。Sleuth默認(rèn)采用的是水塘抽樣算法。)

  使用SpringCloudSleuth生成日志

  復(fù)制provider-8081工程,重命名為sleuth-provider-8081.

  導(dǎo)入sleuth依賴

<!--sleuth 依賴-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>12345復(fù)制代碼類型:[java]

  在petsContrller.java中添加日志注解,并在getHandler方法中打印日志。

@Slf4j
@RestController
@RequestMapping("/pets")
public class PetsController {
... ...
    @GetMapping("/get/{id}")
    public Pets getHandler(@PathVariable("id") Integer id) {
        log.info("生產(chǎn)者的處理器方法被調(diào)用");
        return petsService.getPetsById(id);
    }
... ...
}123456789101112復(fù)制代碼類型:[java]

  將配置文件中有關(guān)日志的配置全部注釋掉!!否則將無法查看演示效果。

  復(fù)制consumer-8080工程,重命名為sleuth-consumer-8080.

  同樣導(dǎo)入sleuth依賴。

<!--sleuth 依賴-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>12345復(fù)制代碼類型:[java]

  在petsContrller.java中添加日志注解,并在getHandler方法中打印日志。

@Slf4j
@RestController
@RequestMapping("/pets")
public class PetsController {
... ...
    @GetMapping("/get/{id}")
    public Pets getByIdHandler(@PathVariable("id") int id) {
        log.info("消費者的處理器方法被調(diào)用");
        // 消費者連接提供者端口號
        String url = SERVICE_PROVIDER + "/pets/get/" + id;
        return restTemplate.getForObject(url, Pets.class);
    }
... ...
}1234567891011121314復(fù)制代碼類型:[java]

  運行程序,在postman中進(jìn)行測試訪問。

  查看控制臺打印結(jié)果。

 Zipkin

  官網(wǎng)鏈接:

  https:///pages/architecture.html

  Zipkin是Twitter開發(fā)的一個分布式系統(tǒng) APM(Application Performance Management,應(yīng)用程序性能管理)工具,其是基于Google Dapper實現(xiàn)的,用于完成日志的聚合。其與Sleuth聯(lián)用,可以為用戶提供調(diào)用鏈路監(jiān)控可視化UI界面。

  Zipkin服務(wù)器主要由4個核心組件構(gòu)成:

  Collector:收集組件,它主要用于處理從外部系統(tǒng)發(fā)送過來的跟蹤信息,將這些信息轉(zhuǎn)換為Zipkin內(nèi)部處理的Span格式,以支持后續(xù)的存儲、分析、展示等功能。

  Storage:存儲組件,它主要用于處理收集器接收到的跟蹤信息,默認(rèn)會將這些信息存儲在內(nèi)存中,也可以修改存儲策略。例如:將跟蹤信息存儲到數(shù)據(jù)庫中。

  API:外部訪問接口組件,外部系統(tǒng)通過這里的API可以實現(xiàn)對系統(tǒng)的監(jiān)控。

  UI:用于操作界面組件,基于API組件實現(xiàn)的上層應(yīng)用。通過UI組件用戶可以方便而有直觀地查詢和分析跟蹤信息。

  日志發(fā)送方式

  在Spring Cloud Sleuth + Zipkin系統(tǒng)中,客戶端中一旦發(fā)生服務(wù)間的調(diào)用,就會被配置在微服務(wù)中的 Sleuth 的監(jiān)聽器監(jiān)聽,然后生成相應(yīng)的Trace和Span等日志信息,并發(fā)送給Zipkin服務(wù)端。發(fā)送的方式主要有兩種,一種是通過via HTTP報文的方式,也可以通過Kafka、RabbitMQ發(fā)送。

  gitee:

  https:///javainfamily/spring-cloud

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多