Spring cloud链路跟踪服务集成zipkin+mysql+sleuth+rabbitMq
一、链路跟踪服务能为我们带来什么好处?
随着各模块单体微服务越来越多,系统之间的服务依赖、服务调用越来越复杂,当我们的系统出现性能缓慢时,无法快速地定位是哪个服务造成的,而链路跟踪服务能帮助我们很好的查看各服务调用信息,帮助我们很好地分析系统性能问题。
二、请求调用链路信息需不需要作数据存储?
由于有的生产问题可能无法复现,所以请求调用链路信息是有必要作数据存储地,但是不能所有的信息都去存储,需要制定相关策略。
三、技术选型
因为链路跟踪服务是辅助服务,不是我们的主流程服务,所以选型不要过于复杂,需要适配spring cloud体系。
这里选用spring cloud全家桶里的组件,如下:
spring-cloud-sleuth:用作服务之间调用信息采集。
zipkin:用于图形化查看请求调用信息与服务之间的调用依赖关系。
mysql:用于存储请求调用信息。
rabbitmq:用于服务调用时给zipkin服务发送信息,在图形化界面查看调用信息,还支持web方式发送,但是web方式会占带宽影响系统性能,所以采用rabbitmq异步发送。
四、实现方案
官方建议zipkin 2.0之后的版本用官方jar包;而zipkin没有提供存储策略,即数据要么全部存储,要么全部不存储。所以为了增加存储策略,不采用官方jar,自己定制zipkin服务。
定制内容:
增加定时任务,定时删除请求响应小于N秒的请求,N支持配置。
五、配置文件详解
1、zipkin服务端配置文件
application.yml
server:
port: 9411
spring:
main:
allow-bean-definition-overriding: true
application:
name: zipkin-server
cloud:
nacos:
discovery:
server-addr: 192.168.103.240:8848
cluster-name: DEFAULT
zipkin:
enabled: true #启用zipkin
discovery-client-enabled: