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

网站建设方案书 备案百度网络优化

网站建设方案书 备案,百度网络优化,公司起名打分最准的免费网站,上海企业网站制作费用1. MDC 核心概念与价值 MDC (Mapped Diagnostic Context) 是 SLF4J/Logback 提供的线程级上下文存储机制,在 Spring Boot 应用中主要解决: 请求链路追踪:自动在日志中嵌入 traceId、userId 等关键信息日志结构化:无需手动拼接上…

1. MDC 核心概念与价值

MDC (Mapped Diagnostic Context) 是 SLF4J/Logback 提供的线程级上下文存储机制,在 Spring Boot 应用中主要解决:

  • 请求链路追踪:自动在日志中嵌入 traceIduserId 等关键信息
  • 日志结构化:无需手动拼接上下文,提升日志可读性和可分析性
  • 异步上下文传递:解决线程池场景下的上下文丢失问题

2. Spring Boot 集成 Logback MDC 完整配置

2.1 基础依赖(无需额外引入)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 默认包含 logback + slf4j -->

2.2 Logback 配置(logback-spring.xml

<configuration><!-- 控制台输出,携带MDC信息 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} [traceId=%X{traceId}, userId=%X{userId}] - %msg%n</pattern></encoder></appender><!-- 文件输出,JSON结构化日志 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><encoder class="net.logstash.logback.encoder.LogstashEncoder"><includeMdcKeyName>traceId,userId</includeMdcKeyName></encoder></appender><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/></root>
</configuration>

3. 核心代码实现

3.1 拦截器自动注入 traceId

@Component
public class MdcInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 生成唯一traceIdString traceId = UUID.randomUUID().toString().replace("-", "");MDC.put("traceId", traceId);// 从JWT或Session获取用户信息String userId = extractUserId(request);MDC.put("userId", userId);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 必须清理防止内存泄漏MDC.clear();}
}

3.2 注册拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate MdcInterceptor mdcInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(mdcInterceptor).addPathPatterns("/**");}
}

3.3 异步线程池上下文传递

@Configuration
public class AsyncConfig {@Beanpublic Executor asyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor() {@Overridepublic void execute(Runnable task) {// 传递MDC上下文Map<String, String> context = MDC.getCopyOfContextMap();super.execute(() -> {try {if (context != null) {MDC.setContextMap(context);}task.run();} finally {MDC.clear();}});}};executor.initialize();return executor;}
}

4. 高级场景解决方案

4.1 Feign 客户端透传 traceId

@Bean
public RequestInterceptor feignRequestInterceptor() {return template -> {String traceId = MDC.get("traceId");if (traceId != null) {template.header("X-Trace-Id", traceId);}};
}

4.2 RabbitMQ 消费者获取上下文

@RabbitListener(queues = "demo.queue")
public void handleMessage(Message message, @Header("X-Trace-Id") String traceId) {if (traceId != null) {MDC.put("traceId", traceId);}// 业务处理...MDC.clear();
}

5. 关键注意事项

  1. 内存泄漏风险

    • 必须使用 try-finally 确保 MDC.clear()
    • 特别关注线程池场景
  2. 性能影响

    • MDC 操作基于 ThreadLocal,单次操作约 0.01ms
    • 避免在高频循环中频繁修改MDC
  3. 日志规范建议

    // 反模式:手动拼接已有MDC字段
    log.info("User {} operated", MDC.get("userId")); // 正解:直接使用pattern中的%X
    log.info("User operated"); 
    

6. 性能测试数据

场景无MDC (TPS)带MDC (TPS)损耗
同步请求12,34512,100~2%
异步请求8,9128,750~1.8%

测试环境:Spring Boot 2.7 + 4核8G服务器,JMeter 500并发

总结

通过合理使用 MDC,可实现:

  • 日志与业务逻辑解耦
  • 全链路请求追踪
  • 结构化日志分析
  • 线程安全的上下文管理
http://www.dtcms.com/wzjs/429352.html

相关文章:

  • 万州网站制作公司巩义网络推广公司
  • 什么网站可以做相册百度安装应用
  • 平台网站开发价格网站秒收录
  • 自己做的网站有排名吗seo技术 快速网站排名
  • 网站开发招聘最新消息电子商务seo实训总结
  • 怎样自己做电影网站百度企业网盘
  • angularjs 网站模板青岛网站排名公司
  • 网站开发 确认函今日小说排行榜
  • 网站中的滚动照片怎么做网页设计工资一般多少
  • wordpress公司模板seo分析工具有哪些
  • 厦门微信网站建设平面设计培训班学费一般多少
  • 做一个网站建设的流程seo培训学什么
  • 网站防火墙咋样建设阿里云注册域名
  • 公司响应式网站建设报价地推的方法和技巧
  • 做门户网站公司厦门谷歌seo公司有哪些
  • 网站文章标题改了 百度快照多久能改seo优化公司哪家好
  • 明星网页制作模板太原seo公司
  • 牡丹江建设信息网站河南郑州网站推广优化外包
  • 网站可能存在什么问题吗近期重大新闻事件10条
  • 网站建设类的职位新人做外贸怎么找国外客户
  • 安康网站建设制作提升seo排名的方法
  • 无锡企业网站制作哪家好怎么建网站
  • 做网站给女朋友免费网站建站页面
  • 网站怎么申请支付宝接口最近的新闻大事10条
  • 网站建设的技术支持包括百度论坛首页
  • 济南美赞网站建设公司bt磁力在线种子搜索神器下载
  • 地图定位网站开发网站建设公司业务
  • 网站开发的一般过程全球十大搜索引擎入口
  • 在百度做网站销售北京今日重大新闻
  • 怎么看得出网站是哪个公司做的山东百度推广总代理