ArchitectAI resilience reviews are here. See what's new
Back to all articles
High Level Design Oct 22, 2026 13 min read

Designing Uber: Real-Time Location Tracking, Geohashing & Matching Engine

Architecting a high-throughput geospatial dispatch system using Google S2 / H3 hex cells, Redis geospatial indices, and WebSocket location streaming.

HLDGeospatialWebSocketsRedisMatching Engine
HFHLDForge Architecture TeamPrincipal Distributed Systems Architect

1. Scale & Geospatial Requirements

A ride-hailing platform like Uber connects millions of riders with active drivers in real time. Drivers ping their GPS coordinates (latitude, longitude, bearing) every 4 seconds. With 5 million active drivers globally, that represents ~1.25 million location updates per second.

The core challenges are: 1) Low-latency driver discovery within a 2-5km radius (<50ms query time), 2) High-throughput location ingestion, and 3) Consistent trip state transitions without race conditions.

  • Active Drivers: 5 Million worldwide
  • Location Ingestion: 1.25 Million pings per second
  • Rider Trip Requests: 50,000 requests per second at peak
  • SLA Target: Match assignment under 1.5 seconds with p99 < 3s

2. Geospatial Indexing: Geohash vs Google S2 vs Uber H3

Traditional SQL spatial queries using PostGIS ST_DWithin do not scale to 1.25M updates per second. Modern ride-hailing engines discretize the earth's surface into discrete spatial cells.

Uber created the open-source H3 spatial index, which divides the globe into hexagonal grid cells. Hexagons have the unique property that all six neighboring cells have an identical center-to-center distance, eliminating the corner distortion present in rectangular Geohash grids.

3. Location Ingestion & Ring Buffer Pipeline

Driver apps maintain persistent WebSocket connections to edge Netty/Go gateway clusters. Incoming location pings are validated, converted to H3 cell IDs, and written to an in-memory ring buffer or Kafka partition keyed by city/geohash.

The Dispatch Engine queries active drivers by scanning the rider's H3 cell and its 1-ring / 2-ring neighboring hexagons. A ranking algorithm scores candidates based on Estimated Time of Arrival (ETA), driver acceptance rate, and directional heading.

4. Preventing Race Conditions in Driver Matching

When multiple riders request rides in the same high-density area, multiple dispatch threads might offer the same driver simultaneously. We prevent this using distributed locks in Redis (Redlock) or optimistic concurrency with version checks.

When an offer is generated, the driver is marked in state OFFERED with a 15-second TTL. If the driver accepts, the trip transitions to DISPATCHED; if the timer expires, the offer falls back to the next ranked driver.

Interactive Modeling ArchitectAI

Model this architecture on the HLDForge Canvas

Turn static box diagrams into living, collaborative systems. Drag and drop microservices, Kafka clusters, and cache tiers. Run automated SPOF detection and STRIDE threat modeling in real time.

HF

Written by HLDForge Architecture Team

Principal Distributed Systems Architect

The HLDForge Architecture Team publishes practical engineering guides, real-world case studies, and high-concurrency blueprints to help engineers build scalable and fault-tolerant software.

Free forever plan

Ready to master distributed system design?

HLDForge gives you the tools, templates, and AI reviews to design systems like a Staff Engineer. Get started free.

SOC 2 Type II · ISO 27001 aligned · SSO on every paid plan