勇敢总是创建新的跟踪

时间:2019-01-15 13:36:44

标签: tracing zipkin brave

我正在尝试将跟踪过程添加到旧版服务中。在这种情况下,serviceA调用serviceB,serviceB调用serviceC。我正在使用的旧服务是serviceB。

这不是spring / spring boot项目。它使用netty接收和处理请求,因此我按照netty-codec-http的建议将nettyHttpTracing.serverHandler()添加到channelPipeline中。这是代码:

Tracing tracing = Tracing.newBuilder().traceId128Bit(true)
        .localServiceName(SERVICE_NAME_QA).spanReporter(new TraceReporter()).build();
HttpTracing httpTracing = HttpTracing.create(tracing);
ThreadCache.setHttpTracing(httpTracing);
NettyHttpTracing nettyHttpTracing = NettyHttpTracing.create(httpTracing);
channelPipeline.addLast("tracing", nettyHttpTracing.serverHandler());

到目前为止,一切正常。它可以从serviceA读取HTTP请求的标头并正确记录跨度。然后,我尝试将跟踪过程添加到serviceB和serviceC之间的请求。它使用okhttp发送请求。所以我在okhttpClient中添加了调度程序和拦截器:

HttpTracing httpTracing = ThreadCache.getHttpTracing();
OkHttpClient okhttpClient = new Builder()
        .dispatcher(new Dispatcher(
            httpTracing.tracing().currentTraceContext()
                .executorService(new Dispatcher().executorService())))
        .addNetworkInterceptor(TracingInterceptor.create(httpTracing))
        .build();

这需要一个httpTracing,所以我将在Netty进程中创建的httpTracing存储到ThreadLocal中,并在okhttpClient声明之前将其取回。现在我的问题是,当okhttpClient发送请求时,Brave似乎总是创建新的跟踪。我做错什么了吗?

0 个答案:

没有答案