短链接服务架构是指网址缩短服务的内部设计和技术实现的整体蓝图。这也是系统设计面试中的经典题目,是学习可扩展 Web 服务设计原则的优秀案例。
基本架构由三个核心组件构成。第一是 URL 缩短引擎 (接收长 URL,生成唯一短码并存入数据库);第二是重定向引擎 (接收短链接访问请求,从数据库获取重定向目标并返回 301/302 响应);第三是分析引擎 (收集和汇总点击数据,提供统计信息)。
短码生成方式主要有三种:计数器方式 (将自增 ID 转换为 Base62 编码)、哈希方式 (取 URL 的 MD5/SHA256 哈希值的前 N 位)、随机生成方式 (生成随机字符串并检查冲突)。计数器方式最为简洁且不会产生冲突,被大规模服务广泛采用。
可扩展性的关键在于缓存策略。短链接的重定向处理以读取操作为主 (是写入的 100 倍以上),因此 Redis 或 Memcached 缓存非常有效。将热门短链接保存在缓存中,可以大幅减少数据库查询,将重定向响应时间控制在 1 毫秒以内。
数据库设计方面,键值存储 (DynamoDB、Redis) 非常适合短链接的查找操作。以短码为键、原始 URL 及附属信息为值的简单结构即可满足需求。处理月均数十亿请求的大规模服务还需要数据库分片 (按短码首字符进行分区)。相关书籍可在 Amazon 上查阅。