短链接服务

官官方信息技术老师·6 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

短链接服务

系统设计与场景题 · 第 2 章 高频场景题

按 空格/→ 演示下一步

问一句
1 / 6 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

短链接服务

系统设计与场景题 · 第 2 章 高频场景题

1第 1 页 · 短链接服务

短码生成两路线(哈希/发

长变短的两条路:哈希长 URL 可能撞码,发号器递增无撞但要存映射。

哈希截取
摘要取前几位,撞码加盐重试
发号器
全局递增 ID 转 62 进制,天然不撞
对比
哈希免中心依赖,发号器有序可预测
2第 2 页 · 短码生成两路线(哈希/发

重定向策略与缓存

301 转移权重,302 保留统计:Redis 缓存短码,命中直跳不走库。

301 与 302
301 浏览器缓存省请求,302 每次回站可统计
缓存
短长映射进 Redis,命中率极高
兜底
缓存未中查库,布隆过滤器挡非法短码
3第 3 页 · 重定向策略与缓存

防遍历与安全

连续短码可被遍历:加随机化、限频、黑名单,别让短链服务成跳板。

防遍历
发号 ID 加密置换后再编码,不可预测
防滥用
黑名单域名、访问限频、举报下线
4第 4 页 · 防遍历与安全

本节要点

  • ✓发号器 62 进制,有序不撞
  • ✓302 保统计,301 省请求
  • ✓缓存短长映射,布隆挡非法
延伸主题:画一遍短链读写链路估算短码长度需求
5第 5 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

110 亿链接需要多长的短码?

参考答案62 进制下 6 位可表达约 568 亿,绰绰有余;5 位约 9 亿略紧。取 6~7 位留余量,若要防遍历还需在编码空间里做随机化置换。

2为什么多数短链服务选 302 而不是 301?

参考答案301 会被浏览器永久缓存,后续点击不再经过服务端,统计与计费失效;302 每次回源,用一次跳转开销换完整的数据能力。

3发号器方案的「可预测」有什么风险?

参考答案ID 递增意味着短码可枚举,别人能遍历所有短链访问内容。解法是对发号 ID 做加密置换(如 Feistel 网络)再转 62 进制,唯一但不可猜。

6第 6 页 · 课后思考