乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

        淘寶-鷹眼-Eagleeye、京東-Hydra、大眾點(diǎn)評(píng)-cat、新浪-watchman、唯品會(huì)-microscope ... ...

        但是從全世界范圍來(lái)看用的較多的還是Twitter-Zipkin。

        Sleuth

        官網(wǎng)鏈接:

        https:///projects/spring-cloud

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

        三大核心概念

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

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

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

        一個(gè)Trace由若干個(gè)有序的Span組成。

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

        cs:Client Send,表示客戶端發(fā)送請(qǐng)求的時(shí)間點(diǎn)。

        sr,Server Receive,表示服務(wù)端接收到請(qǐng)求的時(shí)間點(diǎn)。

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

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

        日志采樣

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

        Sleuth對(duì)于這些日志支持抽樣收集,即并不是所有日志都會(huì)上傳到日志收集服務(wù)器,日志收集標(biāo)記就起這個(gè)作用。默認(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)日志的配置全部注釋掉!!否則將無(wú)法查看演示效果。

        復(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("消費(fèi)者的處理器方法被調(diào)用");
              // 消費(fèi)者連接提供者端口號(hào)
              String url = SERVICE_PROVIDER + "/pets/get/" + id;
              return restTemplate.getForObject(url, Pets.class);
          }
      ... ...
      }1234567891011121314復(fù)制代碼類型:[java]

        運(yùn)行程序,在postman中進(jìn)行測(cè)試訪問(wèn)。

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

       Zipkin

        官網(wǎng)鏈接:

        https:///pages/architecture.html

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

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

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

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

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

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

        日志發(fā)送方式

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

        gitee:

        https:///javainfamily/spring-cloud

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多