Skywalking快速介绍

news2024/11/18 15:48:32

(01)SkyWalking简介
SkyWalking专为微服务,云原生架构和基于容器(Docker,k8s,Mesos等)的架构设计的应用程序性能监控工具,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。SkyWalking主要由以下四大部分构成:
(02)Agent代理程序
探针收集数据并根据SkyWalking的要求对数据进行重新格式化,Agent运行在各个服务实例中,负责采集服务实例的Trace、Metrics等数据,然后通过gRPC方式上报给SkyWalking后端,供OAP服务器进行分析。
(03)OAP服务器
SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于分析链路采样数据的分析计算系统。在OAP服务主要需要计算以下三类数据:
1)Record数据,记录的链路数据,如Trace、访问日志等数据,由RecordStreamProcessor进行处理。
2)Metrics数据,记录的指标数据,绝大部分的OAL(Observability Analysis Language)指标都将生成这类数据,由MetricsStreamProcessor进行处理。
3)TopN数据,记录的周期性的采样数据,如慢SQL的周期性采集,由TopNStreamProcessor进行处理。

Trace、访问日志等这类的明细数据,数据量比较大,不需要归并处理,在OAP节点内部即可处理完成,采用缓存、异步批量处理和流式写入的方式将它们写入到外部存储器中。

绝大部分由OAL(Observability Analysis Language)定义的指标数据是需要微服务聚合计算的,在OAP集群计算流中将其分为了两个步骤。

步骤一,接收和解析Agent代理程序发送的数据,并执行当前OAP服务节点内的数据聚合,使用OAL或其他聚合模式。对于不需要聚合的数据,直接将其写入到外部存储器中;如果是需要微服务聚合的数据,根据一定的路由规则发送给指定的OAP服务节点。

步骤二,接收和解析经步骤一处理的数据,之后进行二次聚合计算,并将结果数据写入到外部存储器中。

针对以上两个步骤,OAP服务节点被分为Receiver(处理步骤一)和Aggregator(处理步骤二)两种角色。

默认情况下,所有OAP服务节点均为Mixed混合角色,其既可以执行步骤一的操作,也可以执行步骤二的操作。在大规模系统部署SkyWalking的场景下,可根据网络流量进行角色分离的两级部署。

配置文件application.yml:
core:
selector: ${SW_CORE:default}
default:
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
# Receiver: Receive agent data, Level 1 aggregate
# Aggregator: Level 2 aggregate
role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator

OAP服务器还服务响应SkyWalking UI界面发送来的查询请求,将前面持久化的数据查询出来,组成正确的响应结果返回给UI界面进行展示。

(04)Storage数据库存储
作为OAP服务的外部存储设备,负责数据的存储,支持多种存储类型,可以使用既有的存储系统,如ElasticSearch,Mysql等,也可以自定义实现存储系统。SkyWalking数据可以选择存储在已实现的ElasticSearch,Mysql,TiDB,InfluxDB,H2的持久化系统,其中H2是内存数据库,重启SkyWalking服务会导致数据丢失,是默认的存储方式,一般线上使用ElasticSearch集群作为其后端存储(MySQL小数据量)。

(05)UI界面
负责可视化和管理SkyWalking数据,前后端分离,该UI界面负责将用户的查询操作封装为GraphQL请求提交给OAP后端触发后续的查询操作,待拿到查询结果之后会在前端负责展示并可以查看链路调用关系,查看各种监控指标,性能指标等等。

(06)说明
Log: 日志,Skywalking中需要进行特殊的配置才能显示日志信息,无侵入的性能监控不能显示日志。
Trace: 链路追踪,能够反映输出接口的调用链,比如这个接口调用其他的接口,调用了哪个数据库等等。
Metrics: 度量信息,Skywalking中的所有的图表展示的数据信息统称为metric。

