Dubbo 全链路追踪日志的实现

本文介绍了如何在Dubbo项目中实现全链路追踪日志,针对HTTP接口和Dubbo接口提出具体实现思路。在HTTP接口层面,通过org.slf4j.MDC和拦截器确保traceId的传递与清除;而在Dubbo接口调用中,利用Dubbo的Filter机制进行traceId的设置和传播。同时,文章提到了在不同场景下traceId的命名规范以及在项目中的实际应用过程。
摘要由CSDN通过智能技术生成

目标

http接口

所有HTTP API响应体中增加traceId字段:

{
    "code": 200,
    "data": "Hello world",
    "msg": "ok",
    "traceId": "bd41aed8b2da4895a9d2b43d1ef12595"
}

dubbo接口

对于服务调用方:每次调用服务时,都需要向服务提供方传递traceId

对于服务提供方:每次服务响应时,都需要从服务调用方获取traceId,并将该traceId传递下去,直至该响应结束。

可对traceId的命名进行规范。

如:

  • req:xxa:xxx 表示 前端请求,xxa模块,序号标识xxx
  • tim:xxc:xxx 表示 定时器触发,xxc模块,序号标识xxx

实现思路

http

项目内部使用org.slf4j.MDC传递traceId。
使用拦截器完成traceId的设置与清除。请求到来时,生成并设置traceId;请求结束时,清除traceId。
拦截器中无法修改HTTP响应体。可通过ControllerAdvice统一向Response Body中写入traceId。

Dubbo

使用Dubbo提供的org.apache.dubbo.rpc.Filter来完成traceId的设置与获取。

实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值