Branch: master
Find file History
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src updates dubbo urls (#803) Oct 10, 2018
README.md updates dubbo urls (#803) Oct 10, 2018
pom.xml [maven-release-plugin] prepare for next development iteration Jan 21, 2019

README.md

brave-instrumentation-dubbo-rpc

This is a tracing filter for RPC providers and consumers in Dubbo 2.6+

When used on a consumer, TracingFilter adds trace state as attachments to outgoing requests. When a provider, it extracts trace state from incoming requests. In either case, the filter reports to Zipkin how long each request took, along with any error information.

Note: A Dubbo Provider is a server, and a Dubbo Consumer is a client in Zipkin terminology.

Configuration

The filter "tracing" requires an extension of type brave.Tracing named "tracing" configured. Once that's configured, you assign the filter to your providers and consumers like so:

Here's an example of with Spring 2.5+ XML

<!-- default to trace all services -->
<dubbo:consumer filter="tracing" />
<dubbo:provider filter="tracing" />

Here's an example with dubbo.properties:

dubbo.provider.filter=tracing
dubbo.consumer.filter=tracing

Registering the brave.Tracing extension with Spring

Most typically, the brave.Tracing extension is provided by Spring, so have this in place before proceeding. The bean must be named "tracing"

Here's an example in XML.

Registering the brave.Tracing extension with Java

Dubbo supports custom extensions. You can supply your own instance of tracing by creating and registering an extension factory:

create an extension factory that returns brave.Tracing

package com.yourcompany.dubbo;

import brave.Tracing;
import com.alibaba.dubbo.common.extension.ExtensionFactory;
import zipkin2.reporter.AsyncReporter;
import zipkin2.Span;

public class TracingExtensionFactory implements ExtensionFactory {

  @Override public <T> T getExtension(Class<T> type, String name) {
    if (type != Tracing.class) return null;
    return (T) Tracing.newBuilder()
                      .localServiceName("my-service")
                      .spanReporter(spanReporter())
                      .build();
  }

  // NOTE: The reporter should be closed with a shutdown hook
  AsyncReporter<Span> spanReporter() {
--snip--

Register that factory using META-INF

Make sure the following line is in META-INF/dubbo/com.alibaba.dubbo.common.extension.ExtensionFactory in your classpath:

tracing=com.yourcompany.dubbo.TracingExtensionFactory