【Spring全家桶】Spring Cloud 2023.0.x:链路追踪:SkyWalking、OpenTelemetry(附《思维导图》+《面试高频考点清单》)

发布时间:2026/6/7 12:31:07

【Spring全家桶】Spring Cloud 2023.0.x:链路追踪:SkyWalking、OpenTelemetry(附《思维导图》+《面试高频考点清单》) 文章目录Spring全家桶之Spring Cloud 2023.0.x链路追踪知识体系一、核心背景与架构演进1.1 Spring Cloud 2023.0.x链路追踪重大变革1.2 链路追踪在微服务架构中的核心价值1.3 SkyWalking与OpenTelemetry的关系定位二、OpenTelemetry核心知识体系2.1 OpenTelemetry核心概念2.2 OpenTelemetry架构2.3 Spring Cloud 2023.0.x OpenTelemetry集成2.3.1 核心依赖2.3.2 关键配置2.3.3 自动埋点支持2.4 OpenTelemetry Collector三、SkyWalking核心知识体系3.1 SkyWalking核心概念3.2 SkyWalking架构3.3 Spring Cloud 2023.0.x SkyWalking集成3.3.1 Java Agent集成推荐3.3.2 OpenTelemetry集成Spring Cloud 2023.0.x推荐3.4 SkyWalking核心功能四、Spring Cloud 2023.0.x链路追踪最佳实践4.1 技术选型建议4.2 采样策略4.3 自定义埋点4.4 性能优化五、常见问题与解决方案5.1 链路不完整5.2 性能开销过高5.3 数据丢失5.4 从Sleuth迁移到OpenTelemetry六、未来发展趋势Spring Cloud 2023.0.x 链路追踪面试高频问答卡片一、核心背景与架构演进★★★★★ 最新版本必问Q1Spring Cloud 2023.0.xLeyton在链路追踪领域发生了哪些根本性变革Q2链路追踪在微服务架构中的核心价值是什么Q3OpenTelemetry和SkyWalking的核心区别与关系是什么二、OpenTelemetry核心知识体系★★★★★ 核心考点Q4OpenTelemetry的核心概念有哪些Q5OpenTelemetry的分层架构是怎样的Q6Spring Cloud 2023.0.x集成OpenTelemetry需要哪些核心依赖和关键配置Q7OpenTelemetry Collector的作用和管道式架构是什么三、SkyWalking核心知识体系★★★★ 高频考点Q8SkyWalking的核心概念有哪些Q9SkyWalking的分布式架构由哪些组件组成Q10Spring Cloud 2023.0.x集成SkyWalking的两种方式及区别Q11SkyWalking的核心功能有哪些四、最佳实践★★★★ 实操必问Q12不同场景下链路追踪的技术选型建议是什么Q13OpenTelemetry常用的采样策略有哪些各自适用什么场景Q14OpenTelemetry自定义埋点的标准步骤是什么Q15链路追踪系统的性能优化措施有哪些五、常见问题与解决方案★★★ 经验题Q16分布式链路追踪中链路不完整的常见原因及解决方案Q17链路追踪系统性能开销过高的原因及解决方法Q18从Spring Cloud Sleuth迁移到OpenTelemetry的步骤是什么六、未来发展趋势★★ 拓展题Q19分布式链路追踪和可观测性领域的未来发展趋势是什么背诵技巧Spring全家桶之Spring Cloud 2023.0.x链路追踪知识体系一、核心背景与架构演进1.1 Spring Cloud 2023.0.x链路追踪重大变革Spring Cloud 2023.0.x代号Leyton是Spring Cloud里程碑式版本在链路追踪领域发生了根本性转变官方弃用Spring Cloud Sleuth自2023.0.x版本起Spring Cloud不再维护Sleuth项目将其所有功能迁移至OpenTelemetryOpenTelemetry成为官方唯一推荐Spring Cloud官方提供了spring-cloud-starter-opentelemetry系列starter实现与OpenTelemetry的深度集成架构理念升级从单一追踪工具转向统一可观测性标准支持Traces、Metrics、Logs三位一体1.2 链路追踪在微服务架构中的核心价值问题定位快速定位分布式系统中的性能瓶颈和错误根源依赖分析自动发现服务间调用关系生成服务拓扑图性能优化量化每个服务和接口的响应时间、吞吐量业务监控追踪关键业务流程的执行情况保障SLA容量规划基于历史数据预测系统负载指导资源扩容1.3 SkyWalking与OpenTelemetry的关系定位维度OpenTelemetrySkyWalking定位统一可观测性标准与API/SDK全栈APM系统与可观测性平台核心能力数据采集、标准化、导出数据存储、分析、可视化、告警集成方式代码集成或agent无侵入主要通过agent无侵入集成协议支持定义了OTLP标准协议支持OTLP协议同时保留原生协议生态跨语言、跨平台的行业标准专注于Java生态同时支持多语言最佳实践使用OpenTelemetry作为统一的数据采集层SkyWalking作为后端存储和分析平台形成标准采集专业分析的完整链路追踪解决方案。二、OpenTelemetry核心知识体系2.1 OpenTelemetry核心概念Trace一次分布式请求的完整调用链由多个Span组成Span一次独立的操作单元包含操作名称、开始时间、持续时间、标签、事件等Context在服务间传递的上下文信息包含Trace ID、Span ID等Propagator负责在不同服务和进程间传播Context的组件Instrumentation用于采集特定库或框架追踪数据的代码Exporter将采集到的数据导出到后端系统的组件Processor在数据导出前对其进行处理的组件如批量处理、过滤2.2 OpenTelemetry架构OpenTelemetry采用分层架构从上到下分为应用层用户编写的业务代码API层提供给应用开发者使用的标准接口SDK层API的具体实现包含TracerProvider、MeterProvider、LoggerProviderInstrumentation层针对各种库和框架的自动或手动埋点Exporter层将数据导出到不同的后端系统Collector层可选的中间件用于接收、处理和转发可观测性数据2.3 Spring Cloud 2023.0.x OpenTelemetry集成2.3.1 核心依赖!-- Spring Cloud OpenTelemetry核心starter --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-opentelemetry/artifactId/dependency!-- 导出到OTLP Collector --dependencygroupIdio.opentelemetry.exporter/groupIdartifactIdopentelemetry-exporter-otlp/artifactId/dependency!-- 自动配置支持 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-actuator-autoconfigure/artifactId/dependency2.3.2 关键配置spring:application:name:order-serviceopentelemetry:enabled:truetraces:exporter:otlpsampler:parent-based_always_onmetrics:exporter:otlplogs:exporter:otlpexporter:otlp:endpoint:http://otel-collector:4318timeout:10s2.3.3 自动埋点支持Spring Cloud OpenTelemetry starter自动为以下组件提供埋点Spring Web/MVC/WebFluxSpring Data JPA/Redis/MongoDBSpring Cloud GatewaySpring Cloud OpenFeignSpring Cloud StreamKafka/RabbitMQJDBC/MySQL/PostgreSQL2.4 OpenTelemetry CollectorOpenTelemetry Collector是一个独立的进程用于集中接收、处理和导出可观测性数据。它采用管道式架构Receivers接收来自不同来源的数据如OTLP、Jaeger、ZipkinProcessors对数据进行处理如批量处理、过滤、转换、采样Exporters将处理后的数据导出到不同的后端系统如SkyWalking、Prometheus、ElasticsearchExtensions提供额外的功能如健康检查、服务发现三、SkyWalking核心知识体系3.1 SkyWalking核心概念Service一个独立的应用或服务Service Instance服务的一个运行实例Endpoint服务提供的一个接口或方法Trace一次分布式请求的完整调用链Segment一个服务实例内的一段调用链Span一次独立的操作单元Metric系统或服务的性能指标Log应用程序输出的日志信息3.2 SkyWalking架构SkyWalking采用分布式架构主要由以下组件组成Agent部署在应用程序中负责采集追踪数据和性能指标OAP Server接收Agent发送的数据进行分析和存储Storage数据存储层支持Elasticsearch、MySQL、TiDB等UI提供可视化界面展示追踪数据、性能指标和服务拓扑Alarm告警系统根据预设规则触发告警3.3 Spring Cloud 2023.0.x SkyWalking集成3.3.1 Java Agent集成推荐这是SkyWalking最常用的集成方式无需修改代码只需在启动时添加agent参数java-javaagent:/path/to/skywalking-agent.jar\-Dskywalking.agent.service_nameorder-service\-Dskywalking.collector.backend_serviceskywalking-oap:11800\-jarorder-service.jar3.3.2 OpenTelemetry集成Spring Cloud 2023.0.x推荐由于Spring Cloud 2023.0.x官方推荐使用OpenTelemetry因此最佳实践是通过OpenTelemetry采集数据然后导出到SkyWalkingspring:opentelemetry:exporter:otlp:endpoint:http://skywalking-oap:11800/v1/traces3.4 SkyWalking核心功能分布式链路追踪展示完整的调用链支持查看每个Span的详细信息服务拓扑图自动生成服务间的调用关系图性能指标监控监控服务的响应时间、吞吐量、错误率等指标日志分析将日志与追踪数据关联实现一站式问题排查告警系统支持基于指标和追踪数据的告警规则数据库监控监控SQL语句的执行性能网关监控监控Spring Cloud Gateway的请求流量和性能四、Spring Cloud 2023.0.x链路追踪最佳实践4.1 技术选型建议场景推荐方案理由新建项目OpenTelemetry SkyWalking符合Spring Cloud官方标准未来兼容性好已有SkyWalking项目保持SkyWalking Agent无需大规模改造稳定性高多语言环境OpenTelemetry 多语言Agent统一数据标准降低运维复杂度云原生环境OpenTelemetry Collector SkyWalking灵活的数据流处理支持服务网格集成4.2 采样策略合理的采样策略可以在保证问题排查能力的同时降低系统开销AlwaysOnSampler采集所有请求适用于测试环境和低流量生产环境AlwaysOffSampler不采集任何请求适用于性能测试ParentBasedSampler根据父Span的采样决策决定是否采样是最常用的策略TraceIdRatioBasedSampler根据Trace ID的比例进行采样适用于高流量生产环境自定义Sampler根据业务规则进行采样如只采集错误请求或慢请求4.3 自定义埋点在自动埋点无法满足需求时可以进行手动埋点RestControllerpublicclassOrderController{privatefinalTracertracer;publicOrderController(Tracertracer){this.tracertracer;}GetMapping(/orders/{id})publicOrdergetOrder(PathVariableLongid){Spanspantracer.spanBuilder(getOrder).setAttribute(order.id,id).startSpan();try(Scopescopespan.makeCurrent()){// 业务逻辑returnorderService.getOrder(id);}catch(Exceptione){span.recordException(e);span.setStatus(StatusCode.ERROR,e.getMessage());throwe;}finally{span.end();}}}4.4 性能优化合理设置采样率高流量环境下建议使用10%以下的采样率批量导出数据使用BatchSpanProcessor减少网络请求次数限制Span数量避免在一个Trace中创建过多的Span优化Agent配置根据应用特点调整Agent的参数使用异步导出避免数据导出阻塞业务线程五、常见问题与解决方案5.1 链路不完整问题原因Context传播失败、某些组件未被埋点、跨语言调用不兼容解决方案确保所有服务都使用相同的Context传播协议如W3C TraceContext检查是否缺少必要的Instrumentation依赖对于跨语言调用确保双方都支持相同的传播协议5.2 性能开销过高问题原因采样率过高、Span数量过多、数据导出频繁解决方案降低采样率使用基于Trace ID的比例采样减少不必要的自定义埋点增加批量导出的大小和间隔使用OpenTelemetry Collector进行集中处理5.3 数据丢失问题原因网络不稳定、OAP Server负载过高、存储系统性能不足解决方案增加重试机制和超时时间扩容OAP Server集群优化存储系统的性能使用本地缓存暂存数据5.4 从Sleuth迁移到OpenTelemetry步骤1移除Sleuth相关依赖步骤2添加OpenTelemetry相关依赖步骤3修改配置文件将Sleuth配置转换为OpenTelemetry配置步骤4替换自定义埋点代码使用OpenTelemetry API步骤5测试链路追踪功能是否正常工作六、未来发展趋势OpenTelemetry成为行业标准越来越多的厂商和项目将支持OpenTelemetry可观测性一体化Traces、Metrics、Logs将更加紧密地集成AI驱动的可观测性利用AI技术自动分析可观测性数据预测和预防问题eBPF技术的应用使用eBPF技术实现更高效、更低侵入性的数据采集服务网格集成与Istio等服务网格深度集成实现全栈可观测性Spring Cloud 2023.0.x 链路追踪面试高频问答卡片按考点优先级排序答案精炼为背诵版突出得分点一、核心背景与架构演进★★★★★ 最新版本必问Q1Spring Cloud 2023.0.xLeyton在链路追踪领域发生了哪些根本性变革标准答案官方弃用Spring Cloud Sleuth自2023.0.x起停止维护所有功能迁移至OpenTelemetryOpenTelemetry成为唯一官方推荐提供spring-cloud-starter-opentelemetry系列starter深度集成架构理念升级从单一追踪工具转向统一可观测性标准支持Traces、Metrics、Logs三位一体Q2链路追踪在微服务架构中的核心价值是什么标准答案问题定位快速定位分布式系统的性能瓶颈和错误根源依赖分析自动发现服务间调用关系生成服务拓扑图性能优化量化每个服务/接口的响应时间、吞吐量业务监控追踪关键业务流程保障SLA容量规划基于历史数据预测系统负载指导资源扩容Q3OpenTelemetry和SkyWalking的核心区别与关系是什么标准答案维度OpenTelemetrySkyWalking定位统一可观测性标准与API/SDK全栈APM系统与可观测性平台核心能力数据采集、标准化、导出数据存储、分析、可视化、告警协议定义OTLP标准协议支持OTLP原生协议生态跨语言、跨平台行业标准专注Java生态支持多语言最佳实践OpenTelemetry作为统一采集层SkyWalking作为后端分析平台形成标准采集专业分析方案二、OpenTelemetry核心知识体系★★★★★ 核心考点Q4OpenTelemetry的核心概念有哪些标准答案Trace一次分布式请求的完整调用链由多个Span组成Span独立操作单元包含名称、时间、标签、事件等Context服务间传递的上下文Trace ID、Span IDPropagator负责Context跨服务/进程传播的组件Instrumentation针对库/框架的自动/手动埋点代码Exporter将数据导出到后端系统的组件Processor数据导出前的预处理组件批量、过滤Q5OpenTelemetry的分层架构是怎样的标准答案从上到下分为6层应用层用户业务代码API层开发者使用的标准接口SDK层API的具体实现Tracer/Meter/LoggerProviderInstrumentation层自动/手动埋点Exporter层导出到后端系统Collector层可选的集中式数据接收、处理、转发中间件Q6Spring Cloud 2023.0.x集成OpenTelemetry需要哪些核心依赖和关键配置标准答案核心依赖spring-cloud-starter-opentelemetry核心starteropentelemetry-exporter-otlpOTLP协议导出spring-boot-actuator-autoconfigure自动配置支持关键配置spring:opentelemetry:enabled:truetraces:exporter:otlpsampler:parent-based_always_onexporter:otlp:endpoint:http://otel-collector:4318Q7OpenTelemetry Collector的作用和管道式架构是什么标准答案作用独立进程集中接收、处理、转发可观测性数据解耦应用与后端管道式架构Receivers接收多源数据OTLP、Jaeger、ZipkinProcessors数据处理批量、过滤、转换、采样Exporters导出到多后端SkyWalking、Prometheus、ESExtensions额外功能健康检查、服务发现三、SkyWalking核心知识体系★★★★ 高频考点Q8SkyWalking的核心概念有哪些标准答案Service独立应用/服务Service Instance服务的一个运行实例Endpoint服务提供的接口/方法Trace分布式请求完整调用链Segment一个服务实例内的调用链片段Metric系统/服务性能指标Log应用日志信息Q9SkyWalking的分布式架构由哪些组件组成标准答案Agent部署在应用中无侵入采集追踪数据和指标OAP Server接收数据进行分析和存储Storage数据存储层支持Elasticsearch、MySQL、TiDBUI可视化界面展示追踪、指标、服务拓扑Alarm告警系统根据预设规则触发告警Q10Spring Cloud 2023.0.x集成SkyWalking的两种方式及区别标准答案传统Java Agent集成方式启动时添加-javaagent参数优点无代码侵入功能完善缺点不符合Spring Cloud 2023.0.x官方标准OpenTelemetry集成官方推荐方式通过OTLP协议将OpenTelemetry采集的数据导出到SkyWalking配置spring.opentelemetry.exporter.otlp.endpointhttp://skywalking-oap:11800/v1/traces优点符合官方标准未来兼容性好Q11SkyWalking的核心功能有哪些标准答案分布式链路追踪完整调用链展示与Span详情服务拓扑图自动生成服务间调用关系性能指标监控响应时间、吞吐量、错误率日志分析日志与追踪数据关联一站式排查告警系统基于指标和追踪数据的告警规则数据库监控SQL执行性能分析网关监控Spring Cloud Gateway流量与性能监控四、最佳实践★★★★ 实操必问Q12不同场景下链路追踪的技术选型建议是什么标准答案场景推荐方案理由新建项目OpenTelemetrySkyWalking符合官方标准未来兼容性好已有SkyWalking项目保持SkyWalking Agent无需大规模改造稳定性高多语言环境OpenTelemetry多语言Agent统一数据标准降低运维复杂度云原生环境OpenTelemetry CollectorSkyWalking灵活数据流处理支持服务网格Q13OpenTelemetry常用的采样策略有哪些各自适用什么场景标准答案AlwaysOnSampler采集所有请求 → 测试环境、低流量生产AlwaysOffSampler不采集任何请求 → 性能测试ParentBasedSampler继承父Span采样决策 → 最常用保证链路完整性TraceIdRatioBasedSampler按Trace ID比例采样 → 高流量生产环境自定义Sampler按业务规则采样 → 只采集错误请求或慢请求Q14OpenTelemetry自定义埋点的标准步骤是什么标准答案注入Tracer对象使用tracer.spanBuilder()创建Span并设置属性使用try-with-resources包裹span.makeCurrent()管理上下文异常时调用span.recordException()和span.setStatus(StatusCode.ERROR)在finally块中调用span.end()确保Span结束Q15链路追踪系统的性能优化措施有哪些标准答案合理设置采样率高流量环境建议10%以下批量导出数据使用BatchSpanProcessor减少网络请求限制单个Trace的Span数量避免过度埋点优化Agent配置关闭不必要的Instrumentation使用异步导出避免阻塞业务线程引入OpenTelemetry Collector进行集中处理五、常见问题与解决方案★★★ 经验题Q16分布式链路追踪中链路不完整的常见原因及解决方案标准答案原因Context传播失败、组件未被埋点、跨语言调用不兼容解决方案统一使用W3C TraceContext传播协议检查并补充缺失的Instrumentation依赖确保跨语言服务支持相同的传播协议Q17链路追踪系统性能开销过高的原因及解决方法标准答案原因采样率过高、Span数量过多、数据导出频繁解决方案降低采样率使用TraceIdRatioBasedSampler减少不必要的自定义埋点增加批量导出的大小和间隔使用OpenTelemetry Collector集中处理数据Q18从Spring Cloud Sleuth迁移到OpenTelemetry的步骤是什么标准答案移除所有Sleuth相关依赖添加OpenTelemetry核心依赖和OTLP导出依赖将Sleuth配置转换为OpenTelemetry配置替换自定义埋点代码使用OpenTelemetry API测试链路追踪功能是否正常工作六、未来发展趋势★★ 拓展题Q19分布式链路追踪和可观测性领域的未来发展趋势是什么标准答案OpenTelemetry成为行业统一标准Traces、Metrics、Logs三位一体深度融合AI驱动的可观测性自动分析、预测和预防问题eBPF技术应用实现更高效、更低侵入性的数据采集与Istio等服务网格深度集成实现全栈可观测性背诵技巧优先背诵标★★★★★的最新版本考点和核心概念表格类内容对比记忆抓住核心区别点实操类问题按步骤记忆形成流程化思维问题解决类问题先记原因再对应记解决方案

相关新闻