分布式链路追踪-01初步认识SkyWalking

一 SkyWaling是什么?

Skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
文档: https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档: https://skyapm.github.io/document-cn-translation-of-skywalking/

二 为什么需要SkyWaling

对于一个大型的几十个、几百个微服务构成的分布式架构系统,我们通常会遇到下面一些问题,比如:

  1. 如何串联整个调用链路,快速定位问题?
  2. 如何理清各个微服务之间的依赖关系?
  3. 如何进行各个微服务接口的性能分折?
  4. 如何跟踪整个业务流程的调用处理顺序?
    针对以上问题,我们可以依赖SkyWalking强大的链路追踪功能对我们整个调用链路进行可视化的展示以及分析。

三 常见的分布式链路追踪工具

  1. Zipkin是Twitter开源的调用链分析工具,目前基于Springcloud Sleuth得到了广泛的使用,特点是轻量,部署和使用简单。
  2. Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
  3. SkyWalking是中国开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
  4. CAT是大众点评开源的基于编码和配置的调用链分析、应用监控分析、日志采集、监控报警等一系列的监控平台工具。
    这四种分布式链路追踪工具的原理如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

从上图可以看出来,这四种分布式链路追踪的实现原理各有不同,那么它们的性能是如何呢?相关资料模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即 100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。 合起来,一共有12种。下面看下汇总表:
在这里插入图片描述
综合分析,在常用的分布式链路追踪中,SkyWaking不仅性能比较强,追踪的粒度可以达到方法级别,而且支持根据traceid查询,更支持报警、jvm监控等强大的功能。
四 SkyWalking的特性
SkyWalking主要有以下特性:
1、多种监控手段,可以通过语言探针和service mesh获得监控的数据。
2、支持多种语言自动探针,包括 Java,.NET Core 和 Node.JS。
3、轻量高效,无需大数据平台和大量的服务器资源。
4、模块化,UI、存储、集群管理都有多种机制可选。
5、支持告警。
6、优秀的可视化解决方案。

五 SkyWaling的整体架构

在这里插入图片描述

基于官方架构图,SkyWalking一共分为四个部分:
1、上部分Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。
2、下部分 SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能。
3、右部分Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES,主要考虑是SkyWalking开发团队自己的生产环境采用ES为主。
4、左部分SkyWalking UI:负责提供控制台,进行链路的展示。

5.1 探针收集方法

SkyWalking进行链路信息收集支持三种探针方法:
● Agent – 基于ByteBuddy字节码增强技术实现,通过jvm的agent参数加载,并在程序启动时拦截指定的方法来 收集数据。 (最推荐)
● SDK – 程序中显式调用SkyWalking提供的SDK来收集数据,对应用有侵入。
● Service Mesh – 通过Service mesh的网络代理来收集数据。

5.2 后端服务

接受探针发送过来的数据,对调用链进行分析和存储,后端服务主要分为两部分
● OAP(Observability Analysis Platform)- 进行度量分析和调用链分析的后端平台,并支持将数据存储到各种数据库中,如:ElasticSearch,MySQL,TiDB等。
● OAL(Observability Analysis Language)- 用来进行度量分析的DSL,类似于SQL,用于查询度量分析结果和警报。

5.3 界面(UI)

UI支持两种方式展示:
● RocketBot UI – SkyWalking 7.0.0 的默认web UI
● CLI – 命令行界面

这三个模块的交互方式如下:
在这里插入图片描述

探针负责收集我们的链路信息,通过gRPC方式上报到我们的后端服务上。后端服务把链路信息存储到storage层,UI界面通过jetty方式和后端交互,进行数据可视化展示。

六 SkyWaling部署架构图

上面介绍了SkyWaling的基本信息,那么它的怎么应用到我们的服务应用中进行一个分布式链路追踪的呢?
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/950aa92a91b3459fb9adf1f480345868.png
Skywalking Agent和业务系统绑定在一起,负责收集各种监控数据,然后Agent会把收集的数据上报到我们的OAP服务集群中,OAP服务进行数据分析并把数据持久化到数据库中,我们的UI服务负责接收前端请求,发送请求到后端服务进行请求查询,并把结果返回到界面上。Skywalking OapService通常以集群的形式存在。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea 无法输入中文 快速解决

idea在某些情况会出现无法输入中文的情况,我们不去深究内部原因,直接上解决方案: 1、点击菜单help->Edit Custom VM Options 2、最后一行,追加: -Drecreate.x11.input.methodtrue 、 3、重启

软件分享丨PDF Shaper

【资源名】PDF Shaper 【地址】https://www.pdfshaper.com/ 【资源介绍】 PDF Shaper Professional是一款功能强大的PDF文档编辑与转换工具,使用它可以对PDF文件进行各种转换、提取、合并、旋转、加密、解密等编辑操作,主要功能有分割和合并PDF文件&…

无人机飞手执照培训为什么需要脱产学习?

无人机飞手执照培训需要脱产学习的原因主要基于以下几个方面: 一、知识体系的系统性与复杂性 无人机飞手培训涵盖的内容广泛且深入,包括无人机基础知识、飞行原理、气象学、法律法规等多个方面。这些知识体系相互关联,需要学员进行系统的学…

排序算法 —— 计数排序

