从0到1搭建短链接系统:哈希冲突+跳转高性能+访问统计——完整实现
引言 上个月市场部搞大促推广,十万条营销短信里带着原始链接——一条带渠道参数的 URL 足足 137 个字符,短信按 70 字拆条计费,一条短信被拆成三条,推广成本直接翻了三倍。更别提线下物料上印 137 个字符的 URL,二维码扫码后密密麻麻一屏。 短链接系统就是解决这个问题的:https://shop.example.com/product/detail?id=8847362&channel=sm&activity=d11&utm_source=xxx → https://s.example.cn/aB3xK9。看起来只是"把长的变短",但把它当生产系统做,会撞上三个经典工程问题: 短码怎么生成——哈希会冲突,冲突了怎么办? 跳转怎么扛住高并发——跳转是整个系统里 QPS 最高的接口,读多写少到什么程度?缓存怎么设计? 访问统计怎么不拖垮跳转——每次跳转都记一笔,跳转链路被统计拖慢就本末倒置了。 这篇文章从 0 到 1 完整实现:MurmurHash + Base62 生成短码 → Bloom Filter 检测冲突 → DB 存储 → Redis 缓存....