开始 - 计数器概述

点赞功能通常从一个按钮开始:

用户点击点赞 -> 文章 like_count + 1

第一版很容易写出来,但业务一增长,问题会接踵而来:同一篇热门文章被几万人同时点赞,数据库行锁竞争严重;用户重复点击导致计数错误;Redis 和数据库数据不一致;排行榜要实时更新;Feed 流还要展示“你的好友点赞了这篇文章”。

课程要解决的问题

这门课围绕四个问题展开:

  • 计数怎么写:数据库、Redis、本地缓存和合并写如何取舍。
  • 状态怎么存:用户是否点赞过,和总点赞数是否放在同一处。
  • 一致性怎么保证:展示数字、点赞记录、排行榜是否需要完全一致。
  • 扩展功能怎么做:Feed 流、排行榜、取消点赞、幂等和回滚如何设计。

核心指标

点赞系统的指标不只是 QPS:

  • 点赞接口成功率和延迟。
  • 热门内容的写入吞吐。
  • 点赞数和点赞记录的一致性差异。
  • Redis 回写数据库延迟。
  • 排行榜更新延迟。

不同页面对准确性的要求不同。详情页点赞数最好接近实时,排行榜可以有秒级延迟,离线统计可以接受分钟级延迟。

学习路径

我们先从数据库方案开始,理解最直观的建模方式;再引入 Redis 原子计数提升性能;随后通过分片、缓存和合并写处理高并发;最后把点赞记录、Feed 流和排行榜串起来,形成完整计数平台。

计数系统的核心不是永远追求“每个数字立刻绝对准确”,而是根据业务场景定义可接受的一致性边界。

章节