基于SkyWalking全链路监控的微服务系统性能调优探索实践 喜欢ヅ旅行 2023-10-15 09:53 69阅读 0赞 ![0895529fab4f414b86ca3dfaf377a2af.png][] 随着开源社区和云计算的快速推进,云原生微服务作为新型应用系统的核心架构,得到了越来越广泛的应用。根据 Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。” 微服务之父马丁·福勒对微服务概述如下:就目前而言,对于微服务业界并没有一个统一的、标准的定义。 但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在自己独立的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API )。 每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等,这种方法能够提高应用系统的响应速度、灵活性和部署弹性,能够按照业务发展与时俱进快速迭代和优化。目前行内越来越多的应用服务系统已升级改造为微服务架构,对现有应用监控体系提出了新的挑战。 为推动微服务应用监控体系的建设和发展,探索微服务全链路监控技术在行内的实践路径,我们重点引入了SkyWalking开源可观测平台,通过非代码侵入的方式,采集微服务全链路监控信息,以可视化的方式展现微服务系统的拓扑关系、追踪交易链路、精准识别性能瓶颈,弥补现有测试工具和方法对微服务全链路应用监控的缺失。 ### **SkyWalking简介** ### SkyWalking是开源的可观测平台的APM系统,专为微服务,云原生架构和基于容器(Docker、k8s、Mesos等)的架构设计的应用程序性能监控工具,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。SkyWalking主要由以下四大部分构成: ### **0****1 Agent代理程序** ### 探针收集数据并根据SkyWalking的要求对数据进行重新格式化(不同的探测器支持不同的来源)。 Agent 运行在各个服务实例中,负责采集服务实例的 Trace、Metrics 等数据,然后通过 gRPC 方式上报给 SkyWalking 后端,供OAP服务器进行分析,本文将在第3章详细介绍Agent代理程序。 ### **0****2 OAP服务器** ### SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于分析链路采样数据的分析计算系统。 在OAP服务主要需要计算以下三类数据: (1)Record数据 记录的链路数据,如Trace、访问日志等数据,由RecordStreamProcessor进行处理。 (2)Metrics数据 记录的指标数据,绝大部分的OAL(Observability Analysis Language)指标都将生成这类数据,由MetricsStreamProcessor进行处理。 (3)TopN数据 记录的周期性的采样数据,如慢SQL的周期性采集,由TopNStreamProcessor进行处理。 Trace、访问日志等这类的明细数据,数据量比较大,但不需要归并处理,所以在OAP节点内部即可处理完成,这些明细数据采用缓存、异步批量处理和流式写入的方式将它们写入到外部存储器( Storage )中。 绝大部分由OAL(Observability Analysis Language)定义的指标数据是需要微服务聚合计算的,所以在OAP集群计算流中将其分为了两个步骤。 步骤一,接收和解析Agent代理程序发送的数据,并执行当前OAP服务节点内的数据聚合,使用OAL或其他聚合模式。 对于不需要聚合的数据,直接将其写入到外部存储器( Storage )中;如果是需要微服务聚合的数据,根据一定的路由规则发送给指定的OAP服务节点。 步骤二,接收和解析经步骤一处理的数据,之后进行二次聚合计算,并将结果数据写入到外部存储器( Storage )中。 针对以上两个步骤,OAP服务节点被分为Receiver(处理步骤一)和Aggregator(处理步骤二)两种角色。 默认情况下,所有OAP服务节点均为Mixed混合角色,其既可以执行步骤一的操作,也可以执行步骤二的操作。在大规模系统部署SkyWalking的场景下,可根据网络流量进行角色分离的两级部署。 OAP服务器还服务响应 SkyWalking UI 界面发送来的查询请求,将前面持久化的数据查询出来,组成正确的响应结果返回给 UI 界面进行展示。 ### **0****3 Storage数据库存储** ### 作为OAP服务的外部存储设备,负责数据的存储,支持多种存储类型,可以使用既有的存储系统,如ElasticSearch,Mysql等,也可以自定义实现存储系统。 SkyWalking数据可以选择存储在已实现的ElasticSearch、 Mysql、 TiDB、 InfluxDB、H2的持久化系统,其中H2是内存数据库,存储的数据在内存里,不落到磁盘上,重启SkyWalking服务会导致数据丢失,是默认的存储方式,一般线上使用ElasticSearch 集群作为其后端存储。 ### **0****4 UI界面** ### 负责可视化和管理SkyWalking 数据,前后端分离,该 UI 界面负责将用户的查询操作封装为 GraphQL 请求提交给 OAP 后端触发后续的查询操作,待拿到查询结果之后会在前端负责展示并可以查看链路调用关系,查看各种监控指标、性能指标等等。 由以上对构成SkyWalking的各分系统的介绍可知,Agent代理程序负责收集各种链路采样数据,通过GRPC的方式传递给OAP进行分析并且存储到数据库中,最终通过UI界面将分析的统计报表、服务依赖、拓扑关系图展示出来。 ### **SkyWalking应用扩展及性能调优** ### 自定义插件开发示例,基于某系统开发自定义插件,将其部署至SkyWalking部署包的plugins目录内。 对某查询接口执行调用操作,多个线程都可以在SkyWalking中查看方法的采样信息,如图1所示: ![图片][b510b1362d3e5ef27feed2a02674aeb3.png] 图1 某查询方法的采样信息 点击图1中的某查询方法链接,可以查看详细的跨度信息,如图2所示。 ![图片][835e48acdeace7317ad11ddb6a2b91ac.png] 图2 跨度信息 由以上信息可知,可以清晰看到我们添加的三个tag标签分别为:invoke开始时间,invoke结束时间,系统间查询方法执行时长(ms)。 系统重构,架构特点为多微服务、多链路系统。可应用参数配置检查、可观测性技术、数据移植、同步验证4个课题的成果。 性能调优示例,为了尽可能减少SkyWaling Agent对业务性能测试的影响,真实监控出业务系统性能瓶颈,我们对SkywalkingAgent进行了一些性能调优,通过调整采样频率和采样数量等相关参数,减少部署SkyWalking Agent后产生的额外的性能损耗。 图3是通过对同一只交易在未部署SkyWaling Agent情况下、已部署SkyWaling Agent标准化(未性能调优)情况下、已部署SkyWaling Agent已性能调优情况下,在相同并发下的性能测试结果对比,调优之后,我们发现性能表现相对于标准化部署场景下有提升,相较未部署agent情况,将性能损耗降到最小。 ![图片][1879907c13709a9f3549fba1e8b66207.png] **最后:**下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取**【保100%免费】** ![8b0171187dce405e878f274a8cdd9ec0.png][] #### **软件测试面试文档** #### 我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 ![a3e4226c935c4242804cbdf26b571bc6.png][] ![58df6cd288094ad8874e814f2477620b.gif][] [0895529fab4f414b86ca3dfaf377a2af.png]: https://img-blog.csdnimg.cn/0895529fab4f414b86ca3dfaf377a2af.png [b510b1362d3e5ef27feed2a02674aeb3.png]: https://img-blog.csdnimg.cn/img_convert/b510b1362d3e5ef27feed2a02674aeb3.png [835e48acdeace7317ad11ddb6a2b91ac.png]: https://img-blog.csdnimg.cn/img_convert/835e48acdeace7317ad11ddb6a2b91ac.png [1879907c13709a9f3549fba1e8b66207.png]: https://img-blog.csdnimg.cn/img_convert/1879907c13709a9f3549fba1e8b66207.png [8b0171187dce405e878f274a8cdd9ec0.png]: https://img-blog.csdnimg.cn/8b0171187dce405e878f274a8cdd9ec0.png [a3e4226c935c4242804cbdf26b571bc6.png]: https://img-blog.csdnimg.cn/a3e4226c935c4242804cbdf26b571bc6.png [58df6cd288094ad8874e814f2477620b.gif]: https://img-blog.csdnimg.cn/58df6cd288094ad8874e814f2477620b.gif
还没有评论,来说两句吧...