信息技术大学
短链接服务
系统设计与场景题 · 第 2 章 高频场景题
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
信息技术大学
短链接服务
系统设计与场景题 · 第 2 章 高频场景题
短码生成两路线(哈希/发
长变短的两条路:哈希长 URL 可能撞码,发号器递增无撞但要存映射。
哈希截取
摘要取前几位,撞码加盐重试
发号器
全局递增 ID 转 62 进制,天然不撞
对比
哈希免中心依赖,发号器有序可预测
重定向策略与缓存
301 转移权重,302 保留统计:Redis 缓存短码,命中直跳不走库。
301 与 302
301 浏览器缓存省请求,302 每次回站可统计
缓存
短长映射进 Redis,命中率极高
兜底
缓存未中查库,布隆过滤器挡非法短码
防遍历与安全
连续短码可被遍历:加随机化、限频、黑名单,别让短链服务成跳板。
防遍历
发号 ID 加密置换后再编码,不可预测
防滥用
黑名单域名、访问限频、举报下线
本节要点
- ✓发号器 62 进制,有序不撞
- ✓302 保统计,301 省请求
- ✓缓存短长映射,布隆挡非法
延伸主题:画一遍短链读写链路估算短码长度需求
课后思考
先自己回答,再展开参考答案——能讲出来才算真懂。
110 亿链接需要多长的短码?
参考答案62 进制下 6 位可表达约 568 亿,绰绰有余;5 位约 9 亿略紧。取 6~7 位留余量,若要防遍历还需在编码空间里做随机化置换。
2为什么多数短链服务选 302 而不是 301?
参考答案301 会被浏览器永久缓存,后续点击不再经过服务端,统计与计费失效;302 每次回源,用一次跳转开销换完整的数据能力。
3发号器方案的「可预测」有什么风险?
参考答案ID 递增意味着短码可枚举,别人能遍历所有短链访问内容。解法是对发号 ID 做加密置换(如 Feistel 网络)再转 62 进制,唯一但不可猜。