什么是短链
用人话说就是一个本来很长的地址, 现在通过一个很短的url就可以完成相同的功能.
意义
- 简洁, 方便传播.
- 对于有文字长度限制的场景来说非常友好, 比如发短信.
- 统计追踪.
原理
很简单, 根据短连接找到原始长连接, 然后302到长连接. 示意图:
- 利用短连接请求短连接服务.
- 短连接服务返回302状态码, 返回长连接信息.
- 浏览器重定向到长连接地址请求原始服务器.
301 状态码浏览器会对返回的长连接进行缓存. 对于需要统计的场景来说不合理, 短链一般都使用302状态码.
短链生成
算法
- 根据长连接进行hash, 使用非加密算法MurmurHash, 然后进行进制转换, 进一步缩短链接.
判断是否冲突
- 可以通过数据库的唯一索引来判断或者布隆过滤器.
解决冲突
- 遇到冲突时, 往长连接后加随机字符串或者分布式id, 在响应长连接的时候再去掉该部分即可.
长短连接对应关系
- 具体场景具体分析, 比如有一个长连接, 如果有很多人要分享, 最后我们要统计每个人的分享情况, 那么就需要处理成一个长连接对应多个短连接, 然后分别对短连接进行统计.
合法性校验
- 检查长连接的主机域名是否合法
- 查询参数是否合法.
存储
- 根据对应关系设计来设计存储表结构
性能优化
- 对短连接建立索引.
缓存
- 热点业务的长短连接的对应关系考虑放在缓存中.