目录 1.计数排序的思想 2.计数排序的实现 3.计数排序的分析 时间复杂度 空间复杂度 稳定性 优点 缺点 1.计数排序的思想 顾名思义,计数排序就是通过计数的方式来排序,其基本思想为: 开辟一个计数数组,统计每个数出现的次…

Windows 10、Office 2016/2019 和 PPTP 和 L2TP协议即将退役,企业应尽早做好准备

关心微软技术和产品的朋友一定对这个网站很熟悉:https://microsoftgraveyard.com/,这里静静的躺着很多微软技术和产品。近日,微软又在准备一场新的“告别仪式”了,这次是 Windows 10、Office 2016/2019 和一些老旧的协议与技术。让…

【Linux】按时间抽取附件

#1024程序员节|征文# 希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 附件表 t_file 中有创建时间,需求是抽取202407-202408 月创建的附件到指定目录,并保持层级目录。 解决方案:由于抽取的附件条数…

2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP

文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整,仅供参考! 除WEB,RE,PWN外,其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…

ES6:let和const命令解读以及变量的解构赋值

有时候,我们需要的不是答案,而是一双倾听的耳朵 文章目录 let和const命令变量的解构赋值 let和const命令 let和const命令都是声明变量的关键字,类同varlet特点 用来声明变量,不能再次定义,但是值可以改变存在块级作用…

【Nuvoton干货分享】开发应用篇 5 -- 32bit MCU Flash 操作

在实际开发中,我们都会碰到需要把部分数据存放在不易失存储空间上,比如外部NOR FLASH、EEPROM、SD等存储空间上,针对数据量不大的情况下,可以考虑将数据存放在芯片ROM存储空间。Nuvoton 32bit MCU ROM存储空间包括LDROM、APROM、S…

什么是缓存?

缓存是将文件副本存储在临时位置的过程,以便可以更快地访问这些文件。从技术上讲,缓存是文件或数据副本的任何临时存储位置,但通常是指互联网技术中的缓存。Web 浏览器缓存 HTML 文件、JavaScript 和图像,以便更快地加载网站&…

python 爬虫抓取百度热搜

实现思路: 第1步、在百度热搜页获取热搜元素 元素类名为category-wrap_iQLoo 即我们只需要获取类名category-wrap_为前缀的元素 第2步、编写python脚本实现爬虫 import requests from bs4 import BeautifulSoupurl https://top.baidu.com/board?tabrealtime he…

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的,如下: 解决方案: proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题,会导致…

阿里云项目启动OOM问题解决

#1024程序员节|征文# 问题描述 随着项目业务的增长,系统启动时内存紧张,每次第一次启动的时候就会出现oom第二次或者第n的时候,就启动成功了。 带着这个疑问,我就在阿里云上提交了工单,咨询为什么第一次…

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言 随着物联网(IoT)技术的飞速发展,越来越多的设备开始连接到互联网,形成了一个万物互联的世界。在这个背景下,设备与云端之间的通讯变得尤为重要。 本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4…

CTFHUB技能树之文件上传——MIME绕过

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是MIME验证 新建04MIME.php文件&#xff0c;内容如下&#xff1a; <?php echo "Ciallo&#xff5e;(∠・ω< )⌒★";eval($_POST[pass]);?> &#xff08;这里加了点表情&#xff0c;加带点私货&#x…

传感器驱动系列之PAW3212DB鼠标光电传感器

目录 一、PAW3212DB鼠标光电传感器简介 1.1 主要特点 1.2 引脚定义 1.3 传感器组装 1.4 应用场景 1.5 传感器使用注意 1.5.1 供电选择 1.5.2 SPI读写设置 1.5.3 MOTION引脚 1.6 寄存器说明 1.6.1 Product_ID1寄存器 1.6.2 MOTION_Status寄存器 1.6.3 Delta_X寄存器…

GRU神经网络理解

全文参考以下B站视频及《神经网络与深度学习》邱锡鹏&#xff0c;侧重对GPU模型的理解&#xff0c;初学者入门自用记录&#xff0c;有问题请指正【重温经典】GRU循环神经网络 —— LSTM的轻量级版本&#xff0c;大白话讲解_哔哩哔哩_bilibili 更新门、重置门、学习与输出 注&a…

Go通过gorm连接sqlserver报错TLS Handshake failed

Go通过gorm连接sqlserver报错TLS Handshake failed [error] failed to initialize database, got error TLS Handshake failed: tls: server selected unsupported protocol version 301 panic: TLS Handshake failed: tls: server selected unsupported protocol version 301 …

综合小程序的设计

熟悉python可视化的设计 完成综合小程序的设计。 登录系统设计 from tkinter import * import tkinter.messagebox def onClick(): namebname.get() pwdbpwd.getO() if (namezhou and pwd123): tkinter.messagebox.showinfo(title提示,message登陆成功&a…

Linux 中 .bash_history、.bash_logout 等用户配置文件

目录 前言.bash_history.bash_logout.bash_profile.bashrc.cshrc.tcshrc.viminfo 总结 前言 在 Linux 中我们经常会看见用户家目录下存在 .bash_history、.bash_logout、.bash_profile、.bashrc、.cshrc、.tcshrc、.viminfo 这写文件&#xff0c;那它们区别是什么呢&#xff1…