spring cloud 链路跟踪zipkin

相关概念

  • Span:基本工作单位,一次单独的调用链可以称为一个 Span。Span 通过一个 64 位的 spanId 作为 唯一标识。
  • Trace:一系列 Span 组成的树状结构,一个 Trace 认为是一次完整的链路,内部包含 n 多个 Span。Trace 和 Span 存在一对多的关系,Span 与 Span 之间存在父子关系。
  • Annotation:一个 Annotation 可以理解成 Span 生命周期中 重要时刻 的 数据快照,比如一个 Annotation 中一般包含 发生时刻(timestamp)、事件类型(value)、端点(endpoint)等信息。

Annotation 的 事件类型

Annotation 的 事件类型 包含以下四类:

  • cs - Client Sent
    客户端 发起一个请求,这个 Annotion 描述了这个 Span 的开始。
  • sr - Server Received
    服务端 获得请求并 准备开始 处理它,如果将 sr 减去 cs 的 时间戳 便可得到 网络延迟。
  • ss - Server Sent
    服务端 完成请求处理,如果将 ss 减去 sr 的 时间戳,便可得到 服务端 处理请求消耗的时间。
  • cr - Client Received
    客户端 成功接收到 服务端 的响应,如果将 cr 减去 cs 的 时间戳,便可得到 整个请求 所消耗的 总时间。

实现原理

https://juejin.im/post/6844904152900829197

zipkin

zipkin原理

在这里插入图片描述
如图所示,共有四个组件构成了 Zipkin:

  • Collector:收集器组件,处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式,以支持后续的存储、分析、展示等功能。
  • Storage:存储组件,处理收集器接收到的跟踪信息,默认将信息存储在内存中,可以修改存储策略使用其他存储组件,支持 MySQL,Elasticsearch 等。
  • Web UI:UI 组件,基于 API 组件实现的上层应用,提供 Web 页面,用来展示 Zipkin 中的调用链和系统依赖关系等。
  • RESTful API:API 组件,为 Web 界面提供查询存储中数据的接口。

部署

服务端部署

在 Spring Boot 2.0 版本之后,官方已不推荐自己搭建Zipkin服务端了,而是直接提供了编译好的 jar 包。详情可以查看官网:zipkin.io
下载的 jar 包为:zipkin-server-2.21.1-exec.jar,启动命令如下,默认端口9411
java -jar zipkin-server-2.21.1-exec.jar
复制代码​ 访问:http://localhost:9411/ 即可。

客户端部署
  1. 依赖
<dependency> 
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
  1. 配置文件中配置 Zipkin 服务端地址及数据传输方式。
spring:
  zipkin:
    base-url: http://localhost:9411/ # 服务端地址
    sender:
      type: web                      # 数据传输方式,web 表示以 HTTP 报文的形式向服务端发送数据
  sleuth:
    sampler:
      probability: 1.0               # 收集数据百分比,默认 0.1(10%)

​ 以我的程序为例,我在服务网关与服务提供者上添加了ZipKin。程序重新启动完毕后,访问http://localhost:7009/product/list后再通过zipkin根据时间查询

生产部署

Zipkin Server 默认存储追踪数据至内存中,这种方式并不适合生产环境,一旦 Server 关闭重启或者服务崩溃,就会导致历史数据消失。Zipkin 支持修改存储策略使用其他存储组件,例如MySQL,Elasticsearch 等。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值