Evaluation of Google Maps' Design
Evaluate the Google Maps System Design by analyzing how segmenting the global road network ensures high availability and scalability. Learn how sharding the graph improves response times and how live data analytics enhance path accuracy and ETA calculations.
We'll cover the following...
Requirements compliance
Let’s evaluate how the system handles millions of queries per second while ensuring fast response times.
Availability
Hosting a massive road network graph on a single server caused critical issues:
Memory limits: The graph was too large to fit in memory, rendering query processing impossible.
Connection limits: A single server could not maintain persistent connections for millions of concurrent users.
Single point of failure: If the server failed, the entire system became unavailable.
We resolved these issues by dividing the world into small segments, where each segment is a graph small enough to fit in a server’s memory. This approach achieved the following:
Distributed hosting: Segments are hosted on separate servers, eliminating the global graph memory bottleneck.
Load balancing: Requests are distributed across segment servers based on the user’s search area, preventing overload on any single node.
Replication: Replicating segments (though not detailed earlier) handles failover and distributes read load, ensuring high availability.
Note: Google Maps uses
of data, putting less burden on the system, which improves availability. lazy loading Lazy loading is postponing the loading or initialization of resources or objects until they are needed. It reduces initial load time by reducing the amount of content to load, saves bandwidth by delivering content to users when required, and preserves server and client resources by rendering only some of the content. Thus, it increases performance and saves system resources.