Solon

使用分布式跟踪服务(trace)

</> markdown

生态 / Solon Cloud 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);
    }
}