早期短链接广泛应用于图片上传网站,通过缩短网址URL链接字数,达到减少代码字符串的目的。常见于网店图片分类的使用,因有字符个数限制,采用短链接可以达到外链图片的目的。自微博盛行以来,在微博字数有限的特色下,短链接也盛行于微博网站,以节省字数给博主发布更多文字的空间。
问题描述:设计一个短链生成和查询系统,需要提供以下两个功能:
1、提供长链转换短链的接口
2、点击短链能跳转到对应的长链
题目要求:
1、同一个长链生成同一个短链接,不要有多个短链指向同一个长链。
2、同一个短链只能指向某一个长链,短链生成后要固定不变,不能再指向其它长链。
3、给出系统架构,需要考虑高并发解决方案。
4、考虑存储和缓存方案
数据量预估:
1、预计长链接总量500亿
2、长链换短链请求量:10W qps
3、短链跳转请求量:100W qps
参考链接:https://blog.csdn.net/bntX2jSQfEHy7/article/details/80045503
高并发:区间间隔放号器,类似Spark的UniqueIndex的做法,保证线程安全。
存储、缓存:LRU算法,缓存中只放常使用到的长短地址对应Key-Value。
问题:如何将500亿长链接算出唯一且不变的对应ID(即短链接)
一对一,不可能,只能先在缓存里找,找不到则递增ID。这样能保证短时间内一对一。