此篇介绍一下设计一个短网址服务的思路。

服务需求

短网址服务可以将一个很长的网址替换为一个短的网址,从而方便用户的使用和转发等。
此类的服务有比如bit.ly,goo.gl等。

核心问题

短网址服务的核心问题是:如何为给定的URL生成一个较短且唯一的字符串。

设计思路

MD5、BASE64等编码方式

我们可以使用传统的MD5、BASE64等多种编码方式,将一个长的URL转换为一个相对较短的字符串。
但这样会存在一些问题:

  1. 需要实时编码,性能根据编码方式不同有不同的损耗
  2. 生成的短网址仍然长度不够短

预先生成短字符串+缓存池+KV存储

通过预先生成大量的短字符串,并通过缓存池进行预留,需要时直接使用,可大大加快短网址的生成速度。另外,对于原网址和短网址的对应关系,可以通过KV存储直接保存,保证查询时的高性能。