跳转至

短连接服务设计与盈利思路

一、短链是什么

把长 URL 映射成短 URL,如 https://t.cn/AbC123。点击后 302 跳转到原 URL。

二、核心设计

1. 短码生成

  • 自增 ID → Base62 编码(0-9a-zA-Z)。
  • 长度 6~7 位,可表示几十亿 URL。
  • 用雪花算法 / 号段模式发 ID。
long id = 100001;
String shortCode = Base62.encode(id);

2. 存储

CREATE TABLE short_link (
    code VARCHAR(10) PRIMARY KEY,
    long_url VARCHAR(2048),
    expire_time DATETIME,
    create_time DATETIME
);

3. 查询与跳转

GET /AbC123 -> 查 Redis -> 查 DB -> 302 跳转
  • 热点短链放 Redis。
  • 访问日志异步写。

4. 防刷与安全

  • 短链不能遍历(随机码 / 混淆)。
  • 防钓鱼:跳转前展示提示。
  • 过期时间。

三、技术要点

  • 高并发:读多写少,Redis 扛。
  • 301 vs 302:
  • 301 永久重定向:浏览器缓存,统计不到点击。
  • 302 临时重定向:每次都到服务器,能统计。 短链服务用 302

四、盈利思路

1. 流量变现

  • 跳转前插广告 / 落地页。
  • 按点击收费。

2. 企业服务

  • 自定义短链域名(品牌短链)。
  • API 调用量收费。
  • 数据分析(点击量、地域、设备)。

3. 高级功能

  • 短链过期时间设置。
  • 密码访问。
  • 定向投放(按地域跳转不同页面)。

4. 数据价值

  • 用户点击行为分析。
  • 营销效果追踪。

五、架构演进

  • 初期:单库 + Redis。
  • 中期:分库分表(按 code hash)。
  • 后期:CDN + 边缘节点。

高频追问

  • 为什么用 Base62?6 位能表示 62^6 ≈ 568 亿,足够。
  • 为什么用 302?因为要统计点击,301 被浏览器缓存后统计不到。