短链接系统说明
安装依赖
npm install
服务启动
nest start
- 假定该系统为多读少写的系统,读写都会经过 redis,短链接对应关系最终存储在 mysql 中
- 使用了 murmurHash 算法进行短链接生成,生成后使用 base62 进行转码,保证两次 url 进来后生成的短链接是统一的
- 判断短链接是否重复,如果重复的话会在长链接后加上关键词,同时将关键词一并存储在 mysql 中
- 问题1:redis 在该项目中没有增加单元测试,使用了 redis 自带的 redisBloom 模块,所以在安装 redis 的时候需要安装 redisBloom 模块
- 问题2:没有设计短链接过期系统,后续考虑增加定时任务,清理最少引用的短链接
单元测试覆盖了以下几个部分
- 判断是否为有效的长链接
- 转换长链接到短链接是否成功
- 两次存入长链接后,获得的短链接是一致的
- 判断非有效链接后返回异常
集成测试中主要测试了 web 端短链接的读,和长链接的写入。
测试了 120 qps 下,2400 个请求的情景下完成跳转的链接
| 状态 | 平均值 | | TP90 | 0.84 | | TP95 | 1.21 | | TP99 | 1.98 |