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

传送门

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.rhkb.cn/news/96434.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

填充柄功能

单元格右下角十字符号 顺序式填充 输入1,2,直接拉取即可实现顺序1到10. 复制式填充 CtrlD或者拉取,选择右下角复制单元格。 规律式填充 输入星期一,星期二,下拉一直可以到星期日 自定义填充 选择文件-》选项-》自定义序列 输…

proteus结合keil-arm编译器构建STM32单片机项目进行仿真

proteus是可以直接创建设计图和源码的,但是源码编译它需要借助keil-arm编译器,也就是我们安装keil-mdk之后自带的编译器。 下面给出一个完整的示例,主要是做一个LED灯闪烁的效果。 新建工程指定路径,Schematic,PCB layout都选择默…

leetcode292. Nim 游戏(博弈论 - java)

Nim 游戏 Nim 游戏题目描述博弈论 上期经典算法 Nim 游戏 难度 - 简单 原题链接 - Nim游戏 题目描述 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 -…

Mac OS下应用Python+Selenium实现web自动化测试

在Mac环境下应用PythonSelenium实现web自动化测试 在这个过程中要注意两点: 1.在终端联网执行命令“sudo pip install –U selenium”如果失败了的话,可以尝试用命令“sudo easy_install selenium”来安装selenium; 2.安装好PyCharm后新建project&…

AI 绘画Stable Diffusion 研究(八)sd采样方法详解

大家好,我是风雨无阻。 本文适合人群: 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何选用合适采样器以进一步提高出图质量的朋友。 想要进一步了解AI绘图基本原理的朋友。 对stable diffusion AI绘图感兴趣的朋…

C++11并发与多线程笔记(10) future其他成员函数、shared_future、atomic

C11并发与多线程笔记(10) future其他成员函数、shared_future、atomic 1、std::future 的成员函数1.1 std::future_status 2、std::shared_future:也是个类模板3、std::atomic原子操作3.1 原子操作概念引出范例:3.2 基本的std::at…

LangChain手记 Chains

整理并翻译自DeepLearning.AILangChain的官方课程:Chains(源代码可见) Chains 直译链,表达的意思更像是对话链,对话链的背后是思维链 LLM Chain(LLM链) 首先介绍了一个最简单的例子&#xff0c…

Blender 混合现实3D模型制作指南【XR】

本教程分步展示如何: 减少 3D 模型的多边形数量,使其满足 Microsoft Dynamics 365 Guides 和使用 Microsoft Power Apps 创建的应用程序中包含的混合现实组件的特定性能目标的性能需求。将 3D 模型的多种材质(颜色)组合成可应用于…

react-vite-antd环境下新建项目

vite 创建一个react项目 1. 安装vite并创建一个react项目1. 我使用的 yarn安装,基本配置项目名字, 框架react ,js2. cd vite-react进入项目目录安装node包并启动项目 2. 安装引入Ant Design引入依赖(我用的yarn,没有安装的也可以使…

C++之atomic_load与atomic_store原子操作实例(一百八十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

QGraphicsView 实例3地图浏览器

主要介绍Graphics View框架&#xff0c;实现地图的浏览、放大、缩小&#xff0c;以及显示各个位置的视图、场景和地图坐标 效果图: mapwidget.h #ifndef MAPWIDGET_H #define MAPWIDGET_H #include <QLabel> #include <QMouseEvent> #include <QGraphicsView&…

2021年03月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&#xff…

android resoure资源图片颜色值错乱

最近androidstudio开发&#xff0c;添加一些颜色值或者drawable资源文件时&#xff0c;运行app,颜色值或者图片对应不上&#xff0c;暂时找不到原因&#xff0c;望告知。 暂时解决方法&#xff1a;

32.Netty源码之服务端如何处理客户端新建连接

highlight: arduino-light 服务端如何处理客户端新建连接 Netty 服务端完全启动后&#xff0c;就可以对外工作了。接下来 Netty 服务端是如何处理客户端新建连接的呢&#xff1f; 主要分为四步&#xff1a; md Boss NioEventLoop 线程轮询客户端新连接 OP_ACCEPT 事件&#xff…

Azure创建自定义VM镜像

创建一个虚拟机&#xff0c;参考 https://blog.csdn.net/m0_48468018/article/details/132267096&#xff0c;入站端口开启80&#xff0c;22 进行远程远程连接 使用CLI命令部署NGINX,输入如下命令 sudo su apt-get update -y apt-get install nginx git -y最后的效果 4. 关闭…

RocketMQ部署 Linux方式和Docker方式

一、Linux部署 准备一台Linux机器&#xff0c;部署单master rocketmq节点 系统ip角色模式CENTOS10.4.7.126Nameserver,brokerMaster 1. 配置JDK rocketmq运行需要依赖jdk&#xff0c;安装步骤略。 2. 下载和配置 从官网下载安装包 https://rocketmq.apache.org/zh/downlo…

Docker碎碎念

docker和虚拟机的区别 虚拟机&#xff08;VM&#xff09;是通过在物理硬件上运行一个完整的操作系统来实现的。 每个虚拟机都有自己的内核、设备驱动程序和用户空间&#xff0c;它们是相互独立且完全隔离的。 虚拟机可以在不同的物理服务器之间迁移&#xff0c;因为它们是以整…

【C++ 记忆站】引用

文章目录 一、引用概念二、引用特性1、引用在定义时必须初始化2、一个变量可以有多个引用3、引用一旦引用一个实体&#xff0c;再不能引用其他实体 三、常引用四、使用场景1、做参数1、输出型参数2、大对象传参 2、做返回值1、传值返回2、传引用返回 五、传值、传引用效率比较六…

服务器数据恢复-EqualLogic存储RAID5数据恢复案例

服务器数据恢复环境&#xff1a; 一台DELL EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。存储存放虚拟机文件&#xff0c;采用VMFS文件系统&#xff0c;划分了4个lun。 服务器故障&检测&分析&#xff1a; 存储设备上有两个硬盘指示灯显示黄色&#xff0c;存储…

虫情测报灯

在农业生产过程中&#xff0c;农作物的虫害问题永远都是放在首位的。随着现代生活科技的发展和社会进步&#xff0c;人们对物质也有了新的要求。伴随农作物品种的增加&#xff0c;农药和化肥的使用也在导致农业虫害问题日益加剧&#xff0c;在这种不良的耕作状态下&#xff0c;…