Use Cases
1, shortening:take a URL = = return a much shorter URL
2, redirection:take a short url = = Redirect to the original URL
3, Custom url:http://goo.gl/trump2016
4, High availability
5, Analytics:
6, Automatic link removal
7, Manual link removal:e.g. porngraphy
8, UI vs. API, see HTTP://GOO.GL
Constraints:
Make some guess about the volume
1, new URLs per month:100 million = because Twitter daily tweets:
2, request per MONTH:1 billion =
3, 10% for shortening and 90% for redirection
4, Requests per second:400+ (40:shortens, 360:redirects)
5, Bytes per URL
6, 6 bytes per hash
Abstract Design:
1, Application service layer-services the requests
* Shortening Service
* Redirection Service
2, Data storage layer-keeps track of the Hash<->url mapping
* Acts like a big hash table
Bottlenecks:
1, Traffic-how Much, estimation, probably not the problem
2, data volume-quickly look up and insertion
3, how to split (scale)
URL Shortening Service