Traffic Cameras
Traffic Cameras with tile generation, caching, and routing services.
Requirements
Functional Requirements
- Serve map tiles
- Compute routes with traffic
Non-functional Requirements
- Low tile latency
- Accurate routing ETAs
High-Level Design
- Tile builder → store → CDN
- Routing with traffic ingestion
Capacity & Sizing
- Tile RPS, CDN cache size, routing QPS
Key Components
- Tile builder, Tile store, Routing service
Architecture
High-level components and data flow
Data Model
Core entities and relationships
- tiles (
z,x,y PK,ts,etag) - roads (
road_id PK,geom,speed) - routes (
route_id PK,start,end,cost)
APIs
- GET /tiles/{z}/{x}/{y}.pbf
- GET /route?from=..&to=..
- POST /ingest { data }
Hot Path
- GET tile → CDN → origin (on miss)
Caching & TTL
- Long TTL for tiles; purge changed regions
Scaling
- Precompute hot tiles
- Hierarchical caches
- Parallel route search
Trade-offs
- Vector tiles size vs detail
- Realtime traffic vs cost
- Route optimality vs speed
Failure Modes & Mitigations
- Stale tiles → invalidation
- Traffic feed outage → degrade
- Routing timeouts → fallback heuristics
Observability
- Tile cache hit
- Route latency
- Ingest lag