生成短链接

扫描二维码 上传二维码
选择防红平台类型,避免链接被拦截
选择允许访问的平台类型

从零搭建短链接服务实战

《快缩短网址:让长链在指尖优雅起舞》

一、缘起
当一条 URL 长到需要三行才能显示,当短信只剩 70 字节却被链接占去 60,当微博的 140 字容不下一个完整的分享——人类对“短”的渴望被彻底点燃。于是,suo.run 应运而生,像一把锋利的裁纸刀,轻轻一划,冗长即化为轻盈。

二、核心命题
把任意长度的原始地址,凝练为 6 位字符;当用户再次触碰这 6 位字符时,瞬间还原,并优雅地送往真正的彼岸。看似简单,却是一场关于算法、存储、性能、安全的微型交响乐。

三、字符宇宙
我们挑选 62 枚符号:a–z、A–Z、0–9。6 位即可排列出 568 亿种组合,相当于给地球上每粒沙子都发一张身份证,仍绰绰有余。

四、三种炼金术
1. 自增序列:如钟表齿轮,咔哒咔哒向前,永不回头。缺点也明显——规律可循,易被遍历。
2. 随机撒点:在 62 格轮盘上掷骰子,碰撞靠 retry。简单,却不够优雅。
3. 摘要映射:对原 URL 做一次 MD5 沐浴,取其 128 位指纹中的 30 位,再映射为 6 位字符。既无顺序可循,冲突概率又低至尘埃,我们选择它作为 suo.run 的炼金核心。

五、存储诗篇
· 表名:link_opus
base_url — 域名,如 https://suo.run
suffix_url — 路径与参数
shot_code — 6 位短码
full_url — 原始长链
expire_date — 生命周期终点
total_click — 被吻过的次数



· 分表
一亿条记录≈953 GB。按 short_code 做 Base62→十进制,再取模 100,落入百张 10 GB 的子表,轻盈而有序。

· 过期
每日零点的定时器,把昨日“失温”的数据移入冷宫(HBase 冷分区),热库永远只保留三个月的春光。

六、缓存之翼
Redis 仅收留最近 90 天的常客,LRU 为其守门。新短链先问缓存,再叩数据库;查询短链亦然。如此,99% 的请求在 1 ms 内完成回眸。

七、跳转的哲学
浏览器敲下 suo.run/AbC1d2
· DNS 解析 → 边缘节点
· Nginx 捕获 → 查询缓存 → 未命中则穿透至数据库
· 拿到长链后,以 302 临时重定向,而非 301。如此,搜索引擎不会把权重“送给”原站,我们也能继续收集每一次点击的脉搏:UA、IP、时间、Referer……这些数据,正是未来的星辰大海。

八、安全与隐私
· 摘要算法天然不可逆,穷举成本极高。
· 所有跳转强制 HTTPS,杜绝中间人篡改。
· 敏感链接(如重置密码)可设置一次性或限时销毁,避免“僵尸短链”。

九、代码剪影
(上文两段 Java 示例已足够优雅,可直接嵌入项目。)

十、尾声
在 suo.run,每一条长链都是一次未完成的旅行,而 6 位字符是登船的船票。我们做的,只是把世界折叠,再在你指尖轻轻展开。