SOFATracer 在亿通国际可观察性下的落地与实践

剖析 SOFATracer:蚂蚁金服开源分布式链路追踪组件 本文围绕 SOFATracer 的设计理念与工程实现,系统解析其基于 OpenTracing 的链路模型、高性能异步日志机制、SLF4J MDC 上下文传递能力以及在分布式系统中的可观测性实践,结合源码与架构视角,剖析其在性能、稳定性与工程落地之间的关键取舍,为构建可解释的微服务系统提供参考。 阅读详情

陈晨:Github ID:chenmudu ,SOFATracer Committer , 专注于基础服务和可观察性方向。

SOFATracer 是蚂蚁集团开源的基于 OpenTracing 规范的分布式链路跟踪系统组件,其核心理念就是通过一个全局的 TraceId 将分布在各个服务节点上的同一次请求串联起来。通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来同时也提供远程汇报到 Zipkin /Jaeger 进行展示的能力,以此达到透视化网络调用的目的。

我们选择了将 SOFATracer 作为公司云原生架构下分布式应用透传的核心组件,并依此构建了我们公司内部的众多的产品。其中最重要的是:借助其全局透传能力,将上下游及其相关中间件 Client 端串联起来,为我们内部应用可观察性相关指标做了重要的补充。以此丰富了公司应用维度的相关指标,为我们应用级问题定位、应用链路诊断以及中间件运行期分析提供了重要的能力。所以今天想和大家分享一下分布式链路组件 SOFATracer 在亿通内部落地的相关情况。

SOFATracer:https://github.com/sofastack/sofa-tracer

1

技术背景 

在公司内,我们将 Spring Cloud 全家桶和 Apache Dubbo 作为微服务解决方案和服务通讯框架。由于微服务下分布式应用之间的调用关系开始变得复杂起来,不仅在开发过程中,在后续的测试和发布过程都会存在问题排查过难;同时我们需要开始构建一些其他平台,用于满足我们日益增长的业务需求和其他需求。

由于公司内技术栈的更新迭代和业务增长等背景,我们急需一套应用级系统透传的组件作为基础服务,并在此基础上,为公司内部其他相关平台赋能。经过大量对比以及考虑到团队内技术栈分布和所需中间件产品的需求,我们选择了 SOFATracer 作为首选的透传组件,以下则是我们选择的重要原因。

  • 轻量级 SDK 接入

  • 选择 JavaAgent 这种非侵入式的透传组件诚然是一件省力和简单的事儿,业内也有许多优秀的产品。但是我们的目标是寻找核心的 SDK 作为一部分微服务应用的基础组件,并不直接使用,借助 SOFATracer 完成公司内平台所需的相关需求,构建一整套的分布式应用链路跟踪解决方案;同时我们还考虑团队内技术栈分布情况。由于在调研期间已大致学习和观摩过 SOFATracer 相关源码,确定其代码清晰、实现轻巧及利于后期扩展等特点,使得我们最终选择了 SOFATracer 作为应用透传的基础组件。

  • 灵活的扩展性和可插拔性

  • 由于我们最初的目标是一整套分布式全链路应用相关的解决方案,我们需要其具备易于扩展和可插拔的能力。

    相信熟悉 SOFATracer 的同学已经了解其设计和相关架构,在 plugins 目录下存放众多中间件 Client 端的增强,如果有需要定制化则可自行扩展,同时基于 SOFABoot Starters 下的初始化也使得其增强 具备可插拔性。如果不太熟悉的同学,可以寻找往期介绍 SOFATracer 的相关文章。

  • 满足公司内云原生架构所需特性

  • SOFAStack 作为业内金融级云原生架构的标杆,其开源的组件是金融场景里锤炼出来的优秀实践。由于公司内部 云原生架构下的中间件需要具备动态性、安全性和合规性等特点,所以我们内部定制的中间件 Client 端在 SOFATracer 清晰和具备扩展性的代码下完成了超过 10 余种 Client 端动态能力的增强。感谢蚂蚁集团开源出如此优秀的金融级云原生组件。

2