(07)Trace概念
在这里插入图片描述
(08)系统架构
在这里插入图片描述
(09)模块通讯
RPC与Http协议:RPC中可以使用HTTP作为通讯协议。RPC是一种设计、实现框架,通讯协议只是其中一部分。
RPC:提供了一种轻量无感知的跨进程通信的方式,在分布式机器上调用其他方法与本地调用无异(远程调用的过程是透明的,并不知道这个调用的方法是部署在哪里,通过PRC能够解耦服务)。RPC是根据语言的API来定义的,而不是基于网络的应用来定义的,调用更方便,协议私密更安全、内容更小效率更高。
Http:在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点是简单、直接、开发方便。利用现成的http协议进行传输。但如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先(基于TCP协议的情况下)就是长链接,不必每次通信都要像http 一样去3次握手,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。第三个来说就是安全性。最后就是流行的服务化架构、服务化治理,RPC框架是一个强力的支撑。

RPC要做的三个事情
建立通信:在客户端与服务端建立起数据传输通道,大都是TCP连接(gRPC使用了HTTP2)。
寻址:A服务器上的应用需要告诉RPC框架:B服务器地址、端口,调用函数名称。必须实现待调用方法到call ID的映射。
序列化与反序列化:由于网络协议都是二进制的,所以调用方法的参数在进行传递时首先要序列化成二进制,B服务器收到请求后要再对参数进行反序列化。恢复为内存中的表达方式,找到对应的方法进行本地调用,得到返回值。返回值从B到A的传输仍要经过序列化与反序列化的过程。
Skywalking中的通信模型如下:
在这里插入图片描述
其中探针与服务端使用了Grpc通信,如果使用Kafka来替代Grpc,可以防止数据服务挂掉的时候数据丢失。但引入了一层缓存,直接影响了数据的时效性,还要维护额外的中间件,性能可能会存在额外的开销。
官方目前仅支持kafka与Grpc。

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

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

相关文章

【数据结构与算法】之堆及其实现!

目录 1、堆的概念及结构 2、堆的实现 2.1 堆向下和向上调整算法 2.2 堆的创建 2.3 建堆时间复杂度 2.4 堆的插入 2.5 堆的删除 2.6 完整代码 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言&#…

OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:高效开源的OCR工具:Surya-OCR介绍与使用 1 背景 在众多企业应用中,光学字符识别 (OCR) 是一项基础技术。在本文中&…

AI视频教程下载:全面掌握ChatGPT和LangChain开发AI应用(附源代码)

这是一门深入的课程,涉及ChatGPT、LangChain和Python。打造专注于现实世界AI集成的AI应用,课件附有每一节涉及到的源代码。 **你将学到什么:** - 将ChatGPT集成到LangChain的生产风格应用中 - 使用LangChain组件构建复杂的文本生成管道 - …

OpenFeign微服务调用组件使用

前言:OpenFeign是可以跨服务、跨进程的调用方式。 什么是Feign Feign是Netflix开发的声明式、模版化的HTTP客户端。 优势: Feign可以做到使用 HTTP 请求远程服务时就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这…

分布式限流总结

1、计数器 java内部可以使用原子计数器AtomicInteger\Semaphore信号量来做简单的限流 // 限流的个数private int maxCount 10;// 指定的时间内private long interval 60;// 原子类计数器private AtomicInteger atomicInteger new AtomicInteger(0);// 起始时间private lon…

Linux x86_64 UEFI 启动

文章目录 前言一、UEFI二、Disk device compatibility2.1 GPT 磁盘分区表2.1.1 简介2.1.2 Linux 2.2 ESP(EFI) 文件系统2.2.1 简介2.2.2 LinuxLinux Kernel EFI Boot Stub 三、UEFI GPT grub23.1 简介3.2 引导方式 3.3 BOOTX64.EFI3.4 shimx64.efi3.5 …

pip换源ubuntu

到THU网站上有给定的教程 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 方法1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package然后在https://pypi.org/project/nvidia-cublas-cu12/#files 里面搜索你的包名 方法2 python -m pip install --upg…

caffe在ARM鲲鹏920-openEuler2309上的环境搭建

caffe 配置环境 caffe cpu-only openblas protobuf 编译caffe需要3.6~3.10版本,否则会报错 dnf install只能安装3.19版本 需要从源码编译,这里选择了3.9版本 protobuf的github仓 从源码编译安装 caffe-gpu mode caffe的gpu模式需要用到cuda make…

