Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案.
其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数
据分析,数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图,这是调试和监控微服务的关键工具。
服务链路跟踪技术框架
2.Sleuth的术语Span:基本工作单元,发送一个远程调度任务 就会产生一个Span,Span是一个64位ID唯一标识的,
Trace:用另一个64位ID唯一标识的,Trace还有其他数据信息,比如摘要、时间戳事件、Trace的ID、以及进度ID。
Trace 包含了多个span
一个请求过来,调用服务,一条链路通过Trace Id唯一标识,Span标识发起的请求,各Span通过parent id关联起来。
3.微服务跟踪解决了什么问题?微服务跟踪(sleuth)其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数据分析,数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图,这是调试和监控微服务的关键工具。 SpringCloudSleuth有4个特点
| 特点 | 说明 |
|---|---|
| 提供链路追踪 | 通过sleuth可以很清楚的看出一个请求经过了哪些服务, 可以方便的理清服务的调用关系 |
| 性能分析 | 通过sleuth可以很方便的看出每个采集请求的耗时, 分析出哪些服务调用比较耗时,当服务调用的耗时 随着请求量的增大而增大时,也可以对服务的扩容提 供一定的提醒作用 |
| 数据分析 优化链路 | 对于频繁地调用一个服务,或者并行地调用等, 可以针对业务做一些优化措施 |
| 可视化 | 对于程序未捕获的异常,可以在zipkpin界面上看到 |
Zipkin是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该
数据的收集和查找。
Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现,它致力于收集服务的定时数据,以解决微服
务架构中的延迟问题,包括数据的收集、存储、查找和展现。 我们可以使用它来收集各个服务器上请求链路
的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而
及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的 API 接口之外,它也提
供了方便的 UI 组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户
请求的处理时间等。 Zipkin 提供了可插拔数据存储方式:In-Memory、MySql、Cassandra 以及 Elasticsearch。
接下来的测试为方便直接采用 In-Memory 方式进行存储,生产推荐 Elasticsearch。
Zipkin 的基础架构,它主要由 4 个核心组件构成:
Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处
理的 Span 格式,以支持后续的存储、分析、展示等功能。
Storage:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到数据库中。
RESTful API:API 组件,它主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接系统访问以实现监控等。
Web UI:UI 组件,基于 API 组件实现的上层应用。通过 UI 组件用户可以方便而有直观地查询和分析跟踪信息
使用1.下载
https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exechttps://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exechttps://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec
2.启动 在对应的文件下打开cmd窗口,输入命令
java -jar zipkin-server-2.22.2-exec.jar
3.访问
http://127.0.0.1:9411/zipkin/5.Sleuth应用
在feign应用中添加依赖
org.springframework.cloud spring-cloud-starter-sleuthorg.springframework.cloud spring-cloud-starter-zipkin
2.在配置文件添加
spring.application.name=nacos-customer-feign spring.cloud.nacos.discovery.server-addr=http://localhost:8848 server.port=8083 management.endpoints.web.exposure.include=* ##开启哨兵 feign.sentinel.enabled=true # ##配置哨兵地址 spring.cloud.sentinel.transport.dashboard=localhost:8080 #配置sleuth spring.sleuth.sampler.probability=1 spring.zipkin.base-url=http://127.0.0.1:9411 spring.zipkin.sender.type=web spring.zipkin.service.name=nacos-customer-feign #显示日志 logging.level.root=info logging.level.org.springframework.web.servlet.DispatcherServlet=debug logging.level.org.springframework.cloud.sleuth=debug
3.测试
访问feign应用的几个方法可以看到
点击show可以查看详细信息



