首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spring-boot/spring云升级后,Spring Cloud Sleuth停止向MDC推送X-B3-TraceId

spring-boot和spring云升级后,Spring Cloud Sleuth停止向MDC推送X-B3-TraceId。

Spring Cloud Sleuth是一个用于分布式系统中实现请求跟踪和服务跟踪的解决方案。它通过将一个唯一的跟踪标识TraceId注入到请求的header中,从而实现请求的追踪。在旧版的Spring Boot和Spring云中,Spring Cloud Sleuth会将TraceId自动推送到MDC(Mapped Diagnostic Context),以便在日志中方便地进行跟踪和定位问题。

然而,在升级后的Spring Boot和Spring云版本中,Spring Cloud Sleuth不再自动将X-B3-TraceId推送到MDC中。这是因为MDC的使用存在一些线程安全的问题,可能导致潜在的内存泄漏和性能问题。因此,Spring Cloud Sleuth决定不再默认推送TraceId到MDC,以避免潜在的风险。

尽管如此,如果你仍然希望将TraceId推送到MDC中,你可以通过编写自定义的日志配置来实现。以下是一个示例:

代码语言:txt
复制
@Configuration
public class SleuthConfig {

    @Bean
    public TraceLoggingFilter traceLoggingFilter(Tracer tracer) {
        return new TraceLoggingFilter(tracer);
    }

    public static class TraceLoggingFilter extends OncePerRequestFilter {

        private final Tracer tracer;

        public TraceLoggingFilter(Tracer tracer) {
            this.tracer = tracer;
        }

        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
            try (Tracer.SpanInScope ws = tracer.withSpanInScope(tracer.nextSpan())) {
                filterChain.doFilter(request, response);
            }
        }
    }
}

上述示例中,我们通过自定义一个TraceLoggingFilter,并在doFilterInternal方法中将TraceId推送到MDC中。

至于Spring Cloud Sleuth的优势和应用场景,它可以帮助我们在分布式系统中进行请求追踪和服务跟踪,方便我们定位和解决问题。它提供了许多功能,包括生成唯一的TraceId、将TraceId注入到请求header中、通过日志记录将TraceId传播到不同的服务等。通过使用Spring Cloud Sleuth,我们可以更好地了解分布式系统中各个服务之间的调用关系,快速定位问题,并对系统进行优化。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 云原生产品:腾讯云原生应用中心(https://cloud.tencent.com/product/tke) 腾讯云原生应用中心是一个全托管的 Kubernetes 服务,支持高可用、弹性伸缩、灰度发布等功能,可以帮助开发者更方便地部署和管理云原生应用。
  2. 服务器运维产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm) 腾讯云云服务器是一种基于云的虚拟服务器,提供高性能计算能力和可扩展性,适用于各种应用场景,包括网站托管、应用程序部署、数据库管理等。
  3. 云存储产品:腾讯云对象存储(https://cloud.tencent.com/product/cos) 腾讯云对象存储是一种安全可靠的云存储服务,适用于各种数据存储需求,包括图片、视频、文档等。

请注意,以上只是腾讯云的部分产品示例,根据实际需求,还可以结合其他腾讯云产品来满足具体的云计算和应用需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Cloud构建微服务架构:分布式服务跟踪(入门)

    通过之前的N篇博文介绍,实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是,随着业务的发展,我们的系统规模也会变得越来越大,各微服务间的调用关系也变得越来越错综复杂。通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟过高或错误的时候都有可能引起请求最后的失败。这时候对于每个请求全链路调用的跟踪就变得越来越重要,通过

    04

    Feign 服务调用使用 Zipkin 链路追踪

    分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin 是 Twitter 的一个开源项目,基于 Google Dapper 实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的 API 接口之外,它也提供了方便的 UI 组件帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。

    00
    领券