【机器学习-08】 | Scikit-Learn工具包进阶指南:Scikit-Learn工具包之决策树算法实战分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

[猫头虎分享21天微信小程序基础入门教程] 第12天:小程序的自定义组件开发

[猫头虎分享21天微信小程序基础入门教程] 第12天:小程序的自定义组件开发 第12天:小程序的自定义组件开发 🛠️ 自我介绍 大家好,我是猫头虎,一名全栈软件工程师。今天我们继续微信小程序的学习,重点了…

两数交换,数组查找奇数个数的数(位运算)

文章目录 一、异或运算:1.1 Demo1.2 面试题 一、异或运算: 1.1 Demo 0和N进行异或运算都等于N 任何一个数和自己异或运算都等于0 且异或运算满足交换率 a^b b^a eg: a 甲 , b 已 那么则有 a a^b ​ b a^b ​ a a^b 故有&am…

MySQL进阶 日志结尾以及8.0新特性

日志结尾 前面我们聊了mysql的undo日志,redo日志,binlog等等,也从一条update语句来分析了一下日志的执行思路以及版本控制是怎么回事,四大特性是怎么实现的等等 今天我们来说说最后一个错误日志 其实用处不大 因为对我们开发人员来说基本上是没有权限来查看错误日志的 一般…

爬虫工程师---如何用charles把scrapy的爬虫监控起来调试

前言: 想法是,通过charles挂上魔法工具,然后跑代码的时候,实时监控每一个访问的请求状态和返回是个啥? 原理其实和挂手机等一样的;但是,我想说的,让scrapy挂上charles... 之前写过关于fiddler挂代理的路子,还有关于fiddler和charles的证书的文章,不明白的可以去查看 手机模拟器…

Unity Miscellaneous入门

概述 在Unity中有非常多好用的组件,也是Unity为我们提供的方便的开发工具,它的功能可能不是主流的内容,比如渲染,音乐,视频等等,所有Unity把这些内容统一归到了一个杂项文件组中。 Unity组件入门篇总目录-…

Centos 7 上安装【Docker】

安装Docker(Centos 7) 1.1.卸载(可选) 如果之前安装过旧版本的Docker,可以使用下面命令卸载: ***注意:***若提示[您需要 root 权限 执行此命令]需要在命令前加上sudo yum remove docker \do…

2. C++服务器编程-信号

什么是信号 其实信号就是一个中断。就是在执行程序的时候突然来了一个信号,然后我们去执行这个新来的程序了,这就是中断。 处理方法 信号的处理方式∶忽略、捕获、默认处理 linux中都有那些信号 man7 signal 比如说kill -9 安装man中文手册 自己百…

数据挖掘实战-基于内容协同过滤算法的电影推荐系统

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

[JAVASE] 类和对象(五) -- 抽象类和接口

目录 一. 抽象类 1.1 抽象类的定义 1.2 抽象类的实现 1.3 抽象类的作用 1.4 抽象类注意事项 二. 接口 2.1 接口的定义 2.2 接口的实现 2.3 接口的作用 2.4 接口注意事项 三. 总结 一. 抽象类 1.1 抽象类的定义 如果一个类中没有包含足够的信息来描绘一个具体的对象, 那么…

Apache无法确定服务器的完全合格域名(FQDN)报错解决方法

文章目录 一、apache语法检查报错二、报错原因分析三、报错解决办法 一、apache语法检查报错 当我们在进行apache配置时,需要检查配置是否存在语法错误: sudo apache2ctl configtestAH00558: apache2: Could not reliably determine the servers fully…

图解CPU、内存、硬盘的工作原理

1、简要概括 硬件作用cpu 负责执行计算机程序的指令内存用于临时存储程序和数据。硬盘将数据从硬盘读取到内存或将数据从内存写入硬盘的过程。联系三者协同工作,CPU执行程序指令,将需要的数据从硬盘读取到内存,进行计算后再将结果写回内存或…