一:概述
1)为什么会出现这个技术?需要解决哪些问题?
2)是什么:(一个软监控,一个展现(zipkin),Sleuth 整合了 Zipkin)
a:官网:
b:Spring Cloud Sleuth :提供了一台完整的服务跟踪的解决方案:
c:在分布式系统中,提供追踪解决方案 并且 兼容支持了 zipkin:(记录并以网页图形展示)
3)解决:为服务链路调用监控
二:搭建链路监控步骤
1)zipkin:
a:下载:cloud F 版本起,已经不需要自己构建 zipkin server 客户端了,直接引入 jar 包即可。
(https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/)
b:运行 jar:
- 名词解释:Trance 类似于 树结构的 Span 集合,表示一条调用链路,存在唯一标识。
- 名词解释:Span 表示 调用链路来源,通俗的理解 span 就是一次请求。(多个 span 构成了 Trance)
c:运行 控制台:
2)服务提供者:
a:cloud-provider-payment-8001:
b:POM:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
c:YML:
server:
port: 8001
spring:
application:
name: cloud-provider-payment
zipkin:
base-url: http://114.215.173.88:9941
sleuth:
sampler:
# 采样率值,介于 0~1 之间,1 表示全部采集
probability: 1
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://114.215.173.88:3306/my_database?Unicode=true&characterEncoding=UTF-8&userSSL=false
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
type-aliases-package: com.cloud
eureka:
client:
# 表示 是否将自己注册进 eureka ,默认为 true
register-with-eureka: true
# 是否从 Eureka 抓取自己的注册信息,默认为 true
# 单节点无所谓,集群必须设置为 true,才能配合 ribbon 使用 负载均衡。
fetch-registry: true
service-url:
# 注册到 Eureka 的地址
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: cloud-provider-payment-8001
prefer-ip-address: true
# Eureka 客户端,向服务端发送心跳端时间间隔,单位为秒(默认 30 秒)
lease-renewal-interval-in-seconds: 1
# Eureka 服务端,在收到最后一次心跳后,等待的时间上线,单位为秒(默认 90 秒)
lease-expiration-duration-in-seconds: 2
d:业务类,PaymentController:
@RestController
public class GetPaymentLBController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/getPaymentLB/zipkin")
public String getPaymentLBZipkin() {
return serverPort;
}
}
3)服务消费者:
a:cloud-consumer-order-80
b:POM:和 8001 一样
c:YML:和 8001 一样
d:业务类 OrderController:(调用 8001 的 GetPaymentLBController 方法,)
4)依次启动 eureka 7001/7002/8001/80:80 调用 8001
5)发开浏览器访问:http://localhost:9411
a:可以按照条件 查询,查看链路调用关系。