微服务-链路追踪

https://www.jianshu.com/p/466556685781

1、Sleuth

Sleuth将一个完整的request定义为一个trace,而每经过一个服务则会生成一个span,附加到trace下,形成对这个request的链路追踪

2、Zipkin

  • 客户端:指微服务应用,客户端会配置服务端的 URL 地址,一旦发生服务间的调用的时候,会被配置在微服务里面的 Sleuth 的监听器监听,并生成相应的 Trace 和 Span 信息发送给服务端,发送的方式主要有两种,一种是 HTTP 报文的方式,还有一种是消息总线的方式如 RabbitMQ
  • 服务端:服务端负责将接收到的消息根据 traceIdspanId 整理成一个完整的request时序链路,并通过web页面直观的展示出来

sleuth 与 zipkin 的组合只能完成链路信息的追踪,不具备统一日志收集的功能

Zipkin服务端

Zipkin 的服务端,在使用 Spring Boot 2.x 版本后,官方就不推荐自行定制编译了,反而是直接提供了编译好的 jar 包来给我们使用,官方提供了一键脚本(Windows下需要安装curl,不过如果你安装了Git客户端,可以直接在Git Bash中使用)

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

如果用 Docker 的话,直接

docker run -d -p 9411:9411 openzipkin/zipkin

任一方式启动后,访问 http://localhost:9411/zipkin/ 就能看到管理页面

Zipkin客户端

1、引入依赖

这个依赖会引入进一步引入sleuth的依赖:spring-cloud-starter-sleuth

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

2、添加配置,指定 Zipkin 服务器的地址

spring:
	zipkin:
		base-url: http://localhost:9411

将数据存储到mysql

默认启动的zipkin将数据保存在内存,Zipkin支持将追踪数据持久化到mysql或者elasticsearch中

1、持久化到mysql

  • 创建mysql数据库zipkin
CREATE DATABASE `zipkin` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
java -jar zipkin.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=123456

2、持久化到elasticsearch

posted @   谭五月  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示