首页 > 其他分享 >day09-SpringCloud Sleuth+Zipkin-链路追踪

day09-SpringCloud Sleuth+Zipkin-链路追踪

时间:2023-06-05 22:56:30浏览次数:56  
标签:Sleuth day09 调用 zipkin Zipkin member 链路

SpringCloud Sleuth+Zipkin-链路追踪

官网:spring-cloud/spring-cloud-sleuth: Distributed tracing for spring cloud (github.com)

分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程! - bucaichenmou - 博客园 (cnblogs.com)

1.Sleuth+Zipkin是什么

  1. 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用,来协同产生最后的请求结果,每一个请求都会形成一条复杂的分布式服务调用链路
  2. 链路中的任何一环出现高延时或错误都会引起整个请求最后的失败,因此对整个服务的调用进行链路追踪和分析就非常的重要
  3. Sleuth 提供了一套完整的服务跟踪的解决方案并兼容 Zipkin。Sleuth 做链路追踪 , Zipkin 做数据搜集/存储/可视化。
image-20230603193818870

2.Sleuth+Zipkin的工作原理

  1. Span 和 Trace 在一个系统中使用 Zipkin 的过程-图形化

    image-20230603194444789

    • 一条链路通过Trace Id唯一标识 , Span标识发起的请求信息,各span通过parent id关联起来
    • Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
    • Span:基本工作单元,表示调用链路来源,通俗的理解span就是一次请求信息
  2. spans 的 parent/child 关系图形化

    image-20230603195137905

    标识的红线,后一个span节点的parentId 指向/记录 了上一个Span,span就是一次请求信息,多个Span集合就构成一条调用链路,在span=C 这个节点存在分支

3.搭建链路监控实例

要求: 通过 Sleuth 和 Zipkin 可以对服务调用链路进行监控,并在 Zipkin 进行显示

3.1安装Zipkin

  1. 访问 https://repo1.maven.org/maven2/io/zipkin/java/zipkin-server/2.12.9/,点击下载第一个jar文件

    image-20230603200120580
  2. 把 zipkin-server-2.12.9-exec.jar 放到指定的目录

  3. 进入 cmd , 执行指令运行: java -jar zipkin-server-2.12.9-exec.jar

    image-20230603200546977
  4. 浏览器输入:http://localhost:9411/zipkin/

    image-20230603200718944

3.2服务提供方集成 Sleuth/Zipkin

  1. 修改 member-service-provider-10000 的 pom.xml , 增加引入 sleuth+zipkin

    <!--zipkin的starter依赖集成了sleuth+zipkin-->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    
    image-20230603201518115
  2. 修改 member-service-provider-10000 的 appliaction.xml , 指定 Zipkin

    image-20230603201757283

3.3服务消费方集成 Sleuth/Zipkin

略,步骤同3.2

  1. 修改 member-service-consumer-80 的 pom.xml , 增加引入 sleuth+zipkin
  2. 修改 member-service-consumer-80 的 appliaction.xml , 指定 Zipkin

3.4测试

按顺序启动 e-commerce-eureka-server-9001、member-service-provider-10000、member-service-consumer-80。在浏览器输入: http://localhost/member/consumer/get/1

image-20230603203046191

3.5查看监控&分析结果

访问 http://localhost:9411/zipkin/

  1. 选择某个服务,看结果

    image-20230603203414525
    1. 查看一次调用链路的深度,以及该链路包含请求, 各个请求耗时,找到请求瓶颈,为优化提供依据
    image-20230603203640850 image-20230603203534826
  2. 查看服务调用的依赖关系

    image-20230603203911946

标签:Sleuth,day09,调用,zipkin,Zipkin,member,链路
From: https://www.cnblogs.com/liyuelian/p/17456669.html

相关文章

  • Zipkin使用实践
    Zipkin是一个开源的分布式追踪系统,用于收集、存储和查询跨多个服务的分布式请求链路信息。它可以帮助开发人员定位和解决分布式系统中的性能问题和故障。下面是Zipkin的介绍以及使用Java代码实现的入门示例:Zipkin的介绍:Zipkin是一个分布式追踪系统,它通过跟踪和记录请求在分布式......
  • 6.Sleuth
    7.Sleuth7.1.简介链路追踪就是:追踪微服务的调用路径官网:https://spring.io/projects/spring-cloud-sleuth在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个请求都会开成一条复杂的分布式服务调用链路,链路中的......
  • python 基础day09 字符编码
    字符编码前提:字符编码只跟文本数据和字符串有关系,他跟视频文件、音频文件等无关为什么要有字符编码?计算机内部只认识01二进制数据,但是,我们现在在计算机上写的各种各样的字符,为什么都能正常显示?字符编码:它的内部记录着字符和数字之间的对应关系eg:0--->a1---->b00--->aa0......
  • day09 字符编码
    第六节字符编码【一】文本编辑器与Python解释器原理字符串类型、文本文件的内容都是由字符组成的,但凡涉及到字符的存取,都需要考虑字符编码的问题。【1】三大核心硬件所有软件都是运行硬件之上的与运行软件相关的三大核心硬件为cpu、内存、硬盘#1、软件运行前,软件的......
  • SpringCloud Sleuth分布式链路请求跟踪
    ✨SpringCloudSleuth分布式链路请求跟踪基本介绍为什么需要使用SleuthSleuth基本介绍zipkin基本介绍zipkin服务端搭建启动zipkin服务提供者(**cloud-provider-payment8001)**修改pom文件ymlController(**PaymentController)**服务消费者(cloud-consumer-order80)pom文件yml**......
  • 算法学习day09字符串part02-28、459--待办
    packageLeetCode.stringpart02;/***28.找出字符串中第一个匹配项的下标*给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。*如果needle不是haystack的一部分,则返回-1。*实例:*输入:hayst......
  • day09-达人探店
    功能04-达人探店5.功能04-达人探店5.1发布&查看探店笔记5.1.1发布探店笔记探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个:tb_blog:探店笔记表,包含笔记中的标题、文字、图片等tb_blog_comments:其他用户对探店笔记的评价/*表:tb_blog*/CREATETABLE`tb_blog`......
  • Day09-设计模式之组合模式
    设计模式之组合模式引例在现实生活中,存在很多“部分-整体”的关系,例如,大学中的学院与系、总公司中的分公司与部门,文件系统中的文件与文件夹等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。组合模式介绍组合模式定义如下:组合模式(CompositePattern)也称为......
  • day09 react完整手写
     实现Hooks的数据结构fiberNode中可用的字段:memoizedStateupdateQueue  实现useState包括2方面工作:实现mount时useState的实现实现dispatch方法,并接入现有更新流程内 ......
  • Day09
     packagecom.zhang.array; ​ publicclassArrayDemo01{   //变量的类型 变量的名字= 变量的值;   //数组类型   publicstaticvoidmain(String[]args){     int[]nums;//1.声明一个数组     //intnums2[];//c和c++  ......