短链系统设计方案
微博的短链接 t.cn/xxxx 怎么做的?从哈希算法到分布式 ID,一个完整的短链系统设计。 一、短链系统的核心流程 1.1 长链 → 短链(生成) 1.2 短链 → 长链(查询)→ 302 跳转 1.3 核心指标——短链长度、碰撞率、跳转延迟 二、短链生成——哈希算法 2.1 MD5 生成 128 位哈希 → 取前 N 位 → Base62 编码 2.2 哈希碰撞问题——不同 URL 可能生成相同短链 2.3 解决碰撞——追加随机串后重新哈希(再哈希法) 2.4 MurmurHash——比 MD5 更快 三、短链生成——自增 ID 3.1 自增 ID → Base6...
库存扣减并发安全
库存扣减是高并发场景下最容易出错的地方。数据库行锁、Redis Decr、Lua 脚本、事务消息,四种方案孰优孰劣? 一、库存扣减的核心挑战 1.1 超卖——库存变成负数 1.2 少卖——库存有剩余但无法下单 1.3 热点商品——大量请求竞争同一行数据 1.4 扣减与支付的时序 二、方案 1:数据库行锁 2.1 UPDATE stock SET num = num - ? WHERE id = ? AND num >= ? 2.2 行锁的排队效果——天然串行化 2.3 热点商品性能——TPS 受限于行锁 2.4 优化——拆行为多行 三、方案 2:Redis Decr 3.1...
秒杀系统设计方案
秒杀是检验高并发设计能力的试金石。10 万 QPS 的秒杀系统,从 0 到 1 的完整设计过程。 一、需求分析与容量预估 1.1 业务场景——限时抢购、库存有限 1.2 流量特点——瞬时峰值极高、读写比例悬殊 1.3 QPS 预估——10 万人同时抢 1000 件商品 1.4 核心目标——不超卖、少超时、防刷 二、前端层优化 2.1 动静分离——CDN 缓存静态资源 2.2 按钮防重复——置灰 + 倒计时 2.3 验证码——分散用户点击时间 2.4 限流——答题/滑块验证 三、网关层防护 3.1 Nginx 限流——limit_req_zone 3.2 黑白名单——IP...