iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring-cloud之sleuth服务链路跟踪的示例分析
  • 188
分享到

Spring-cloud之sleuth服务链路跟踪的示例分析

2023-05-30 17:05:22 188人浏览 八月长安
摘要

这篇文章主要介绍了spring-cloud之sleuth服务链路跟踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介Add sleuth to the cla

这篇文章主要介绍了spring-cloud之sleuth服务链路跟踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、简介

Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging requests.

—— 摘自官网

spring cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。

二、服务追踪分析

微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。

Spring-cloud之sleuth服务链路跟踪的示例分析

随着服务的越来越多,对调用链的分析会越来越复杂。它们之间的调用关系也许如下:

Spring-cloud之sleuth服务链路跟踪的示例分析

三、术语

Span:基本工作单元,例如,在一个新建的span中发送一个rpc等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)

span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace。

Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束

  1. cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始

  2. sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟

  3. ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间

  4. cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间

将Span和Trace在一个系统中使用Zipkin注解的过程图形化:

Spring-cloud之sleuth服务链路跟踪的示例分析

四、构建工程

基本知识讲解完毕,下面我们来实战,本文的案例主要有三个工程组成:一个server-zipkin,它的主要作用使用ZipkinServer 的功能,收集调用数据,并展示;一个service-hi,对外暴露hi接口;一个service-miya,对外暴露miya接口;这两个service可以相互调用;并且只有调用了,server-zipkin才会收集数据的,这就是为什么叫服务追踪了。

1 构建server-zipkin

建一个spring-boot工程取名为server-zipkin,在其pom引入依赖:

<dependencies> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter</artifactId> </dependency> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-WEB</artifactId> </dependency> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-test</artifactId>  <scope>test</scope> </dependency> <dependency>  <groupId>io.zipkin.java</groupId>  <artifactId>zipkin-server</artifactId> </dependency> <dependency>  <groupId>io.zipkin.java</groupId>  <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies>  <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-dependencies</artifactId>  <version>Camden.SR6</version>  <type>pom</type>  <scope>import</scope>  </dependency> </dependencies> </dependencyManagement>

在其程序入口类, 加上注解@EnableZipkinServer,开启ZipkinServer的功能:

@SpringBootApplication@EnableZipkinServerpublic class ServerZipkinApplication { public static void main(String[] args) { SpringApplication.run(ServerZipkinApplication.class, args); }}

在配置文件application.yml指定服务端口为:

server.port=9411

2 创建service-hi

在其pom引入起步依赖spring-cloud-starter-zipkin,代码如下:

<dependencies> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--compile('org.springframework.cloud:spring-cloud-starter-zipkin')--> <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-test</artifactId>  <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies>  <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-dependencies</artifactId>  <version>Dalston.RC1</version>  <type>pom</type>  <scope>import</scope>  </dependency> </dependencies> </dependencyManagement>

在其配置文件application.yml指定zipkin server的地址,头通过配置“spring.zipkin.base-url”指定:

server.port=8988spring.zipkin.base-url=Http://localhost:9411spring.application.name=service-hi

通过引入spring-cloud-starter-zipkin依赖和设置spring.zipkin.base-url就可以了。

对外暴露接口:

@SpringBootApplication@RestControllerpublic class ServiceHiApplication { public static void main(String[] args) { SpringApplication.run(ServiceHiApplication.class, args); } private static final Logger LOG = Logger.getLogger(ServiceHiApplication.class.getName()); @Autowired private RestTemplate restTemplate; @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } @RequestMapping("/hi") public String callHome(){ LOG.log(Level.INFO, "calling trace service-hi "); return restTemplate.getForObject("http://localhost:8989/miya", String.class); } @RequestMapping("/info") public String info(){ LOG.log(Level.INFO, "calling trace service-hi "); return "i'm service-hi"; } @Bean public AlwaysSampler defaultSampler(){ return new AlwaysSampler(); }}

3 创建service-miya

创建过程痛service-hi,引入相同的依赖,配置下spring.zipkin.base-url。

对外暴露接口:

@SpringBootApplication@RestControllerpublic class ServiceMiyaApplication { public static void main(String[] args) { SpringApplication.run(ServiceMiyaApplication.class, args); } private static final Logger LOG = Logger.getLogger(ServiceMiyaApplication.class.getName()); @RequestMapping("/hi") public String home(){ LOG.log(Level.INFO, "hi is being called"); return "hi i'm miya!"; } @RequestMapping("/miya") public String info(){ LOG.log(Level.INFO, "info is being called"); return restTemplate.getForObject("http://localhost:8988/info",String.class); } @Autowired private RestTemplate restTemplate; @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); }}

4 启动工程,演示追踪

依次启动上面的三个工程,打开浏览器访问:http://localhost:9411/,会出现以下界面:

Spring-cloud之sleuth服务链路跟踪的示例分析

访问:http://localhost:8989/miya,浏览器出现:i'm service-hi

再打开http://localhost:9411/的界面,点击Dependencies,可以发现服务的依赖关系:

Spring-cloud之sleuth服务链路跟踪的示例分析

点击find traces,可以看到具体服务相互调用的数据:

Spring-cloud之sleuth服务链路跟踪的示例分析

