tinyurl 设计的时候回答需要注意什么,除了hash还有什么。

原帖地址:mitts

说个hash真不知道是什么意思
首先弄清楚
1. 要不要支持自定义的shorten url
2. 任何人都可以生成shorten url呢还是只有登录的用户才可以
3. 一样的full url要不要给一样的shorten url
然后最基本的
1. shorten url是什么形式,多长,为什么,encode id to base 62?
2. 如何维护shorten url -> full url的mapping,id => full url?
3. 如何生成id? 会不会有collision, 如何解决
再说几点吧
1. 如何防止生成的url被scan,比如我知道某id=abc是合法的,然后试id-1 和id+1 不
应该被猜中
2. 如果要求随机猜N个url都未命中的概率大于99.99%,如何做到
3. 如果有人随机猜url 对你的系统有什么影响,如果你是persistant storage+cache
的架构 会有什么问题
4. 如何distribute到多机器 service和storage 都谈谈
5. 如何要限制单个用户的rps,用什么策略,如何实现