这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
开始 - 计数器概述
点赞功能通常从一个按钮开始:
用户点击点赞 -> 文章 like_count + 1
第一版很容易写出来,但业务一增长,问题会接踵而来:同一篇热门文章被几万人同时点赞,数据库行锁竞争严重;用户重复点击导致计数错误;Redis 和数据库数据不一致;排行榜要实时更新;Feed 流还要展示“你的好友点赞了这篇文章”。
课程要解决的问题
这门课围绕四个问题展开:
- 计数怎么写:数据库、Redis、本地缓存和合并写如何取舍。
- 状态怎么存:用户是否点赞过,和总点赞数是否放在同一处。
- 一致性怎么保证:展示数字、点赞记录、排行榜是否需要完全一致。
- 扩展功能怎么做:Feed 流、排行榜、取消点赞、幂等和回滚如何设计。
核心指标
点赞系统的指标不只是 QPS:
- 点赞接口成功率和延迟。
- 热门内容的写入吞吐。
- 点赞数和点赞记录的一致性差异。
- Redis 回写数据库延迟。
- 排行榜更新延迟。
不同页面对准确性的要求不同。详情页点赞数最好接近实时,排行榜可以有秒级延迟,离线统计可以接受分钟级延迟。
学习路径
我们先从数据库方案开始,理解最直观的建模方式;再引入 Redis 原子计数提升性能;随后通过分片、缓存和合并写处理高并发;最后把点赞记录、Feed 流和排行榜串起来,形成完整计数平台。
计数系统的核心不是永远追求“每个数字立刻绝对准确”,而是根据业务场景定义可接受的一致性边界。
