Dubbo根据扩展接口实现分布式调用追踪
2019-03-28 本文已影响17人
任嘉平生愿
dubbo基于调用拦截扩展实现分布式调用追踪 - GAMELOFT9----读万卷书,行万里路,知行合一 - CSDN博客
思路:根据dubbo扩展的filter将每次调用链路服务生成的uuid放在日志中,根据id跟踪服务
步骤
1.扩展filter
<dubbo:provider filter="traceid"/>
2.绑定实现类
traceid=com.gameloft9.demo.filter.TraceDubboFilter
3.实现Filter 的invoke方法
RpcContext context = RpcContext.getContext();
TraceUtil.putTraceInto(context);
TraceUtil.getTraceFrom(context);
4.TraceUtil生成UUID和置值
String traceId = generateTraceId();
setTraceId(traceId);
5.将traceid绑定到logback中的MDC
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%.15thread] [%X{trace_id}] %logger{36} - %.-4096msg%n
6.消费端调用时加日志
log.info("测试结果:{}",res);