Spring Cloud 系列之OpenFeign:(7)链路追踪zipkin

news2024/12/29 10:15:31

传送门

Spring Cloud Alibaba系列之nacos:(1)安装

Spring Cloud Alibaba系列之nacos:(2)单机模式支持mysql

Spring Cloud Alibaba系列之nacos:(3)服务注册发现

Spring Cloud 系列之OpenFeign:(4)集成OpenFeign

Spring Cloud 系列之OpenFeign:(5)OpenFeign的高级用法

Spring Cloud 系列之OpenFeign:(6)OpenFeign的链路追踪

关于链路追踪

 在前面一节Spring Cloud 系列之OpenFeign:(6)OpenFeign的链路追踪中,通过MDC实现了一个简易的链路追踪服务:

里面对于链接追踪没有过多的讨论,所以这里还是要先对它是什么,有什么作用,常用实现方式再做一次探讨!

为什么需要链路追踪

链路追踪这个名词也是17年初的时候才接触,当时入职一家做互联网金融的公司(以前都是在传统软件公司做企业级金融系统开发)。公司据说不久前融资了一笔钱,招兵买马准备大干一场。那时候公司在推行微服务,框架就是Spring Cloud套件,也就接触了zipkin这个概念,当时很经过一番名词轰炸,还是带来了不小的震撼:微服务,Springboot,注册中心Eureka,配置中心Config,网关Zuul,断路器,负载Ribbon,以及链路追踪的Sleuth(Springboot3已经被Micrometer Tracing项目取代)甚至是JAVA8的Lambda,还入手了一本翟永超的《Spring Cloud微服务实战》。

 被名词轰炸的一个背后原因是在开发toB系统的那些年,系统基本都是单体的,所有的功能都在一个项目代码里面,包括前端/后端(那时候也不流行前后端分离):

  • 银行/机构的大部分管理系统(甚至核心系统)都是内网专线,即所谓的私部署,不像toC这样面对互联网开放
  • toB的系统并发虽然业务相对复杂,但并发不高,对分布式没有强烈的需求
  • 最后一点,不一味追求新技术,稳定成熟才是首要考虑需求

在单体系统时代出了问题或者要排查问题,基本在本系统排查就够了,一般不超出关联上下游2-3个系统:

  • 查询本系统的相关日志即可,排查比较方便,内容项也不多:应用日志/数据库
  • 或者人肉联系上下游系统相关负责人去查下,范围也不扩大

但是在分布式系统架构下,这个方式就有点困难了:

  • 随着系统的调用链路变长依赖系统增多,查询日志就显得不那么容易了:几个十几个系统要逐个排查日志,可能每个系统的日志规范还不一样,中间要是哪个漏了还查不出来,难以定位
  • 微服务架构下,多半组织架构也不一样了:会按照微服务来划分不同的开发团队,沟通成本几何增加,要是每个问题都人肉拉群处理,那很快就大家不用干活了

所以分布式系统架构对于统一的服务调用请求追踪就显示很有必要了:一个链路追踪需要达到至少2方面的要求:

  • 从调用过程角度看:从客户端发起请求开始,记录请求流经的每一个服务,直到向客户端返回响应为止
  • 从记录过程角度看:能够记录具体调用了哪些服务,以及调用的顺序、开始时点、执行时长等信息

什么是链路追踪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/899795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三章内存管理

1.内存的基础知识 内存可存放数据。程序执行前需要先放到内存中才能被CPU处理――缓和CPU与硬盘之间的速度矛盾 指令中的地址参数直接给出了变量x的实际存放地址(物理地址) 1.绝对装入 绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将…

springboot+Vue--打基础升级--(二)写个主菜单导航界面

1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…

ansible(2)-- ansible常用模块

部署ansible:ansible(1)-- 部署ansible连接被控端_luo_guibin的博客-CSDN博客 目录 一、ansible常用模块 1.1 ping 1.2 command 1.3 raw 1.4 shell 1.5 script 1.6 copy 1.7 template 1.8 yum 11.0.1.13 主控端(ansible)11.0.1.12 被控端(k8s…

K8S deployment挂载

挂载到emptyDir 挂载在如下目录,此目录是pod所在的node节点主机的目录,此目录下的data即对应容器里的/usr/share/nginx/html,实现目录挂载 apiVersion: apps/v1 kind: Deployment metadata:annotations:deployment.kubernetes.io/revision: …

Qt实现简单的漫游器

文章目录 Qt的OpenGL窗口GLSL的实现摄像机类的实现简单的漫游器 Qt的OpenGL窗口 Qt主要是使用QOpenGLWidget来实现opengl的功能。  QOpenGLWidget 提供了三个便捷的虚函数,可以重载,用来重新实现典型的OpenGL任务: paintGL:渲染…

零基础入门网络安全,收藏这篇不迷茫【2023最新】

前言 最近收到不少关注朋友的私信和留言,大多数都是零基础小友入门网络安全,需要相关资源学习。其实看过的铁粉都知道,之前的文里是有过推荐过的。新来的小友可能不太清楚,这里就系统地叙述一遍。 01.简单了解一下网络安全 说白…

【ARM Linux 系统稳定性分析入门及渐进12 -- GDB内存查看命令 “x“(examine)】

文章目录 gdb 内存查看命令 examine 上篇文章:ARM Linux 系统稳定性分析入门及渐进11 – GDB( print 和 p 的使用| 和 ::的使用|ptype|{<type>} <addr> ) gdb 内存查看命令 examine examine是…

【C# 基础精讲】LINQ 基础

LINQ(Language Integrated Query)是一项强大的C#语言特性,它使数据查询和操作变得更加简洁、灵活和可读性强。通过使用LINQ,您可以使用类似SQL的语法来查询各种数据源,如集合、数组、数据库等。本文将介绍LINQ的基础概…

Kvm配置ovs网桥

环境:部署在kvm虚拟环境上(让虚拟机和宿主机都可以直接从路由器获取到独立ip) 1、安装ovs软件安装包并启动服务(一般采用源码安装,此处用yum安装) yum install openvswitch-2.9.0-3.el7.x86_64.rpm syste…

UVC摄像头

1 版本历史 1.1 UVC uvc_version UVC 1.0: Sep-4-2003 UVC 1.1: Jun-1-2005 UVC 1.5: August-9-2012, H.264 video codec. Linux 4.5 introduces UVC 1.5, but does not support H264. 1.2 V4L版本历史 Video4Linux取名的灵感来自1992 Video for Windows(V4W&#x…

第一节 Dubbo框架的介绍

1. 什么是Dubbo ? 官⽹地址: http://dubbo.apache.org/zh/ ⽬前,官⽹上是这么介绍的:Apache Dubbo 是⼀款⾼性能、轻量级的开源 Java 服务 框架 在⼏个⽉前,官⽹的介绍是:Apache Dubbo 是⼀款⾼性能、轻…

mysql的两张表left join 进行关联后,索引进行优化案例

一 mysql的案例 1.1 不加索引情况 1.表1没加索引 2.表2没加索引 3.查看索引 1.2 添加索引 1.表1添加索引 2.表2添加索引 3.查看

python使用dir()函数获取对象中可用的属性和方法(看不到python源码又想知道怎么调用,DLL调用分析,SDK二次开发技巧)

有时候调用一些SDK,但是人家又是封装成dll文件形式调用的,这时没法看源码,也不想看其对应的开发文档(尤其有些开发文档写得还很难懂,或者你从某个开源社区拿过来,就根本没找到开发文档)&#xf…

回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测(多指标,多图&#xf…

回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现WOA-BP鲸鱼优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)效果一览基本…

运动恢复结构(SfM)_OpenMVG_代码的核心逻辑

参考: 深蓝学院,基于图像的三维重建 课程 1. 输入输出 数据集 fountain,选⾃Lund University开源的三维重建数据集 (http://www.maths.lth.se/matematiklth/personal/calle/dataset/dataset.html ) 2. 特征提取与特征匹配

优于立方复杂度的 Rust 中矩阵乘法

优于立方复杂度的 Rust 中矩阵乘法 迈克克维特 跟随 发表于 更好的编程 6 分钟阅读 7月 <> 143 中途&#xff1a;三次矩阵乘法 一、说明 几年前&#xff0c;我在 C 年编写了 Strassen 矩阵乘法算法的实现&#xff0c;最近在 Rust 中重新实现了它&#xff0c;因为我继续…

TCP报文段的首部格式

TCP传送的数据单元称为报文段&#xff0c;既可以用来运载数据&#xff0c;又可以用来建立连接、释放连接和应答 一个TCP报文段可以分为首部和数据部分&#xff0c;整个TCP报文段作为IP数据报的数据部分封装在IP数据报中。首部的固定长度为20B&#xff0c;因此最短为20B&#xf…

17-工程化开发 脚手架 Vue CLI

开发Vue的两种方式: 1.核心包传统开发模式: 基于 html/css /js 文件&#xff0c;直接引入核心包&#xff0c;开发 Vue。 2.工程化开发模式: 基于构建工具 (例如: webpack)的环境中开发 Vue。 问题: 1. webpack 配置不简单 2. 雷同的基础配置 3. 缺乏统…

2023.8 - java - 对象和类

public class Dog {String breed;int size;String colour;int age;void eat() {}void run() {}void sleep(){}void name(){} } 一个类可以包含以下类型变量&#xff1a; 局部变量&#xff1a;在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方…