Loading…
Loading…
A reference implementation of Uber's domain-oriented microservice architecture. Instead of a flat service mesh, Uber organizes services into domains (Rider, Driver, Eats, Freight). Each domain has a gateway that handles cross-cutting concerns. Ringpop provides consistent hashing for stateful services. TChannel is a high-performance RPC protocol designed for microservices. Kafka handles real-time event streaming.
Uber operates in 10,000+ cities across 70 countries. The original monolithic architecture couldn't handle the scale or complexity. Services needed to be stateful (e.g., driver matching requires knowing which drivers are nearby). Traditional HTTP/1.1 RPC was too slow for inter-service communication. Observability across thousands of services was critical.
Adopted a domain-oriented architecture where services are grouped by business domain. Each domain has a gateway that handles auth, rate limiting, and cross-cutting concerns. Ringpop provides consistent hashing so stateful services can shard data (e.g., driver location). TChannel is a multiplexed, HTTP/2-based RPC protocol with deadline propagation and circuit breaking. Kafka handles 1T+ messages/day for real-time events. Jaeger provides distributed tracing across all services. M3 collects 10B+ metrics/day.