46 Zipkin Server的部署和配置
(1) Zipkin Server下载
从spring boot 2.0开始,官方就不再支持使用自建Zipkin Server的方式进行服务链路追踪,而是直接提 供了编译好的 jar 包来给我们使用。可以从官方网站下载先下载Zipkin的web UI,我们这里下载的是 zipkin-server-2.12.9-exec.jar
(2) 启动
在命令行输入 java -jar zipkin-server-2.12.9-exec.jar 启动 Zipkin Server
image-20211231215408986.png- 默认Zipkin Server的请求端口为 9411
- Zipkin Server的启动参数可以通过官方提供的yml配置文件查找
- 在浏览器输入 http://127.0.0.1:9411即可进入到Zipkin Server的管理后台
客户端Zipkin+Sleuth整合
通过查看日志分析微服务的调用链路并不是一个很直观的方案,结合zipkin可以很直观地显示微服务之 间的调用关系。
(1)客户端添加依赖
客户端指的是需要被追踪的微服务
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
(2)修改客户端配置文件
zipkin:
base-url: http://127.0.0.1:9411/ #zipkin server的请求地址
sender:
type: web #请求方式,默认以http的方式向zipkin server发送追踪数据
sleuth:
sampler:
probability: 1.0 #采样的百分比
指定了zipkin server的地址,下面制定需采样的百分比,默认为0.1,即10%,这里配置1,是记录全部 的sleuth信息,是为了收集到更多的数据(仅供测试用)。在分布式系统中,过于频繁的采样会影响系 统性能,所以这里配置需要采用一个合适的值。
(3) 测试
以此启动每个微服务,启动Zipkin Service。通过浏览器发送一次微服务请求。打开 Zipkin Service 控制台,我们可以根据条件追踪每次请求调用过程
image-20211231215725962.png单击该trace可以看到请求的细节
image-20211231215750162.png基于消息中间件收集数据
在默认情况下,Zipkin客户端和Server之间是使用HTTP请求的方式进行通信(即同步的请求方式),在 网络波动,Server端异常等情况下可能存在信息收集不及时的问题。Zipkin支持与rabbitMQ整合完成异 步消息传输。
加了MQ之后,通信过程如下图所示:
image-20211231220028456.png
RabbitMQ的安装与启动
略
服务端启动
java -jar zipkin-server-2.12.9-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672
RABBIT_ADDRESSES : 指定RabbitMQ地址
RABBIT_USER: 用户名(默认guest)
RABBIT_PASSWORD : 密码(默认guest)
启动Zipkin Server之后,我们打开RabbitMQ的控制台可以看到多了一个Queue
image-20211231220154640.png其中 zipkin 就是为我们自动创建的Queue队列
客户端配置
(1) 配置依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
导入 spring-rabbit 依赖,是Spring提供的对rabbit的封装,客户端会根据配置自动的生产消息并发送 到目标队列中
(2) 配置消息中间件rabbit mq地址等信息
zipkin:
#base-url: http://127.0.0.1:9411/ #zipkin server的请求地址
sender:
type: rabbit
#type: web #请求方式,默认以http的方式向zipkin server发送追踪数据
sleuth:
sampler:
probability: 1.0 #采样的百分比
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
listener: # 这里配置了重试策略
direct:
retry:
enabled: true
simple:
retry:
enabled: true
- 修改消息的投递方式,改为rabbit即可。
- 添加rabbitmq的相关配置
(3) 测试
关闭Zipkin Server,并随意请求连接。打开rabbitmq管理后台可以看到,消息已经推送到rabbitmq。 当Zipkin Server启动时,会自动的从rabbitmq获取消息并消费,展示追踪数据
可以看到如下效果:
- 请求的耗时时间不会出现突然耗时特长的情况
- 当ZipkinServer不可用时(比如关闭、网络不通等),追踪信息不会丢失,因为这些信息会保存在 Rabbitmq服务器上,直到Zipkin服务器可用时,再从Rabbitmq中取出这段时间的信息