一、项目整体概述短链系统Short URL System核心目标将长 URL 转换为短字符串如short.ly/aZ91k通过短链访问时重定向到原始长链接提供统计、限流、风控、可扩展能力❗误区纠正短链系统不是用来削峰限流的工具 实际流程用户 → 短链服务 → 重定向 → 原始URL请求量不会减少反而增加一次跳转。 二、短链系统核心能力1️⃣ URL压缩核心功能长 URL → 短 code提升传播体验隐藏参数安全性2️⃣ 访问统计可以统计PV点击量UV独立用户IP 分布地域设备信息时间分布 用于运营分析3️⃣ 动态跳转支持修改短链对应的长链接不影响已发布短链 三、短链生成方案✅ 方案一自增 ID Base62最常用Base62 字符集0-9 A-Z a-z 62个字符private static final char[] ALPHABET 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.toCharArray(); 原理将数字 ID 转为 62 进制123456789 → 8m0Kx 优点无冲突前提ID唯一简单高效URL友好❗ 为什么不用 Base64含 / 不适合 URL❗ 是否会冲突不会前提ID 唯一如 Snowflake 四、ID生成方案雪花算法 Snowflake 结构64bit0 | timestamp | machineId | sequence部分位数说明符号位1 bit固定0时间戳41 bit毫秒级机器ID10 bit节点标识序列号12 bit同毫秒递增 特点全局唯一趋势递增高并发每毫秒约 4096 ID 用途短链ID生成数据库主键分布式系统唯一标识⚡ 五、系统架构设计核心重点 基础架构Nginx↓短链服务Spring Boot↓Redis缓存↓MySQL数据库 多级缓存设计本地缓存Caffeine/GuavaRedis缓存DB兜底 六、限流设计滑动窗口 为什么需要限流防止短链被刷爆爬虫攻击恶意请求 滑动窗口思路在时间窗口内统计请求数窗口10s限制100次Redis实现思路ZSet 记录请求时间按时间范围统计数量超过则拒绝 七、熔断 降级 熔断三种状态状态说明Closed正常Open直接拒绝Half-Open探测恢复 作用防止系统雪崩提高可用性 八、防穿透 性能优化1️⃣ 布隆过滤器用途判断短链是否存在防止无效请求打到 DB2️⃣ Redis缓存存储shortCode → longURL高速重定向3️⃣ 本地缓存减少 Redis 压力热点数据加速 九、Kafka 在短链系统中的作用完结篇 用途异步日志处理点击数据统计解耦主链路 架构优化短链访问↓Kafka↓消费者统计/分析