落地 SOFATracer 解决了我们哪些问题

 
  • 问题定位及应用性能优化,并补全云原生下可观察性遗失的相关指标

  • 借助于 SOFATracer 的全链路透传和借助高性能内存队列 Disruptor 关联数据落盘等功能,我们在内部的可观察性平台上帮助业务应用快速定位问题,分析问题和对部分应用做相关优化,补全了公司云原生架构下关于应用可观察性的相关指标的短板。包括不仅限于业务应用级 Logs , 应用级 Traces , 及其相关中间件 Client 端的 Metrics 指标,同其他监控平台一同构建了云原生下企业级的的可观察性平台。

    例如:我们利用 SOFATracer 全局透传的 TraceId 将此次请求涉及到的所有的应用日志数据串联起来,以此确定整个链路发生的所有情况。问题发生时,确定动态系统数据产生的瞬时状态,为问题定位、还原业务场景提供重要能力。

    这样我们可以通过全局的 TraceId 筛选出某一次请求调用过程中,途径的所有应用日志数据,将复杂冗余的调用情况及其数据转换为可观察的线性数据,以此更方便的去排查问题。

    而且我们借助 Logs 与 Traces 共有的 TraceId 和 SpanId,将业务日志数据与链路追踪进行渲染和关联,将问题定位的范围由应用级到核心代码层级,将可观察性下的关键指标 Logs 与 Traces 进行关联,不断缩小问题的定位范围。

    同时我们将定时上报的统计指标信息用于反馈应用内中间件 Client 端所使用的性能,并不断优化相关 Client 和 Server 端的相关性能参数。

    例如下图,我们内部定义了接口响应时间的步长为 50 ms,用不同颜色去区分不同接口在不同时间内的响应速度,借此可以清晰的确定某些 Rest 接口的响应时间,以便有利于调整相关 Rest Client 端连接参数和优化对应 Http Server 的性能。

    最后,我们将上报的 Metrics 同其他相关指标信息,一起用在我们平台内应用入口做对应的 入口流量检测、系统健康反馈、出口流量以及基础依赖的分析。确保当问题发生的时候,我们可以从整体到局部,从宏观到微观的去探测软件内部黑盒的状态。以便更好的定位问题、分析问题、解决问题,为基础服务和业务提供技术保障。

    至此,很大程度上为公司内 应用拓扑发现、跨应用追踪、全链路的日志关联以及相关应用指标及趋势分析等提供了技术支持。当然这是我们内部平台在可观察性下展现的部分能力,关于更多则涉及到公司隐私,就不在此进行讨论。

  • 基于此构建出业务所需的其他平台产品

  • 我们后期可能会打算借助 SOFATracer 作为应用透传系统的核心,打造出其他各式各样满足业务发展的平台产品。再一次感谢 SOFA 社区开源出如此优秀的追踪组件。

3

对于 SOFATracer 我们是如何回馈开源的

 

良好的社区生态除了官方的不断迭代演进和运营之外,更需要更多的人进行参与。当有越来越多的场景落地,产品才会越来越成熟,才会更好的回馈广大开发者,对此我们也积极的参与了 SOFAStack 的建设和发展:

  • 我们内部将其作为应用间透传的基本组件,用于服务其他平台,并反哺至业务。

  • 同时将部分特殊用法案例以及相关插件的使用指南补充在了 SOFA 的 Guides 项目内,为其他开发者提供便利。包括不仅限于 SpringData Mongo Client 、SpringData Redis Client、Spring Kafka、Spring Amqp (Rabbit)及监听采样的数据控制等。

  • 使用过程中,由于我们部分服务的特殊性,致使官方代码出现兼容性问题,我们反哺给上游分支,并修复部分开源代码。包括不仅限于 RDB 增强端对于 Oracle 数据库的 TNS 模式的匹配、 Http Server 端错误标志的统一和信息填充以及一些小问题的Bug修复。

  • 同时由于我们开发了多个内部中间件的插件,我们将具备通用性的相关代码贡献至官方,作为回报给开源社区,以此表达开源社区为我们带来便利的感谢。贡献的插件包括不仅限于 Spring Kafka、Spring Amqp(Rabbit) 等。关于相关插件代码,详情请关注 SOFATracer 3.X 分支。

最后,非常感谢蚂蚁集团开源出的各个组件,让我们的基础服务插上翅膀,补全了公司在可观察性下的遗漏的应用级指标,为我们的业务应用提供保驾护航的能力。后续,我们将持续关注 SOFA 生态,为社区尽可能的贡献自己微薄的力量。

sofa-tracer:SOFATracer是分布式系统调用跟踪的组件。 并通过统一的traceId在调用链接中记录各种网络调用的日志。 这些日志可用于快速发现故障,服务管理等 SOFATracer SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。 一、背景 在当下的技术架构实施中,统一采用面向服务的分布式架构,通过服务来支撑起一个个应用,而部署在应用中的各种服务通常都是用复杂大规模分布式集群来实现的,同时,这些应用又构建在不同的软件模块上,这些软件模块,有可能是由不同的团队开发,可能使用不同的编程语言来实现、有可能部署了几千台服务器。因此,就需要一些可以帮助理解各个应用的线上调用行为,并可以分析远程调用性能的组件。 为了能够分析应用的线上调用行为以及调用性能,蚂蚁金服基于 提供了分布式链路跟踪 SOFATracer 的解决方案。 二、功能简介 为了解决在实施大规模微服务架构时的链路跟踪问题,SOFATr 立即下载

