目录
一、概念
1.1 问题引入
在微服务框架中,一个客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
1.2 Sleuth
Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,其实就是监控。在分布式系统中提供追踪解决方案并且兼容支持了zipkin(其实就是在zipkin上封装了一下)
1.3 zipkin
SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可,自行百度。
下载了jar包后运行:
java -jar zipkin-server-2.12.9-exec.jar
查看控制台:
http://localhost:9411/zipkin/
Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
span:表示调用链路来源,通俗的理解span就是一次请求信息
一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来
二、演示
我们以最开始的两个模块:cloud-provider-payment8001、cloud-consumer-order80 演示
1.分别修改其POM:
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
2.分别修改其YML:
server:
port: 8001
spring:
application:
name: cloud-payment-service
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
#采样率值介于 0 到 1 之间,1 则表示全部采集
probability: 1
datasource:
... ...
eureka:
... ...
mybatis:
... ...
server:
port: 80
spring:
application:
name: cloud-order-service
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1
eureka:
... ...
@GetMapping("/payment/zipkin")
public String paymentZipkin()
{
return "hi ,i'am paymentzipkin server fall back,welcome!O(∩_∩)O哈哈~";
}
... ...
public static final String PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";
... ...
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{
String result = restTemplate.getForObject(PAYMENT_URL+"/payment/zipkin/", String.class);
return result;
}
4.测试
输入: localhost/consumer/payment/zipkin
输出:
hi ,i'am paymentzipkin server fall back,welcome!O(∩_∩)O哈哈~
到后台查看:
详细信息:
查看依赖关系:
原文地址:https://www.jb51.cc/wenti/3285132.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。