sleuth 跟踪mysql_spring-cloud-sleuth-zipkin实现微服务的链路跟踪

spring-cloud-sleuth-zipkin实现微服务的链路跟踪

简介

在微服务数量较多的系统架构中,一个完整的HTTP请求可能需要经过好几个微服务。如果想要跟踪一条完整的HTTP请求链路所产生的日志,我们需要到各个微服务上去查看日志并检索出我们需要的信息。随着业务发展,微服务的数量也会越来越多,这个过程也变得愈发困难。不过不用担心,spring-cloud-sleuth-zipkin为我们提供了分布式服务跟踪的解决方案。

sleuth: 为我们生成了请求链路信息,虽然我们已经可以通过Trace ID来跟踪整体请求链路了,但是我们还是得去各个系统中捞取日志。在并发较高得时候,日志是海量的,这个时候我们可以借助zipkin来代替我们完成日志获取与分析。

zipkin: 主要有四个组件,可以帮助我们收集由sleuth产生的请求链路信息,并保存到MySQL或者Elasticsearch中,并通过web页面分析与跟踪请求日志。这里提一句:最新版本的zipkin还不支持6.0.0以上版本的Elasticsearch。

Collector:收集器,负责收集日志信息,以供后续的存储,分析与展示;

Storage:存储模块,我们可以通过它将日志存储到MySQL或者Elasticsearch中。

RESTful API:API组件,它主要用来提供外部访问接口。 比如给客户端展示跟踪信息,或是外接系统访问以实现监控等;

WEB UI:通过web页面,我们可以轻松的分析与跟踪请求日志。

构建

在Spring Cloud为Finchley版本时,如果只需要默认的实现,则不需要自己构建Zipkin Server了,只需要下载jar即可,下面我基于Spring Cloud最新版Hoxton.SR4,Spring Boot采用2.3.0版本构建spring-cloud-sleuth-zipkin的demo项目。

zipkin下载地址:戳我,这里我下载的是目前最新版本的zipkin-server-2.12.9-exec.jar

45728d6484ed47ef3e89113364e93a56.png

zipkin整合mysql启动服务:

java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_HOST=localhost --MYSQL_TCP_PORT=3306

zip整合Elasticsearch启动服务:

java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --DES_HOSTS=http://localhost:9200

默认端口是9411,访问地址http://localhost:9411/

97e10dea3cffbbcc7ea4654e69199aeb.png

另外demo项目主要由eureka注册中心、zuul服务网关、server-provider服务提供者、server-consumer服务消费者、zipkin-server等几部分组成,如上图所示。

演示

server-provider服务提供者提供接口UserController,由server-consumer服务消费者在TestController中去调用。启动项目,请求接口:http://localhost:8888/consumer/user

预期结果:

请求路径:zuul->server-consumer:TestController:/get/user->UserService->server-provider:UserController:/get

访问zipkin检验结果:

aa0125f325598fba59f1c7aad772bc91.png

44793ebeea3ab94d9c5b1ce97e2b4940.png

faf2e1de03c7b474f1d89f78844f81a1.png

依赖分析:

c861a31e45d1255520cb30cefbf7813f.png

总结

通过zipkin可以有效的帮助我们记录微服务中的请求链路、请求时间、微服务间的依赖关系等信息。尤其是针对多个微服务的项目,可以方便我们有效的理解服务间的调用关系,查错等。

演示项目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值