hotrod

command module
v0.0.0-...-f5a7f8c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2019 License: Apache-2.0 Imports: 1 Imported by: 0

README

Hot R.O.D. - Rides on Demand

This is a demo application that consists of several microservices and illustrates the use of the OpenTracing API. It can be run standalone, but requires Jaeger backend to view the traces. A tutorial / walkthough is available:

Features

  • Discover architecture of the whole system via data-driven dependency diagram
  • View request timeline & errors, understand how the app works
  • Find sources of latency, lack of concurrency
  • Highly contextualized logging
  • Use baggage propagation to
    • Diagnose inter-request contention (queueing)
    • Attribute time spent in a service
  • Use open source libraries with OpenTracing integration to get vendor-neutral instrumentation for free

Running

Run everything via docker-compose

Alternatively, you can run each component separately as described below.

Run Jaeger backend

An all-in-one Jaeger backend is packaged as a Docker container with in-memory storage.

docker run \
  --rm \
  --name jaeger \
  -p6831:6831/udp \
  -p16686:16686 \
  jaegertracing/all-in-one:latest

Jaeger UI can be accessed at http://localhost:16686.

Run HotROD from source
go get github.com/jaegertracing/jaeger
cd $GOPATH/src/github.com/jaegertracing/jaeger
make install
cd examples/hotrod
go run ./main.go all
Run HotROD from docker
docker run \
  --rm \
  --link jaeger \
  --env JAEGER_AGENT_HOST=jaeger \
  --env JAEGER_AGENT_PORT=6831 \
  -p8080-8083:8080-8083 \
  jaegertracing/example-hotrod:latest \
  all

