springcloud系列之链路追踪

author author     2023-04-17     372

关键词:

参考技术A

Spring Cloud系列之Eureka
Spring Cloud系列之配置中心Config
Spring Cloud系列之gateway
Spring Cloud系列之Feign
Spring Cloud系列之Hystrix
Spring Cloud系列之链路追踪

在微服务架构下,一次请求至少经过三四次服务调用完成,多则跨越七八个,那么问题接踵而来

基于上面得问题,就应运而生了分布式调用链路追踪技术

本质:记录日志,进行分析、排障

一次请求我们可以想象成一棵树,如下图:

Trace :一次完整的分布式调用跟踪链路,由一系列Span 组成的一个树状结构

TraceId :为了实现请求跟踪,当请求发送到分布式系统的入口时,我们为该请求创建一个唯一跟踪表示traceId,同时在分布式系统内部流转时,框架始终保持该唯一标识。

Span(跨度) : 追踪服务调基本结构,表示跨服务的一次调用; 多span形成树形结构,组合成一次Trace追踪记录。对于一个span节点必须有开始和结束节点,通过记录开始和结束的时间戳,就可以计算出调用该服务的一个耗时。每一个Span通过一个64位ID来进行唯一标识即spanId,并通过另一个64位ID对Span所在的Trace进行唯一标识。(注意:启动一个Trace的初始化Span被叫作 Root Span ,它的 Span ID 和 Trace Id 相同。)

span除了时间戳外,还可以包含一些其他元素数据,比如请求信息 parentId、traceId、spanId。

Annotation :用来及时记录一个事件的存在。通过引入 Brave 库,我们不用再去设置一系列的特别事件,从而让 Zipkin 能够知道客户端和服务器是谁、请求是从哪里开始的、又到哪里结束。出于学习的目的,还是把这些事件在这里列举一下:

Cs CLIENT_SEND,客户端发起请求

Cr CLIENT_RECIEVE,客户端收到响应

Sr SERVER_RECIEVE,服务端收到请求

Ss SERVER_SEND,服务端发送结果

下面我们就重点来了解下 sleuth + zipkin

追踪服务框架,Sleuth就是通过记录日志的方式来追踪数据的,我们可以通过记录的日志,进行:

我们往往把spring cloud sleuth和zipkin一起使用,把sleuth的数据信息发送给zipkin进行聚合,利用zipkin存储进行数据展示,具体实现流程如下:

在application.yml中添加日志级别

运行项目,发起请求,我们可以看到user-api打印结果:

运行项目,打开地址 http://localhost:10005/zipkin/ ,界面如下:

其中type方式有三种

还有 采样率 的问题

生产环境下,如果采用全部采集,那产生的踪迹数据量就是一个天量,对于网络和server端的压力就非常大了,而且没必要采集所有的数踪迹数据进行分析,我们只需要采集一部分进行分析就可以了,这里我们本地方便查看就设置为1,线上我们可以根据我们自己的需求,综合考量,设置一个合适的采样率

运行项目,访问接口,我们可以看到如下页面:

注意:spans的个数是按照入口和出口进行计算的比如第一条请求,请求入gateway算一个,gateway向user-api发起请求算一个,入user-api算一个,以此类推,第一个请求就有5个span

具体请求链路详情我们可以点击一个进入:

在这里我们简单介绍下,如果我们不持久化数据,数据是保存到内存中的,一旦服务重启,数据就丢失了,而且数据保存到内存中也存在很大的问题,一般我们持久化链路踪迹数据,Zipkin支持将追踪数据持久化到mysql或者es中,一般我们用的比较多的是es。

Spring Cloud系列之Eureka
Spring Cloud系列之配置中心Config
Spring Cloud系列之gateway
Spring Cloud系列之Feign
Spring Cloud系列之链路追踪

springcloud系列微服务的链路追踪(代码片段)

微服务的链路追踪概述1、微服务架构下的问题2、Sleuth概述2.1、Sleuth简介2.2、相关概念2.3、链路追踪Sleuth入门3、Zipkin的概述3.1、ZipkinServer的部署和配置4、客户端Zipkin+Sleuth整合5、基于消息中间件收集数据5.1、RabbitMQ的安装与启... 查看详情

springcloud之链路追踪整合sleuth(十三)

前言SpringCloud是微服务中的翘楚,最佳的落地方案。在一个完整的微服务架构项目中,服务之间的调用是很复杂的,当其中某一个服务出现了问题或者访问超时,很难直接确定是由哪个服务引起的,所以就有了SpringCloudSleuth链路... 查看详情

微服务实践之全链路追踪(sleuth,zipkin)详解-springcloud(2021.0.x)-4(代码片段)

...自由转载出自:shusheng007文章目录前言链路追踪理论SpringCloud的实现方案Zipkin服务引入依赖配置使用总结源码前言本文将介绍微服务架构中关于链路追踪相关组件Sleuth与Zipkin的在SpringCloud入门使用。链路追踪为什么要进行链路... 查看详情

java之springcloud微服务的链路追踪sleuth和zipkin(第三个阶段)springboot项目实现商品服务器端是调用

SpringCloud学习目录点击跳转对应的文章Java之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调... 查看详情

springcloud-springcloudalibaba之skywalking分布式链路跟踪;跨多服务追踪,集成日志(十五)(代码片段)

一、SkyWalking跨多服务追踪1、关闭防火墙,如果nacos使用MySQL持久化规则,则启动MySQL服务systemctlstopfirewalld2、启动单机版Nacos,浏览器输入http://192.168.133.129:8848/nacos[root@eureka8761~]#cd/opt/software/nacos/bin/[ 查看详情

微服务实践之全链路追踪(sleuth,zipkin)详解-springcloud(2021.0.x)-4(代码片段)

...自由转载出自:shusheng007文章目录前言链路追踪理论SpringCloud的实现方案Zipkin服务引入依赖配置使用总结源码前言本文将介绍微服务架构中关于链路追踪相关组件Sleuth与Zipkin的在SpringCloud入门使用。链路追踪为什么要进行链路... 查看详情

java之springcloud微服务的链路追踪sleuth和zipkin(第三个阶段)springboot项目实现商品服务器端是调用(代码片段)

Java之SpringCloud微服务的链路追踪Sleuth和Zipkin(第三个阶段)【三】【SpringBoot项目实现商品服务器端是调用】一、微服务的链路追踪概述1、微服务架构下的问题2、Sleuth概述(1)简介(2)相关概念3、链路追... 查看详情

springcloud(16)——链路追踪工具sleuth(代码片段)

追踪工具SleuthSpringCloudSleuth可以用来追踪微服务请求中的整个请求,通过它可以记录各个请求之间的耗时、异常等情况。使用SpringCloudSleuth时一般会跟Zipkin一起使用。SpringCloudSleuth收集到的一些跟踪信息可以发送给Zipkin,Zipkin提供... 查看详情

业余草springcloud教程|第九篇:服务链路追踪(springcloudsleuth)(finchley版本)

这篇文章主要讲述服务追踪组件zipkin,SpringCloudSleuth集成了zipkin组件。一、简介AddsleuthtotheclasspathofaSpringBootapplication(seebelowforMavenandGradleexamples),andyouwillseethecorrelationdatabeingcollectedinlogs,aslongasyou 查看详情

springcloud整合分布式链路追踪系统sleuth和zipkin实战,分析系统瓶颈

...哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶颈问题~SpringCloud链路追踪组件Sleuth实战官网  主要功能:做日志埋点什么是Sleuth  专门用于追踪每个请求的完整调... 查看详情

sleuth+zipkin实现springcloud链路追踪(代码片段)

文章目录一、前言二、应用架构图三、快速了解Sleuth四、准备工作1、搭建Zipkin单机环境2、搭建naocos单机环境五、微服务整合Sleuth1、创建SpringBoot工程2、配置文件3、实现核心代码六、集成Zipkin1、引入客户端2、配置文件3、运行效... 查看详情

springcloud(h版)二阶段学习---分布式请求链路追踪

...环出现高延迟或错误都会引起整个请求最后的失败。  SpringCloudSleuth提供了一套完整的服务跟踪的解决方案。在分布式系统中提供了追踪解决方案并且兼容支持了zipkin  官网 查看详情

springcloud链路追踪sleuth+twitterzipkin中zipkin服务

2021年5月15日随笔springboot2.2.x版本以上,不建议自己写服务了,我尝试了很多方法没有成功,各种问题,所以需要下载它的jar包然后执行 下载地址:https://repo1.maven.org/maven2/io/zipkin/zipkin-server/2.23.2/zipkin-server-2.23.2-exec.jar下载完... 查看详情

springcloud-springcloudalibaba之skywalking分布式链路跟踪;skywalking-ui解析(十六)

一、顶部栏仪表盘:查看被监控服务的运行状态拓扑图:以拓扑图的方式展现服务之间的关系,并以此为入口查看相关信息追踪:以接口列表的方式展现,追踪接口内部调用过程性能剖析:对端点进行采样... 查看详情

5.springcloud--配置中心config消息总线bus链路追踪sleuth配置中心nacos(代码片段)

5.SpringCloud--配置中心Config、消息总线Bus、链路追踪Sleuth、配置中心Nacos一、引入配置中心1.1问题与解决二、配置中心--Config2.1Config是什么?(1)Config是什么?(2)Config功能2.2搭建配置中心(ConfigServer... 查看详情

十八.springcloud极简入门-zipkin整合rabbitmq使用elasticsearch存储的高性能链路追踪方案

前言之前讲过一个版本的Zipkin链路追踪,《Sleuth整合ZipKin链路追踪》,讲了Zipkin的工作流程,以及简单集成Zipkin,这篇文章将会对之前的方案进行升级,使用RabbitMQ异步收集数据,使用ElasticSearch进行数据存... 查看详情

十八.springcloud极简入门-zipkin整合rabbitmq使用elasticsearch存储的高性能链路追踪方案(代码片段)

前言之前讲过一个版本的Zipkin链路追踪,《Sleuth整合ZipKin链路追踪》,讲了Zipkin的工作流程,以及简单集成Zipkin,这篇文章将会对之前的方案进行升级,使用RabbitMQ异步收集数据,使用ElasticSearch进行数据存... 查看详情

浅谈现公司的springcloud微服务框架

...错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐。springcloudSpringCloud是将分布式系统中一系列基础框架/工具进行整合的框架。其中包含:服务注册与发现、服务网关、熔断器、配置中心、消息中心、服务链路追踪等等。这... 查看详情