1、微服务下的链路追踪讲解和它的重要性
一个服务进来后,可能会调用N多个服务,导致整个时间很慢,但是又不知道到底是哪个服务导致的变慢,这个时候就会有框架来记录每个服务的调用的时间,这个框架就是ZipKin(twitter的技术),可以追踪服务里的整个调用链路;
2、SpringCloud的链路追踪组件Sleuth
Sleuth最主要的功能是做日志埋点,记录调用时间的日志;
在product提供服务与order下单服务的项目都要加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-starter-sleuth</artifactId>
</dependency>
调用接口劶会多出一部分日志:
2019-04-08 21:43:35.255 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.u.concurrent.ShutdownEnabledTimer : Shutdown hook installed for: NFLoadBalancer-PingTimer-product-service
2019-04-08 21:43:35.256 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.netflix.loadbalancer.BaseLoadBalancer : Client: product-service instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product-service,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2019-04-08 21:43:35.264 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.l.DynamicServerListLoadBalancer : Using serverListUpdater PollingServerListUpdater
2019-04-08 21:43:35.294 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.l.DynamicServerListLoadBalancer
日志说明:
[order-service,3c5a689300b283a5,5268ead2e429455b,false]
一个请求里,每个服务的Trace ID都一样,每个服务的Span Id都不一样
3、可视化链路追踪系统ZipKin的部署
ZipKin官网
1、简介:
2、使用
在docker控制台输入如下命令后会自动下载:
docker run -d -p 9411:9411 openzipkin/zipkin
查看web页面:
4、ZipKin+Sleuth链路追踪实战
1、原理介绍
数据默认存在内存,也可以手动改为存mysql里或其他存储里;
2、添加依赖
<!--zipkin+sleuth,下边的依赖包含了sleuth,所以可以将之前的sleuth的依赖注释掉了-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
3、在orderService配置文件里配置zipkin服务地址
4、访问web页面
此时调用下单接口后,在web页面看到如下数据:
5、配置采样百分比
1表明全部服务信息都进行采集,开发环境可以设置为1,生产环境用默认即可;
6、可以看到每个服务的耗时时间
微服务核心知识分布