Then open http://127.0.0.1:8080

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
services
driver/thrift-gen/driver
Package driver is generated code used to make or handle TChannel calls using Thrift.
Package driver is generated code used to make or handle TChannel calls using Thrift.
src
github.com/VividCortex/gohistogram
Package gohistogram contains implementations of weighted and exponential histograms.
Package gohistogram contains implementations of weighted and exponential histograms.
github.com/go-kit/kit/circuitbreaker
Package circuitbreaker implements the circuit breaker pattern.
Package circuitbreaker implements the circuit breaker pattern.
github.com/go-kit/kit/endpoint
Package endpoint defines an abstraction for RPCs.
Package endpoint defines an abstraction for RPCs.
github.com/go-kit/kit/examples/profilesvc/client
Package client provides a profilesvc client based on a predefined Consul service name and relevant tags.
Package client provides a profilesvc client based on a predefined Consul service name and relevant tags.
github.com/go-kit/kit/examples/shipping/booking
Package booking provides the use-case of booking a cargo.
Package booking provides the use-case of booking a cargo.
github.com/go-kit/kit/examples/shipping/cargo
Package cargo contains the heart of the domain model.
Package cargo contains the heart of the domain model.
github.com/go-kit/kit/examples/shipping/handling
Package handling provides the use-case for registering incidents.
Package handling provides the use-case for registering incidents.
github.com/go-kit/kit/examples/shipping/inmem
Package inmem provides in-memory implementations of all the domain repositories.
Package inmem provides in-memory implementations of all the domain repositories.
github.com/go-kit/kit/examples/shipping/inspection
Package inspection provides means to inspect cargos.
Package inspection provides means to inspect cargos.
github.com/go-kit/kit/examples/shipping/location
Package location provides the Location aggregate.
Package location provides the Location aggregate.
github.com/go-kit/kit/examples/shipping/routing
Package routing provides the routing domain service.
Package routing provides the routing domain service.
github.com/go-kit/kit/examples/shipping/tracking
Package tracking provides the use-case of tracking a cargo.
Package tracking provides the use-case of tracking a cargo.
github.com/go-kit/kit/examples/shipping/voyage
Package voyage provides the Voyage aggregate.
Package voyage provides the Voyage aggregate.
github.com/go-kit/kit/log
Package log provides a structured logger.
Package log provides a structured logger.
github.com/go-kit/kit/log/level
Package level implements leveled logging on top of Go kit's log package.
Package level implements leveled logging on top of Go kit's log package.
github.com/go-kit/kit/log/logrus
Package logrus provides an adapter to the go-kit log.Logger interface.
Package logrus provides an adapter to the go-kit log.Logger interface.
github.com/go-kit/kit/log/term
Package term provides tools for logging to a terminal.
Package term provides tools for logging to a terminal.
github.com/go-kit/kit/metrics
Package metrics provides a framework for application instrumentation.
Package metrics provides a framework for application instrumentation.
github.com/go-kit/kit/metrics/cloudwatch2
Package cloudwatch2 emits all data as a StatisticsSet (rather than a singular Value) to CloudWatch via the aws-sdk-go-v2 SDK.
Package cloudwatch2 emits all data as a StatisticsSet (rather than a singular Value) to CloudWatch via the aws-sdk-go-v2 SDK.
github.com/go-kit/kit/metrics/discard
Package discard provides a no-op metrics backend.
Package discard provides a no-op metrics backend.
github.com/go-kit/kit/metrics/dogstatsd
Package dogstatsd provides a DogStatsD backend for package metrics.
Package dogstatsd provides a DogStatsD backend for package metrics.
github.com/go-kit/kit/metrics/expvar
Package expvar provides expvar backends for metrics.
Package expvar provides expvar backends for metrics.
github.com/go-kit/kit/metrics/generic
Package generic implements generic versions of each of the metric types.
Package generic implements generic versions of each of the metric types.
github.com/go-kit/kit/metrics/graphite
Package graphite provides a Graphite backend for metrics.
Package graphite provides a Graphite backend for metrics.
github.com/go-kit/kit/metrics/influx
Package influx provides an InfluxDB implementation for metrics.
Package influx provides an InfluxDB implementation for metrics.
github.com/go-kit/kit/metrics/influxstatsd
Package influxstatsd provides support for InfluxData's StatsD Telegraf plugin.
Package influxstatsd provides support for InfluxData's StatsD Telegraf plugin.
github.com/go-kit/kit/metrics/internal/convert
Package convert provides a way to use Counters, Histograms, or Gauges as one of the other types
Package convert provides a way to use Counters, Histograms, or Gauges as one of the other types
github.com/go-kit/kit/metrics/internal/ratemap
Package ratemap implements a goroutine-safe map of string to float64.
Package ratemap implements a goroutine-safe map of string to float64.
github.com/go-kit/kit/metrics/multi
Package multi provides adapters that send observations to multiple metrics simultaneously.
Package multi provides adapters that send observations to multiple metrics simultaneously.
github.com/go-kit/kit/metrics/prometheus
Package prometheus provides Prometheus implementations for metrics.
Package prometheus provides Prometheus implementations for metrics.
github.com/go-kit/kit/metrics/provider
Package provider provides a factory-like abstraction for metrics backends.
Package provider provides a factory-like abstraction for metrics backends.
github.com/go-kit/kit/metrics/statsd
Package statsd provides a StatsD backend for package metrics.
Package statsd provides a StatsD backend for package metrics.
github.com/go-kit/kit/metrics/teststat
Package teststat provides helpers for testing metrics backends.
Package teststat provides helpers for testing metrics backends.
github.com/go-kit/kit/sd
Package sd provides utilities related to service discovery.
Package sd provides utilities related to service discovery.
github.com/go-kit/kit/sd/consul
Package consul provides Instancer and Registrar implementations for Consul.
Package consul provides Instancer and Registrar implementations for Consul.
github.com/go-kit/kit/sd/dnssrv
Package dnssrv provides an Instancer implementation for DNS SRV records.
Package dnssrv provides an Instancer implementation for DNS SRV records.
github.com/go-kit/kit/sd/etcd
Package etcd provides an Instancer and Registrar implementation for etcd.
Package etcd provides an Instancer and Registrar implementation for etcd.
github.com/go-kit/kit/sd/etcdv3
Package etcdv3 provides an Instancer and Registrar implementation for etcd v3.
Package etcdv3 provides an Instancer and Registrar implementation for etcd v3.
github.com/go-kit/kit/sd/eureka
Package eureka provides Instancer and Registrar implementations for Netflix OSS's Eureka
Package eureka provides Instancer and Registrar implementations for Netflix OSS's Eureka
github.com/go-kit/kit/sd/lb
Package lb implements the client-side load balancer pattern.
Package lb implements the client-side load balancer pattern.
github.com/go-kit/kit/sd/zk
Package zk provides Instancer and Registrar implementations for ZooKeeper.
Package zk provides Instancer and Registrar implementations for ZooKeeper.
github.com/go-kit/kit/tracing
Package tracing provides helpers and bindings for distributed tracing.
Package tracing provides helpers and bindings for distributed tracing.
github.com/go-kit/kit/tracing/opencensus
Package opencensus provides Go kit integration to the OpenCensus project.
Package opencensus provides Go kit integration to the OpenCensus project.
github.com/go-kit/kit/tracing/opentracing
Package opentracing provides Go kit integration to the OpenTracing project.
Package opentracing provides Go kit integration to the OpenTracing project.
github.com/go-kit/kit/tracing/zipkin
Package zipkin provides Go kit integration to the OpenZipkin project through the use of zipkin-go, the official OpenZipkin tracer implementation for Go.
Package zipkin provides Go kit integration to the OpenZipkin project through the use of zipkin-go, the official OpenZipkin tracer implementation for Go.
github.com/go-kit/kit/transport
Package transport contains helpers applicable to all supported transports.
Package transport contains helpers applicable to all supported transports.
github.com/go-kit/kit/transport/amqp
Package amqp implements an AMQP transport.
Package amqp implements an AMQP transport.
github.com/go-kit/kit/transport/awslambda
Package awslambda provides an AWS Lambda transport layer.
Package awslambda provides an AWS Lambda transport layer.
github.com/go-kit/kit/transport/grpc
Package grpc provides a gRPC binding for endpoints.
Package grpc provides a gRPC binding for endpoints.
github.com/go-kit/kit/transport/http
Package http provides a general purpose HTTP binding for endpoints.
Package http provides a general purpose HTTP binding for endpoints.
github.com/go-kit/kit/transport/http/jsonrpc
Package jsonrpc provides a JSON RPC (v2.0) binding for endpoints.
Package jsonrpc provides a JSON RPC (v2.0) binding for endpoints.
github.com/go-kit/kit/transport/httprp
Package httprp provides an HTTP reverse-proxy transport.
Package httprp provides an HTTP reverse-proxy transport.
github.com/go-kit/kit/transport/nats
Package nats provides a NATS transport.
Package nats provides a NATS transport.
github.com/go-kit/kit/util/conn
Package conn provides utilities related to connections.
Package conn provides utilities related to connections.
github.com/jaegertracing/jaeger
Package jaeger contains the code for Jaeger backend.
Package jaeger contains the code for Jaeger backend.
github.com/jaegertracing/jaeger/cmd/builder
Package builder defines builder resources (like logger and metrics) shared by jaeger components They are defined in this shared location so that if several components are wired into a single binary (e.g.
Package builder defines builder resources (like logger and metrics) shared by jaeger components They are defined in this shared location so that if several components are wired into a single binary (e.g.
github.com/jaegertracing/jaeger/cmd/flags
Package flags defines command line flags that are shared by several jaeger components.
Package flags defines command line flags that are shared by several jaeger components.
github.com/jaegertracing/jaeger/cmd/query/app/ui
Package ui installs UI assets packaged with github.com/rakyll/statik.
Package ui installs UI assets packaged with github.com/rakyll/statik.
github.com/jaegertracing/jaeger/cmd/query/app/ui/actual
Package assets contains auto-generated UI asset files created during the build.
Package assets contains auto-generated UI asset files created during the build.
github.com/jaegertracing/jaeger/examples/hotrod/services/driver/thrift-gen/driver
Package driver is generated code used to make or handle TChannel calls using Thrift.
Package driver is generated code used to make or handle TChannel calls using Thrift.
github.com/jaegertracing/jaeger/model
Package model describes the internal data model for Trace and Span
Package model describes the internal data model for Trace and Span
github.com/jaegertracing/jaeger/model/adjuster
Package adjuster contains various adjusters for model.Trace.
Package adjuster contains various adjusters for model.Trace.
github.com/jaegertracing/jaeger/model/converter
Package converter contains various utilities for converting model.Trace to/from other data modes, like Thrift, or UI JSON.
Package converter contains various utilities for converting model.Trace to/from other data modes, like Thrift, or UI JSON.
github.com/jaegertracing/jaeger/model/converter/json
Package json allows converting model.Trace to external JSON data model.
Package json allows converting model.Trace to external JSON data model.
github.com/jaegertracing/jaeger/model/converter/thrift
Package thrift allows converting model.Trace to/from various thrift models.
Package thrift allows converting model.Trace to/from various thrift models.
github.com/jaegertracing/jaeger/model/converter/thrift/jaeger
Package jaeger allows converting model.Trace to/from jaeger.thrift model.
Package jaeger allows converting model.Trace to/from jaeger.thrift model.
github.com/jaegertracing/jaeger/model/converter/thrift/zipkin
Package zipkin allows converting model.Trace to/from zipkin.thrift model.
Package zipkin allows converting model.Trace to/from zipkin.thrift model.
github.com/jaegertracing/jaeger/model/json
Package json defines the external JSON representation for Jaeger traces.
Package json defines the external JSON representation for Jaeger traces.
github.com/jaegertracing/jaeger/pkg
Package pkg is the collection of utility packages used by the Jaeger components without being specific to its internals.
Package pkg is the collection of utility packages used by the Jaeger components without being specific to its internals.
github.com/jaegertracing/jaeger/pkg/metrics
Package metrics provides command line flags for configuring the metrics backend.
Package metrics provides command line flags for configuring the metrics backend.
github.com/jaegertracing/jaeger/plugin
Package plugin is the collection of implementations of different interfaces defined across Jaeger
Package plugin is the collection of implementations of different interfaces defined across Jaeger
github.com/jaegertracing/jaeger/storage
Package storage is the collection of different storage interfaces that are shared by two or more components.
Package storage is the collection of different storage interfaces that are shared by two or more components.
github.com/jaegertracing/jaeger/swagger-gen/restapi
Package restapi Zipkin API Zipkin's v2 api currently includes a POST endpoint that can receive spans.
Package restapi Zipkin API Zipkin's v2 api currently includes a POST endpoint that can receive spans.
github.com/jaegertracing/jaeger/thrift-gen/baggage
Package baggage is generated code used to make or handle TChannel calls using Thrift.
Package baggage is generated code used to make or handle TChannel calls using Thrift.
github.com/jaegertracing/jaeger/thrift-gen/jaeger
Package jaeger is generated code used to make or handle TChannel calls using Thrift.
Package jaeger is generated code used to make or handle TChannel calls using Thrift.
github.com/jaegertracing/jaeger/thrift-gen/sampling
Package sampling is generated code used to make or handle TChannel calls using Thrift.
Package sampling is generated code used to make or handle TChannel calls using Thrift.
github.com/jaegertracing/jaeger/thrift-gen/zipkincore
Package zipkincore is generated code used to make or handle TChannel calls using Thrift.
Package zipkincore is generated code used to make or handle TChannel calls using Thrift.
github.com/opentracing-contrib/go-stdlib/nethttp
Package nethttp provides OpenTracing instrumentation for the net/http package.
Package nethttp provides OpenTracing instrumentation for the net/http package.
github.com/opentracing/opentracing-go/harness
Package harness provides a suite of API compatibility checks.
Package harness provides a suite of API compatibility checks.
github.com/pkg/errors
Package errors provides simple error handling primitives.
Package errors provides simple error handling primitives.
github.com/uber/jaeger-client-go
Package jaeger implements an OpenTracing (http://opentracing.io) Tracer.
Package jaeger implements an OpenTracing (http://opentracing.io) Tracer.
github.com/uber/jaeger-client-go/rpcmetrics
Package rpcmetrics implements an Observer that can be used to emit RPC metrics.
Package rpcmetrics implements an Observer that can be used to emit RPC metrics.
github.com/uber/jaeger-client-go/transport
Package transport defines various transports that can be used with RemoteReporter to send spans out of process.
Package transport defines various transports that can be used with RemoteReporter to send spans out of process.
github.com/uber/jaeger-client-go/transport/zipkin
Package zipkin provides various Transports that can be used with RemoteReporter for submitting traces to Zipkin backend.
Package zipkin provides various Transports that can be used with RemoteReporter for submitting traces to Zipkin backend.
github.com/uber/jaeger-client-go/zipkin
Package zipkin comprises Zipkin functionality for Zipkin compatibility.
Package zipkin comprises Zipkin functionality for Zipkin compatibility.
github.com/uber/jaeger-lib
Package jaegerlib is a set of utilities shared by Jaeger backend and Jaeger Go Client.
Package jaegerlib is a set of utilities shared by Jaeger backend and Jaeger Go Client.
github.com/uber/tchannel-go
Package tchannel implements Go bindings for the TChannel protocol (https://github.com/uber/tchannel).
Package tchannel implements Go bindings for the TChannel protocol (https://github.com/uber/tchannel).
github.com/uber/tchannel-go/benchmark/benchclient
benchclient is used to make requests to a specific server.
benchclient is used to make requests to a specific server.
github.com/uber/tchannel-go/benchmark/benchserver
benchserver is used to receive requests for benchmarks.
benchserver is used to receive requests for benchmarks.
github.com/uber/tchannel-go/examples/keyvalue/gen-go/keyvalue
Package keyvalue is generated code used to make or handle TChannel calls using Thrift.
Package keyvalue is generated code used to make or handle TChannel calls using Thrift.
github.com/uber/tchannel-go/examples/thrift/gen-go/example
Package example is generated code used to make or handle TChannel calls using Thrift.
Package example is generated code used to make or handle TChannel calls using Thrift.
github.com/uber/tchannel-go/hyperbahn/gen-go/hyperbahn
Package hyperbahn is generated code used to make or handle TChannel calls using Thrift.
Package hyperbahn is generated code used to make or handle TChannel calls using Thrift.
github.com/uber/tchannel-go/peers
Package peers provides helpers for managing TChannel peers.
Package peers provides helpers for managing TChannel peers.
github.com/uber/tchannel-go/relay
Package relay contains relaying interfaces for external use.
Package relay contains relaying interfaces for external use.
github.com/uber/tchannel-go/scripts/vbumper
vbumper helps bump version numbers in the repository and in the CHANGELOG.
vbumper helps bump version numbers in the repository and in the CHANGELOG.
github.com/uber/tchannel-go/thrift
Package thrift adds support to use Thrift services over TChannel.
Package thrift adds support to use Thrift services over TChannel.
github.com/uber/tchannel-go/thrift/arg2
Package arg2 contains tchannel thrift Arg2 interfaces for external use.
Package arg2 contains tchannel thrift Arg2 interfaces for external use.
github.com/uber/tchannel-go/thrift/gen-go/test
Package test is generated code used to make or handle TChannel calls using Thrift.
Package test is generated code used to make or handle TChannel calls using Thrift.
github.com/uber/tchannel-go/thrift/thrift-gen
thrift-gen generates code for Thrift services that can be used with the uber/tchannel/thrift package.
thrift-gen generates code for Thrift services that can be used with the uber/tchannel/thrift package.
github.com/uber/tchannel-go/trace
Package trace used to contain TChannel's distributed tracing functionality.
Package trace used to contain TChannel's distributed tracing functionality.
github.com/uber/tchannel-go/trand
Package trand provides a thread-safe random number generator.
Package trand provides a thread-safe random number generator.
go.uber.org/atomic
Package atomic provides simple wrappers around numerics to enforce atomic access.
Package atomic provides simple wrappers around numerics to enforce atomic access.
go.uber.org/multierr
Package multierr allows combining one or more errors together.
Package multierr allows combining one or more errors together.
go.uber.org/zap
Package zap provides fast, structured, leveled logging.
Package zap provides fast, structured, leveled logging.
go.uber.org/zap/benchmarks
Package benchmarks contains only benchmarks comparing zap to other structured logging libraries.
Package benchmarks contains only benchmarks comparing zap to other structured logging libraries.
go.uber.org/zap/buffer
Package buffer provides a thin wrapper around a byte slice.
Package buffer provides a thin wrapper around a byte slice.
go.uber.org/zap/internal/bufferpool
Package bufferpool houses zap's shared internal buffer pool.
Package bufferpool houses zap's shared internal buffer pool.
go.uber.org/zap/internal/color
Package color adds coloring functionality for TTY output.
Package color adds coloring functionality for TTY output.
go.uber.org/zap/internal/exit
Package exit provides stubs so that unit tests can exercise code that calls os.Exit(1).
Package exit provides stubs so that unit tests can exercise code that calls os.Exit(1).
go.uber.org/zap/internal/ztest
Package ztest provides low-level helpers for testing log output.
Package ztest provides low-level helpers for testing log output.
go.uber.org/zap/zapcore
Package zapcore defines and implements the low-level interfaces upon which zap is built.
Package zapcore defines and implements the low-level interfaces upon which zap is built.
go.uber.org/zap/zapgrpc
Package zapgrpc provides a logger that is compatible with grpclog.
Package zapgrpc provides a logger that is compatible with grpclog.
go.uber.org/zap/zaptest
Package zaptest provides a variety of helpers for testing log output.
Package zaptest provides a variety of helpers for testing log output.
go.uber.org/zap/zaptest/observer
Package observer provides a zapcore.Core that keeps an in-memory, encoding-agnostic repesentation of log entries.
Package observer provides a zapcore.Core that keeps an in-memory, encoding-agnostic repesentation of log entries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL