Design a scalable ride-sharing system that can efficiently match riders with nearby drivers in real-time. Focus on the architecture for handling geolocation data, the matching algorithm, and how to implement real-time tracking and updates. Address challenges like surge pricing during high demand and ensuring low latency in a distributed system.