We can have SOAP or REST APIs to expose the functionality of our service. This should explicitly state what is expected from the system. Once we've finalized the requirements, it's always a good idea to define the system APIs. One thing to note here is that since there will be a lot of duplicate requests (of the same URL), therefore, our actual memory usage will be less than 170GB.Īssuming 500 million new URLs per month and 100:1 read:write ratio, following is the summary of the high level estimates for our service: New URLs To cache 20% of these requests, we will need 170GB of memory. Since we have 20K requests per second, we will be getting 1.7 billion requests per day:Ģ0K * 3600 seconds * 24 hours = ~1.7 billion If we want to cache some of the hot URLs that are frequently accessed, how much memory will we need to store them? If we follow the 80-20 rule, meaning 20% of URLs generate 80% of traffic, we would like to cache these 20% hot URLs. We will need 15TB of total storage:įor write requests, since we expect 200 new URLs every second, total incoming data for our service will be 100KB per second:įor read requests, since every second we expect ~20K URLs redirections, total outgoing data for our service would be 10MB per second: Let’s assume that each stored object will be approximately 500 bytes (just a ballpark estimate–we will dig into it later). Since we expect to have 500M new URLs every month, the total number of objects we expect to store will be 30 billion:ĥ00 million * 5 years * 12 months = 30 billion Let’s assume we store every URL shortening request (and associated shortened link) for 5 years. What would be Queries Per Second (QPS) for our system? New URLs shortenings per second:ĥ00 million / (30 days * 24 hours * 3600 seconds) = ~200 URLs/sĬonsidering 100:1 read/write ratio, URLs redirections per second will be: Let’s assume a 100:1 ratio between read and write.Īssuming, we will have 500M new URL shortenings per month, with 100:1 read/write ratio, we can expect 50B redirections during the same period: There will be lots of redirection requests compared to new URL shortenings. Our service should also be accessible through REST APIs by other services.Analytics e.g., how many times a redirection happened?.Shortened links should not be guessable (not predictable).URL redirection should happen in real-time with minimal latency.This is required because, if our service is down, all the URL redirections will start failing. The system should be highly available.Users should be able to specify the expiration time. Links will expire after a standard default timespan.Users should optionally be able to pick a custom short link for their URL. When users access a short link, our service should redirect them to the original link.This link should be short enough to be easily copied and pasted into applications. Given a URL, our service should generate a shorter and unique alias of it.Our URL shortening system should meet the following requirements: Be sure to ask questions to find the exact scope of the system that the interviewer has in mind. □ You should always clarify requirements at the beginning of the interview.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |