此篇介绍一下设计一个短网址服务的思路。
服务需求
短网址服务可以将一个很长的网址替换为一个短的网址,从而方便用户的使用和转发等。
此类的服务有比如bit.ly,goo.gl等。
核心问题
短网址服务的核心问题是:如何为给定的URL生成一个较短且唯一的字符串。
设计思路
MD5、BASE64等编码方式
我们可以使用传统的MD5、BASE64等多种编码方式,将一个长的URL转换为一个相对较短的字符串。
但这样会存在一些问题:
- 需要实时编码,性能根据编码方式不同有不同的损耗
- 生成的短网址仍然长度不够短
预先生成短字符串+缓存池+KV存储
通过预先生成大量的短字符串,并通过缓存池进行预留,需要时直接使用,可大大加快短网址的生成速度。另外,对于原网址和短网址的对应关系,可以通过KV存储直接保存,保证查询时的高性能。