首页 > 其他分享 >深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优

时间:2024-02-02 14:32:17浏览次数:19  
标签:调用 服务 请求 性能 调优 链路 追踪 分布式

微服务架构的快速发展使得分布式链路追踪系统成为观测体系中越来越重要的组件。众安科技的分布式追踪系统经过数年发展后,已覆盖众安保险的绝大部分在线业务,完成了上千+微服务和几十万+服务实例的在线链路追踪。

本次分享将通过介绍调用链瀑布图服务拓扑图这两个调用链系统的核心服务,来帮助大家了解什么是全链路追踪以及如何使用全链路追踪的能力定位链路中的性能瓶颈

1,调用链瀑布图

一个调用链(Trace)代表一个事务或者流程在分布式系统中执行的过程,一条Trace是由多个Span组成的有向无环图,每个Span则代表调用链中被命名并计时的连续性执行片段。

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_链路

有向无环图

调用链数据被采集后,通常使用包含时间轴的时序图来还原了一次业务请求调用,这就是调用链瀑布图。

调用链瀑布图提高了性能数据的易懂性,降低了人工分析的难度,因此被广泛用于分析和定位性能问题。

通过瀑布图,我们可以直观看到Trace中哪条或者哪几条Span对整体时间的占用比例较大,以进行相应地优化。

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_DevOps_02

以上图为例,最上方给出了链路的基础数据:开始时间、持续时间、Span数以及经过的应用服务数,可对链路信息有个初步的全貌了解。

在下方的瀑布图中,同一种颜色的Span对应同一个服务,可直观感知当前Trace经过的服务以及服务接口调用顺序。瀑布图的左边会直接显示请求的应用接口,以及在每次请求后标注是否存在错误,右边则会直观展示耗时以及其占总耗时的比例。


通过这个链路图我们可以看出第一个和第二个服务接口的请求耗时在整个链路中执行时间高达100%。接下来,可以点击该请求, 来查看详细链路信息,以及通过下放关联的链路日志、主机监控指标、pod监控指标、JVM监控指标数据进行进一步问题排查。

2,服务拓扑图

众安科技分布链路追踪系统还可以根据时间段内的Trace还原服务之间的调用关系拓扑。通过服务拓扑图,可以快速知晓 应用和上下游服务之间的调用关系以及发现服务架构中性能短板:


  • 通过应用服务的着色,了解当前调用关系中的各个应用服务的自身性能表现;
  • 通过服务间的连线颜色,可以知晓服务之间的调用性能表现;
  • 如果在该时间段,拓扑图中的某个应用存在错误调用,也可以直观查看到。

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_数据_03

同时,通过点击某个服务节点,也可以轻松下钻更多信息,查看该服务的请求性能表现、慢请求分析、错误请求分析以及基础设施监控指标、错误日志信息等。

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_链路_04

请求性能

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_DevOps_05

错误请求分析

六翼天使(Seraph)智能监控平台推出的面向金融行业的一站式应用监控平台,提供从基础设施层、数据层、应用层到业务层的多层次监控能力支撑。帮助企业实现应用全栈式的性能监控和端到端的全链路追踪诊断,全面提升排障效率,高效保障应用服务可用性,实现运维效能升级。

深度|应用可观测性之灵活如何使用分布式调用链进行服务性能调优_链路_06

本文首发于:众安工程效能

标签:调用,服务,请求,性能,调优,链路,追踪,分布式
From: https://blog.51cto.com/u_16007433/9551617

相关文章

  • CloudFront分发优化:最佳实践与性能调优
    引言AmazonCloudFront作为AWS的全球内容分发网络(CDN)服务,为用户提供了高效、安全、可扩展的内容传递体验。然而,要确保CloudFront分发能够发挥最佳性能,需要深入了解其配置和优化选项。在本博文中,我们将探讨一系列CloudFront的优化最佳实践,以确保您的内容以最快、最可靠的方式传递给......
  • UniGUI使用ADO组件、调用数据库的存储过程、生成EXECL表的例子
    UniGUI使用ADO组件、调用数据库的存储过程、生成EXECL表的例子(自己学习记录一下,不一定合理,仅供参考)本例子是使用ADO等组件连接一个云服务器的一个数据库,调用GetOrg存储过程,把机构信息展现把结果导出的一个EXECL表里,并下载把显示的HSate的值进行替换1表示正常,其他表示暂停......
  • 为分布式应用提供协调服务的 ZooKeeper
    什么是zookeeperzookeeper是Apache开源的一个顶级项目,目的是为分布式应用提供协调服务,当然zookeeper本身也是分布式的。而从设计模式的角度来理解:zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接收观察者的注册。一旦数据......
  • rust使用proxy-wasm-rust-sdk开发envoy wasm 进行GRPC调用
    在一些业务中,对于客户端发送的请求,需要调用grcp服务来确认是否合规,这个时候可以在入口网关做些统一的处理。之前写的用go来编写wasm,在编写grpc调用时发现由于tinygo的原因导致无法进行grpc请求,在找了一圈后决定使用proxy-wasm-rust-sdk来完成该部分功能。一、创建项目cargone......
  • 参数调优 -- 并发参数innodb_thread_concurrency
    innodb_thread_concurrencyinnodb_thread_concurrency是动态参数可以随时修改64个活跃连接以内直接配0高压场景需要从高到低测试,找到最优值高压场景下较低的值可以明显提高写入QPS的占比(高频率的读被限制了)innodb_thread_sleep_delay(微秒)定义在开始排队前,等多久加入队列innodb_......
  • Azure Data Factory(十二)传参调用 Azure Function
    一,引言 在实际的项目中,AzureDataFactroy中的DataFlow并不能彻底帮我们完成一系列复制逻辑计算,比如我们需要针对数据集的每一行数据进行判断计算,DataFlow就显的有些吃力。别怕,AzureDataFactory提供了调用AzureFunction的组件,有了代码的加持,那么解决更复杂的都能迎......
  • 关于多个程序同时调用一个库可能引发的问题
    无论是多少个进程或线程去调用同一个库时,代码段都是共享的数据段在进程之间相互独立,同一个进程中的线程共享该进程的数据段。......
  • 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
    使用PyQt5(PySide2)+SQLAlchemy做一个登录注册页(二)本文将介绍自己用PyQt5+SQLAlchemy做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将PyQt5改为PySide2以获得更宽松的开源协议本文由于涉及到的代码较多,将会是一......
  • 全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用
    前言我们之前跑了一个yolo的模型,然后我们通过PaddleDetection的库对这个模型进行了一定程度的调用,但是那个调用还是基于命令的调用,这样的库首先第一个不能部署到客户的电脑上,第二个用起来也非常不方便,那么我们可不可以直接将Paddle的库直接做成一个DLL部署到我们的软件上呢?答案是......
  • vue3-setup中如何通过ref调用子组件的函数
    vue3-setup中如何通过ref调用子组件的函数子组件通过defineExpose向外导出需要调用的函数在父子间中定义ref引用来调用子组件关键代码:<scriptsetup>import{ref,reactive,defineExpose}from'vue'constshow=ref(false);consttitle=ref('添加收款方式');con......