Design Uber
Design a ride-hailing service that matches riders with nearby drivers and tracks trips in real time.
Ride hailing · Hard
Functional requirements
- Riders request a ride
- Match with a nearby available driver
- Live driver location during the trip
- Fare calculation and payment
Scale & non-functional requirements
- Drivers send location every 4 seconds
- Match within 10 seconds
- Millions of concurrent drivers worldwide
Hints
- How do you index locations for fast nearby search (geohash, quadtree)?
- Where do frequent location updates go?
- How do you avoid two riders getting the same driver?