Design a Ride-Sharing Service: Location Updates, Nearby Search, and Matching