感谢你能够认真阅读完这篇文章,希望小编分享的“Spring-cloud之sleuth服务链路跟踪的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Spring-cloud之sleuth服务链路跟踪的示例分析

本文链接: https://www.lsjlt.com/news/219862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring-cloud之sleuth服务链路跟踪的示例分析
    这篇文章主要介绍了Spring-cloud之sleuth服务链路跟踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介Add sleuth to the cla...
    99+
    2023-05-30
  • Spring Cloud 专题之Sleuth 服务跟踪实现方法
    目录准备工作实现跟踪抽样收集整合Zipkin1.下载Zipkin2.引入依赖配置3.测试与分析持久化到mysql1.创建zipkin数据库2.启动zipkin3.测试与分析在一个微服...
    99+
    2024-04-02
  • spring cloud分布式整合zipkin的链路跟踪
    深圳中公教育:服务之间的调用,假设现在有十几台服务,那么在查找日志的时候比较繁琐、复杂,而且在查看调用的时候也会像蜘蛛网一样,量太大。这时候zipkin可以把链路调用整个过程给升级起来,只需要到一个地方去查找,就可以知道哪一步出错。zipk...
    99+
    2023-06-03
  • SpringCloud_Sleuth分布式链路请求跟踪的示例代码
    目录一、概述1.为什么会出现这个技术?需要解决哪些问题?2.是什么3.解决二、搭建链路监控步骤1.zipkin2.服务提供者3.服务消费者(调用方)4.依次启动eureka7001/...
    99+
    2023-02-01
    SpringCloud_Sleuth分布式链路 SpringCloud_Sleuth分布式链路跟踪 SpringCloud_Sleuth分布式
  • Spring Cloud Alibaba全家桶——微服务链路追踪SkyWalking
    前言 本文小新为大家带来 微服务链路追踪SkyWalking 相关知识,具体内容包括SkyWalking简介,SkyWalking环境搭建部署,SkyWalking接入微服务,SkyWalking持久化跟踪数据,自定义SkyWalking...
    99+
    2023-08-19
    微服务 skywalking java spring cloud
  • Spring Cloud Config的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Config的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们了解spring cloud config之前,我可以想想一个配置中心提供的...
    99+
    2023-06-05
  • Spring Cloud Zuul中路由配置的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Zuul中路由配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先我们来回忆一下配置路由规则的那两行代码:zuul.routes.api-...
    99+
    2023-05-30
    spring cloud zuul
  • 服务网关Spring Cloud Zuul的示例分析
    这篇文章主要为大家展示了“服务网关Spring Cloud Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“服务网关Spring Cloud&nbs...
    99+
    2023-06-29
  • Spring Cloud Zuul服务网关的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Zuul服务网关的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。有了Eureka服务注册发现、Hystrix断路器、Ribbon服务调用负载均...
    99+
    2023-05-30
    spring cloud zuul
  • sql server跟踪数据库的示例分析
    今天就跟大家聊聊有关sql server跟踪数据库的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 select * FROM ...
    99+
    2024-04-02
  • Spring Cloud中服务网关Zuul的示例分析
    这篇文章主要介绍Spring Cloud中服务网关Zuul的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在微服务架构中,需要几个关键的组件,服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,...
    99+
    2023-06-19
  • oracle对session进行跟踪的的示例分析
    这篇文章主要为大家展示了“oracle对session进行跟踪的的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle对session进行跟踪的的...
    99+
    2024-04-02
  • ASP.Net Core中日志与分布式链路追踪的示例分析
    这篇文章主要介绍了ASP.Net Core中日志与分布式链路追踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。.NET Core 中的日志控制台输出最简单...
    99+
    2023-06-29
  • Spring Cloud Bus消息的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Bus消息的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念我们使用配置中心时,当配置中心的配置发生了变化,我们就要发送一个post请求给客...
    99+
    2023-06-25
  • skywalking分布式服务调用链路追踪APM应用监控的示例分析
    这篇文章给大家分享的是有关skywalking分布式服务调用链路追踪APM应用监控的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言当企业应用进入分布式微服务时代,应用服务依赖会越来越多,skywalk...
    99+
    2023-06-29
  • Spring Cloud中API网关服务Zuul的示例分析
    这篇文章主要为大家展示了“Spring Cloud中API网关服务Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring Cloud中API网关服务Zuul的示例分析”这篇...
    99+
    2023-05-30
    spring cloud zuul
  • CentOS系统中跟踪高IO等待的示例分析
    这篇文章主要为大家展示了“CentOS系统中跟踪高IO等待的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CentOS系统中跟踪高IO等待的示例分析”这篇文章吧。高IO等待问题的第一个征...
    99+
    2023-06-10
  • Perf支持Zstd压缩跟踪记录的示例分析
    这篇文章给大家介绍Perf支持Zstd压缩跟踪记录的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Linux内核的perf子系统的后期更新引入了对跟踪压缩记录的支持,这可以使文件大小减少三到五倍。Linux内核...
    99+
    2023-06-05
  • 微服务分布式架构实现日志链路跟踪的方法
    Logback 背景 Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前分为下面下个模块: logba...
    99+
    2024-04-02
  • Spring Cloud中服务注册与发现Eureka的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud中服务注册与发现Eureka的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、spring cloud简介spring cloud 为开发人员...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作