【文章阅读】短链接服务系统开发
一、短链接服务系统开发
二、思路说明
文章很棒,不过最重要的是思路,在可实现的思路下,你会发现每一步都不难。
本文目的就是整理思路,然后让自己实现。
1、功能:
长链转短链,短链跳转到长链。
2、如何保证短链唯一:
短链是一个字符串,只需由一个唯一的ID,可以根据某种规则,转换出唯一的字符串即可。所以问题变成了如果找到一个长链对应的唯一ID。
而对于唯一标识,莫过于数据库自增ID了。
这里需区分单表和多表。单表,数据库自增 id 肯定唯一;多库多表,肯定有一全局发号器来生成唯一 id。
3、生成key(短链)的逻辑:进制转换;
文中使用的是62进制转换,因为字符 a-z、A-Z 和 0-9 共 62 个字符,可以用于生成短链。
只需将十进制ID转换为62进制即可。进制转换详情可以参考:除基倒取余法。
4、长链转短链
数据库中查询;
5、优化:增加随机码,防止短链被破译:
5.1 打乱 BASE 字符串
5.2 加随机字符串,如固定在开头或结尾加 2 位随机字符串
算法的安全性保证:两个不一样的数,在固定位置都插入随机位,结果一定不一样。
5.3 其他细节:
- 高位为 0 就不再插入,是为了不至于一开始就往高位插入了 1 导致刚开始值就特别大,转换出来需要更长的字符串。
- 建议 id 从一个中等模式的大小开始,如 100w,而不是从 1 开始;
- 可以增加缓存提升性能。
- 数据库大小写注意事项。