相关推荐

maya后台批量比对maya文件层级

在cg制作过程中,为了统一制作规范,提高效率我们Pipeline都会制作一个比对层级的工具下面介绍的是maya利用batch文件进行模型与绑定和材质文件进行比对层级。 直接上代码: #!usr/bin/env python # -*- encoding: utf-8 -*- """ @author:MCC @file: compareUI @time: 2018/11/21 16:29 """ i...

CGpipelineTD 1642

蚂蚁集团 SOFATracer 原理与实践

背景微服务架构带来很多好处的同时也让系统的复杂度提升了,传统的单体应用按照不同的维度拆分成一个一个分布式微服务,不同的微服务甚至可能采用不同的语言编写;此外,服务的部署往往都是分布式的,可...

金融级分布式架构 1061

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5323

探索SOFATracer:阿里巴巴开源的分布式追踪系统

在现代微服务架构中,理解复杂的服务调用链路变得越来越重要。为此,阿里巴巴开源了SOFATracer,一个轻量级、高性能的分布式追踪系统,旨在帮助开发者轻松实现监控和诊断。本文将深入探讨SOFATracer的核心特性,技术实现以及其广泛应用场景。 ## 项目简介 SOFATracer是一个基于OpenTracing规范的分布式追踪解决方案,它提供了统一的API接口,支持多种语言如Java、Go、

gitblog_00015的博客 629

STM32H743 SD卡读写避坑实录:CubeMX配置MDMA给FATFS,我的FreeRTOS项目踩了哪些雷?

本文详细解析了STM32H743在CubeMX配置中结合SDMMC、MDMA与FATFS的实战避坑指南,特别针对FreeRTOS环境下的SD卡读写问题提供了解决方案。从时钟配置到FATFS参数设置,再到DMA缓存维护和FreeRTOS集成技巧,帮助开发者高效解决数据损坏、DMA传输错误等常见问题,提升项目稳定性。

weixin_30878501的博客 494

ZED2双目相机运行VINS-FUSION初试

基于ZED2运行VINS-MONO的经验,在运行VINS-FUSION前有几点tips想跟大家分享,应该能在运行的过程中避免一些踩坑吧。 TIPs 1)关于zed2标定 开始使用Kalibr进行相机单目/双目及联合标定,虽然重投影误差最高也就5个像素,但实际使用效果却并不好,故建议大家相机内参还是从ZED2相机发布出的topic获取或可尝试/usr/local/zed/settings文件下的参数文档 另,启动ZED2.launch的时候,会有一个相机(一般是左目)和IMU的轴系转换关系Camera-IMU

xiaojinger_123的博客 5356

链路追踪sofatracer

1.官网地址 https://www.sofastack.tech/projects/sofa-tracer/traceid-generated-rule/ 2.traceId SOFATracer 通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生 3.spanId SOFATracer 中的 SpanId 代表本次调用在整个调用链路树中的位置,假设一个 Web 系统 A 接收了一次用户请求,那么在这个系统的 SOFATrac

qq_35653822的博客 2879

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换

SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是在金融场景里锤炼出来的最佳实践。SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的...

weixin_33691817的博客 567

Veristand自动化测试:Stimulus Profile Editor实战指南

本文是Veristand自动化测试中Stimulus Profile Editor的实战指南。详细介绍了如何利用这一图形化工具,将繁琐的手动测试流程转化为一键自动执行的“剧本”,涵盖工程控制、信号编程、预制动作调用等核心功能,并通过手把手案例演示了构建首个自动化测试脚本的全过程,帮助测试工程师显著提升效率与可靠性。

dd012的博客 493

Ubuntu系统等保3级配置核查与加固

虽然这种方法在某些老旧的系统中仍然有效,但现代Linux发行版通常不推荐使用hosts.deny和hosts.allow文件来管理防火墙规则,因为它们的功能已经被更现代的防火墙管理工具(如iptables或firewalld)所取代。如果你想禁止特定的环境变量,可以从这个列表中移除它们,或者如果你想完全阻止所有环境变量的传递,可以将其设置为空。你可以通过ssh-keygen生成密钥对,并将公钥添加到用户的~/.ssh/authorized_keys文件中。修改配置后,需要重启SSH服务以使更改生效。

悦分享 183

SOFATracer:分布式系统调用跟踪的解决方案

SOFATracer 是由 优快云 公司开发的一个开源项目,旨在为分布式系统提供调用跟踪的解决方案。该项目基于 Apache-2.0 许可证发布,主要使用 Java 语言开发。SOFATracer 能够帮助开发者在复杂的分布式系统中跟踪调用链路,便于问题的快速发现和服务治理。 ## 2. 项目核心功能 SOFATracer 的核心功能包括: - **基于 OpenTracing 规范的分布

