设计短链服务
互联网时代,网民经常需要在一些限制字符的平台上分享超链,这时候就要用到短链服务了。
短链服务的实际用途
- 缩短实际超链的长度,可以节省存储空间;
- 美化超链,使链接更加简洁、清晰,更容易被人们接受和点击;
- 易于复制、粘贴和分享,避免超链断裂;
- 跟踪分析:短链服务可以追踪链接的点击次数、地理位置、来源等信息,有助于了解用户的行为和兴趣,从而进行更精准的营销和内容策略;
确认需求
- 系统平均每秒需要产生多少个短链?
- 短链可以使用哪些字符?
- 短链的长度?
- 短链是否可以被删除或被更新?
评估系统容量
- 写操作 QPS?
- 读操作 QPS?
- 每个长链的平均长度?
- 短链服务的数据需要保持多久?
API 设计
创建短链
POST /api/v1/data/shorten
Content-Type: application/json
{
"longUrl": "longURLString"
}
HTTP/1.1 200 Ok
Content-Type: application/json
{
"shortUrl": "shortURLString"
}
查询短链
GET /api/v1/${shortUrl}
HTTP/1.1 200 Ok
Content-Type: application/json
{
"longUrl": "longURLString"
}
客户端 & 服务器端通信流程
短链生成算法
哈希函数

常见哈希函数

62 进制表示
- 先生成一个自增 ID
- 将这个自增 ID 转换为 62 进制数字
哈希函数 VS 62 进制表示
