SpringCloud实战---第十九篇:分布式请求链路跟踪Sleuth
        【摘要】  系列文章目录SpringCloud快速入门到精通各组件原理专栏传送门@TOC 一、SpringCloudSleuth链路监控是什么在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。官网:https://github.com/...
    
    
    
    系列文章目录
SpringCloud快速入门到精通各组件原理
 专栏传送门
@TOC
一、SpringCloudSleuth链路监控是什么
- 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
 - 官网:https://github.com/spring-cloud/spring-cloud-sleuth
 - Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案。
 - 在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
 - 简单来说,Sleuth就是链路调用监控工具,通过zipkin可以实现图形化的调用链路监测。
 
二、安装zipkin
- SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可。
 - 下载地址(自己下载最新的即可):https://repo1.maven.org/maven2/io/zipkin/zipkin-server/
 - zipkin-server-2.12.9-exec.jar
 - 运行jar: java -jar zipkin-server-2.12.9-exec.jar

访问可视化界面 
http://127.0.0.1:9411/zipkin/
 
 
三、先构建好基础工程(一篇一篇看过来的不用重新构建)
构建基础父工程:构建基础父工程
 Rest风格微服务:Rest风格微服务
 传统分布式方法:传统分布式方法
 改造工程,抽取公共模块:改造工程,抽取公共模块
 使用Eureka:使用Eureka
 Eureka集群: Eureka集群
想偷懒的请下载;gitee上我上传的代码:
https://gitee.com/xiaoZ1712/cloud2021
 
 基础工程构建完成的目录结构:
 
 启动所有模块,访问
localhost:7001
 
 显示如下,代表基础工程没问题
 
话不多说,立马开干
四、微服务整合Sleuth
我们先改造服务提供方,添加调用链路的监控
改造服务提供方
1. 给8001工程添加sleuth依赖
        <!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
 
 
2. 给8001添加yml配置
zipkin:
  base-url: http://localhost:9411
sleuth:
  sampler:
  #采样率值介于 0 到 1 之间,1 则表示全部采集
  probability: 1
 
 
3. 给8001添加一个测试接口
  @GetMapping("/payment/zipkin")
    public String paymentZipkin()
    {
        return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
    }
 
 
改造服务调用方
1. 给80工程添加sleuth依赖
        <!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
 
 
2. 给80添加yml配置
zipkin:
  base-url: http://localhost:9411
sleuth:
  sampler:
  #采样率值介于 0 到 1 之间,1 则表示全部采集
  probability: 1
 
 
3. 给80添加调用8001测试接口的接口
// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{
    String result = restTemplate.getForObject(PAYMENT_URL+"/payment/zipkin/", String.class);
    return result;
}
 
 
五、启动测试
依次启动7001、8001、80工程,测试80调用几次8001的接口
http://127.0.0.1/consumer/payment/zipkin
 
 
 多刷新几次
 访问zipkin
http://127.0.0.1:9411/zipkin/
 
 按照以下步骤查看服务链路调用
- 添加链路查找条件


 - 选择查找80order工程服务监控

 - 点击查找


 - 点击SHOW


 - 查看依赖


查看图形化调用链路,点击小圆点可以查看详细信息

 
O(∩_∩)O哈哈~
我们的微服务可以被看到是否健康啦!
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            










           
评论(0)