gitblog_00258的博客 905

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

SOFATracer 介绍

基于并扩展其能力提供链路跟踪的解决方案。各个框架或者组件可以基于此实现,通过在各个组件中埋点的方式来提供链路跟踪的能力。

2401_86608186的博客 1996

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SOFATracer 使用指南

SOFATracer 是由阿里巴巴开源的一款强大的分布式系统调用跟踪组件,它遵循 OpenTracing 规范,旨在透明化分布式系统的调用链路。通过引入统一的 `traceId`,SOFATracer 记录下整个服务调用链路上的各个网络调用细节,便于开发者快速定位问题、优化服务治理。该组件设计灵活,支持异步日志写入、日志自动清理与滚动,且无缝集成 SLF4J,提供了界面展示能力,可与 Zipkin

gitblog_00032的博客 721

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

5分钟上手decomp2dbg:从安装到符号同步的完整入门教程

想要快速掌握**decomp2dbg**这款革命性的逆向工程工具吗?这篇完整入门指南将带你从零开始,在短短5分钟内学会如何将反汇编器的符号无缝同步到调试器中,彻底改变你的逆向工作流程。**decomp2dbg**作为一款创新的符号同步框架,能让你在GDB调试器中直接使用IDA Pro、Binary Ninja、Ghidra等反汇编器中的符号和反编译代码,极大提升逆向工程效率。 ## 🚀 什么是

gitblog_00039的博客 847

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SOFATracer 项目常见问题解决方案

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现、服务治理等。SOFATracer 是基于 OpenTracing 规范实现的,主要使用 Java 编程语言。 ## 二、新手常见问题与解决方案 ### 问题一:如何快速上手使用 SOFATracer?...

gitblog_00119的博客 421

SOFATracer 插件埋点机制详解

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。 从 RoadMap 和 PR 来看,目前 SOFATracer 已经支持了丰富的组件插件埋点。 目前还未支持的主要是 Dubbo、MQ 以及 Redis 等。本文将从 SOFATrac...

weixin_34294649的博客 1262

终于!SOFATracer 完成了它的链路可视化之旅

????文|赵陈(SOFA 开源之夏链路项目组)武汉理工大学计算机工程硕士在读研究方向:唐卡线稿的自动上色校对|宋国磊(SOFATracer commiter)本文6971 字 阅读 18分...

金融级分布式架构 664

fab-transformation进阶技巧:自定义动画时长与监听器的完整指南

fab-transformation是一款专为Android开发者打造的Floating Action Button(FAB)转换动画库,它能帮助开发者轻松实现FAB与其他UI元素之间的平滑过渡效果。本文将详细介绍如何自定义动画时长和设置监听器,让你的应用交互体验更上一层楼。 ## 为什么需要自定义动画时长? 默认情况下,fab-transformation使用300毫秒的动画时长(定义在`F

gitblog_00069的博客 433

sofa协议服务器,撸了几天的sofa-tracer之后,我悟了

什么是分布式链路跟踪简而言之,在分布式系统下,用于跟踪链路而衍生出的一项技术。应用场景如下:应用A,B,C,D,E 以一个层级关系依赖, 当用户向 应用A 发起请求,但是返回了个异常,为了排查这个问题,我们可能要一台台服务器去排查。在分布式架构下,每个应用又部署了几十上百台服务器, 那一天下来,可能多没找到问题的触发点。通过分布式链路跟踪,结合 如 鹰眼 等平台的 链路分析,我们可以很快定位到 问...

weixin_33404412的博客 753

阿里巴巴29个屌炸天的开源项目,你用过几个?

1. 分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 地址:http

carrots 2363

线程池traceId遗失实记

traceId

似水灬流年的博客 1142

线上 TraceId 集体失踪,大促排查如何破局?

并发工具极大提升了并发代码编写的效率,也预先为潜在问题备好高效解法,是开发过程中的得力助手。但开发人员不能仅满足于表面应用,务必深入剖析其实现逻辑,明晰不同场景下的适用规则。若对并发工具一知半解、盲目套用,不仅难以发挥其最大效能,面对复杂问题时会陷入被动,更可能在生产环境中引发严重线上故障。所以 J.U.C 虽好,可不要贪杯哦!最后,我最近弄了一个Java技术交流群,讨论面试、后端等领域知识,如果你感兴趣,欢迎关注我公众号回复【1】,我拉你入群哈~(我的公众号:程序员徐述)

xujunson的博客 1204

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 422
上一篇: SOFA Weekly | MOSN、SOFABoot、SOFATracer 发布新版本,QA 整理
下一篇: Special Weekly | SOFAStack 社区牛年展望,Let's have fun together!
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值