1. 使用自增id(数值)->url这种映射关系
2. id使用base62编码 浏览器中可以直接使用不用处理,并且1亿的值只用生成5个字符
3. 为了避免用户使用无效的短码请求给数据库造成压力,url最后一位可以设置为校验和
|--------id base62编码--------|---校验和---|
a s d x K 9 1 M
考虑到后期可能对url长度进行加长升级,加一个版本号区分
|--------id base62编码--------|---版本---|---校验和---|
a s d x K 9 1 M
4. 生成id
基于数据库自增的方式,瓶颈在数据库的tps
可以维护一个base值 每次更新一个count 在内存中自增生成
使用longadder的思想 获取几批数据,然后使用分段锁 提高并发数