anchor.diff:  This is particularly important in a microservices environment where a request typically flows through multiple services.
   To accomplish distributed tracing, each service must be instrumented to log messages with a correlation id that may have been propagated from an upstream service.
   A common companion to distributed trace logging is a service where the distributed trace records can be stored.
  -See also http://opentracing.io/documentation/pages/supported-tracers.html[Examples on opentracing.io].
  +See also examples on http://opentracing.io/documentation/pages/supported-tracers.html[opentracing.io].
   The storage service for distributed trace records can provide features to view the cross service trace records associated with particular request flows.
   
   It will be useful for services written in the MicroProfile framework to be able to integrate well with a distributed trace system that is part of the larger microservices environment.
  
positive.code: There are existing distributed tracing systems that provide a server for distributed trace record storage and viewing, and application libraries for instrumenting microservices.
  The problem is that the different distributed tracing systems use implementation specific mechanisms for propagating correlation IDs and for formatting trace records, so once a microservice chooses a distributed tracing implementation library to use for its instrumentation, all other microservices in the environment are locked into the same choice.
  
  The http://opentracing.io/[opentracing.io project's] purpose is to provide a standard API for instrumenting microservices for distributed tracing.
  If every microservice is instrumented for distributed tracing using the opentracing.io API, then (as long as an implementation library exists for the microservice's language), the microservice can be configured at deploy time to use a common system implementation to perform the log record formatting and cross service correlation id propagation.
  The common implementation ensures that correlation ids are propagated in a way that is understandable to all services, and log records are formatted in a way that is understandable to the server for distributed trace record storage.
  
  In order to make MicroProfile distributed tracing friendly, it will be useful to allow distributed tracing to be enabled on any MicroProfile application, without having to explicitly add distributed tracing code to the application.
  
  In order to make MicroProfile as flexible as possible for adding distributed trace log records, MicroProfile should expose whatever objects are necessary for an application to use the opentracing.io API.
  
  
  == Architecture
  
  This specification defines an easy way to allow an application running in a
  MicroProfile container to take advantage of distributed tracing by using an
  opentracing.io Tracer implementation.
  
  There are two operation modes
  
  
negative.code: This specification specifically addresses the problem of making it easy to instrument services with distributed tracing function, given an existing distributed tracing system in the environment.
  
  This specification specifically does not address the problem of defining, implementing, or configuring the underlying distributed tracing system.
  The proposal assumes an environment where all services use a common OpenTracing implementation (all Zipkin compatible, all Jaeger compatible, ...).
  
  The information about a Span that is propagated between services is typically called a SpanContext.
  It is not the intent of this specification to define the exact format for how SpanContext information is stored or propagated.
  Our use case is for applications running in an environment where all applications use the same Tracer implementation,
  and microservices that require explicit tracing logic use the OpenTracing API.
  Work on defining common formats for SpanContexts and implementations that use the common format is being done at http://opencensus.io/[OpenCensus].
  The OpenCensus API appears very similar to OpenTracing, but support for OpenCensus Tracers will probably require a separate MicroProfile specification.
  
  == Rationale
  
  