SpringCloud 商城系统搭建之Sleuth解析

无情 阅读:225 2021-03-31 13:18:19 评论:0

前提

本文是基于SpringCloud 商城系统搭建之eureka 

SpringCloud Sleuth 简介

Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案。

Spring Cloud Sleuth借鉴了Dapper的术语。

Span:基本的工作单元。Span包括一个64位的唯一ID,一个64位trace码,描述信息,时间戳事件,key-value 注解(tags),span处理者的ID(通常为IP)。

Trace:一组Span形成的树形结构。

Annotation:用于及时记录存在的事件。常用的Annotation如下:

  • cs:客户端发送(client send) 客户端发起一个请求,表示span开始
  • sr:服务器接收(server received) 服务器接收到客户端的请求并开始处理,sr - cs 的时间为网络延迟
  • ss:服务器发送(server send) 服务器处理完请求准备返回数据给客户端。ss - sr 的时间表示服务器端处理请求花费的时间
  • cr:客户端接收(client received) 客户端接收到处理结果,表示span结束。 cr - cs 的时间表示客户端接收服务端数据的时间

Sleuth 集成

按照下面步骤改造之前的项目supermarker-provider

1、在pom.xml 文件中,添加Spring Cloud Sleuth 的jar 包依赖

        <!--sleuth --> 
		<dependency> 
			<groupId>org.springframework.cloud</groupId> 
			<artifactId>spring-cloud-starter-sleuth</artifactId> 
		</dependency>

2、application.properties 添加日志文件输出,方便查询信息追踪

# 日志记录输出 
logging.level.root=Info 
logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG

3、分布式链路信息追踪:分别启动:supermarker-eureka、supermarker-provider、supermarker-consume,浏览器访问:http://localhost:8083/user?id=2

重点查看supermarker-provider 生成的请求链路信息:

2020-12-18 02:12:41.048 DEBUG [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.s.web.servlet.DispatcherServlet        : GET "/user?id=1", parameters={masked} 
---------------provider端口被调用--------------8082 
2020-12-18 02:12:41.357  INFO [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory 
Hibernate: select user0_.use_id as use_id1_0_, user0_.create_time as create_t2_0_, user0_.modify_time as modify_t3_0_, user0_.use_age as use_age4_0_, user0_.use_email as use_emai5_0_, user0_.use_id_no as use_id_n6_0_, user0_.use_name as use_name7_0_, user0_.use_phone_num as use_phon8_0_, user0_.use_sex as use_sex9_0_, user0_.use_state as use_sta10_0_ from user user0_ where user0_.use_id=1 
2020-12-18 02:12:41.836 DEBUG [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.s.web.servlet.DispatcherServlet        : Completed 200 OK 
2020-12-18 02:12:43.799  INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_PROVIDER/provider1 - Re-registering apps/PROVIDER 
2020-12-18 02:12:43.799  INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_PROVIDER/provider1: registering service... 
2020-12-18 02:12:43.813  INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_PROVIDER/provider1 - registration status: 204 
2020-12-18 02:12:48.385 DEBUG [provider,ff83f1addcfe58f1,ff83f1addcfe58f1,false] 7264 --- [nio-8082-exec-7] o.s.web.servlet.DispatcherServlet        : GET "/user?id=1", parameters={masked}

其中:140c59722f545377 是traceID, 140c59722f545377 是spanID .

如果想仔细查看链路生成具体信息,可以将日志输出调整如下:

logging.level.root=Info 
logging.level.org.springframework.cloud.sleuth=DEBUG

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们