使用分布式跟踪服务(trace)
1、情况简介
使用 opentracing(全面) 和 CloudTraceService(简单)两套接口,做分布式跟踪服务。 CloudTraceService,只提供 TraceId 传播能力。(目前适配有:water、jaeger、zipkin)
提示:solon-cloud 插件自带了一个默认实现。
2、简单示例
通过MDC传递给 slf4j MDC
String traceId = CloudClient.trace().getTraceId();
//MDC 里的记录也可以自定义名字,如:X-TraceId
MDC.put(CloudClient.trace().HEADER_TRACE_ID_NAME(), traceId);
通过Http Header 传给后Http节点
HttpUtils.url("http://x.x.x.x")
.headerAdd(CloudClient.trace().HEADER_TRACE_ID_NAME(), traceId).get();
等......(Solon Cloud Log 默认支持 CloudClient.trace() 接口)
3、应用示例
使用 与 slf4j 的 MDC 结合
public class TraceIdFilter implements Filter {
@Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
String traceId = CloudClient.trace().getTraceId();
MDC.put("X-TraceId", traceId);
chain.doFilter(ctx);
}
}