当前位置: 首页 > wzjs >正文

网络规划设计师视频教程百度云电商中seo是什么意思

网络规划设计师视频教程百度云,电商中seo是什么意思,如何做设计网站页面,网站开发 外包MDCInheritableThreadLocal和spring cloud sleuth 在微服务架构中,日志链路追踪(Logback Distributed Tracing) 是一个关键需求,主要用于跟踪请求在不同服务间的调用链路,便于排查问题。常见的实现方案有两种&#x…

MDC+InheritableThreadLocal和spring cloud sleuth

在微服务架构中,日志链路追踪(Logback + Distributed Tracing) 是一个关键需求,主要用于跟踪请求在不同服务间的调用链路,便于排查问题。常见的实现方案有两种:

手动方案(MDC + InheritableThreadLocal)

自动化方案(Spring Cloud Sleuth + Zipkin/Jaeger)

下面从 Logback 日志集成 的角度,对比这两种方案的实现方式、优缺点及适用场景。

  1. 手动方案:MDC + InheritableThreadLocal
    核心组件
    MDC(Mapped Diagnostic Context)

Logback 提供的线程本地存储,用于存放日志变量(如 traceId)。

日志输出时自动携带 MDC 中的字段(需配置 %X{traceId})。

InheritableThreadLocal

解决异步线程(如线程池、@Async)无法继承 MDC 的问题。

实现步骤
(1) 定义 TraceContext(管理 traceId)

public class TraceContext {private static final InheritableThreadLocal<String> TRACE_ID = new InheritableThreadLocal<>();public static void setTraceId(String traceId) {TRACE_ID.set(traceId);MDC.put("traceId", traceId); // 存入 MDC,Logback 自动输出}public static String getTraceId() {return TRACE_ID.get();}public static void clear() {TRACE_ID.remove();MDC.remove("traceId");}
}

(2) 拦截器设置 traceId(HTTP 请求入口)

public class TraceInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {String traceId = request.getHeader("X-Trace-Id") != null ? request.getHeader("X-Trace-Id") : UUID.randomUUID().toString();TraceContext.setTraceId(traceId);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {TraceContext.clear(); // 防止内存泄漏}
}

(3) Logback 配置(输出 traceId)

<!-- logback-spring.xml -->
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

日志示例:

14:25:30.456 [http-nio-8080-exec-1] [abc123] INFO  com.example.demo.Controller - Request received

(4) 异步线程支持(线程池需额外处理)

// 普通线程
new Thread(() -> {log.info("Async task"); // 能继承 traceId
}).start();// 线程池需使用 TransmittableThreadLocal(阿里开源库)
ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(() -> {log.info("ThreadPool task"); // 默认会丢失 traceId!
});

在这里插入图片描述
TransmittableThreadLocal vs InheritableThreadLocal
在这里插入图片描述

  1. 自动化方案:Spring Cloud Sleuth + Logback
    核心组件
    Spring Cloud Sleuth

自动生成 traceId 和 spanId,并通过 MDC 输出到日志。

支持 HTTP(Feign/RestTemplate)、MQ(Kafka/RabbitMQ)、gRPC 等自动传播。

Logback 集成

Sleuth 自动填充 MDC,无需手动管理。

实现步骤
(1) 引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- 可选:上报到 Zipkin -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

(2) Logback 配置(自动携带 traceId)

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] [%X{traceId:-}] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

日志示例(Sleuth 自动填充 traceId 和 spanId):

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] [%X{traceId:-}] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

(3) 跨服务调用(自动传播 traceId)
HTTP(Feign):自动添加 X-B3-TraceId Header。

MQ(Kafka):消息头自动携带追踪信息。

在这里插入图片描述

  1. 对比总结
    在这里插入图片描述

  2. 推荐选择
    简单项目:使用 MDC + InheritableThreadLocal(或 TransmittableThreadLocal)。

微服务架构:直接上 Spring Cloud Sleuth(或 OpenTelemetry),减少维护成本。

http://www.dtcms.com/wzjs/360229.html

相关文章:

  • 东营网站建设价钱表青岛seo网站排名优化
  • 广州网站建设公司哪家好纯注册app拉新挣钱
  • 做网站需要合同吗北京关键词seo
  • WordPress注册不提示长沙官网seo收费
  • 做网站网页多少钱长春网络推广公司哪个好
  • 关于医疗保障局门户网站建设网上营销是做什么的
  • 长沙网站制作山西seo
  • html网页制作个人网站郑州网站seo技术
  • 做网站推销手表重庆人社培训网
  • 惠州做棋牌网站建设多少钱网络营销工程师前景
  • 做细分领域的同城网站哪家公司做推广优化好
  • 音乐网站制作策划书自己怎样推广呢
  • 网站推广的预算2022年热点营销案例
  • 宁波网站推广方法seo网站推广方案策划书
  • 长安网站建设工作总结网站整站优化推广方案
  • 企业网站如何部署湖南网站建设推荐
  • 装饰公司网站源码今天最新的新闻头条
  • 西安大型网站制作bt种子磁力搜索引擎
  • wordpress评论数据表关键词优化的建议
  • wordpress表格seo网络推广到底是做什么的
  • 秦皇岛做网站的公司哪家好国内免费发布产品的平台
  • 网站上海公安局备案怎么做百度推广和优化有什么区别
  • 企业官方网站系统建设推广引流平台
  • 为wordpress创建一个ftp北京seo加盟
  • 怎么做游戏充值代理网站网络广告投放公司
  • 有什么网站可以做3d竞价托管咨询微竞价
  • 网站排名提升软件seo推广教程视频
  • 网站开发建设费用太原百度快照优化排名
  • 无锡公共建设中心网站免费快速网站
  • 阿里云 个人网站长沙网站推广智投未来