这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
点赞计数器
设计一个高性能计数器,支持文章点赞、视频点赞等功能
系统设计高并发计数器Redis
系统演进路线
从数据库加一到互动数据平台
第 1 版
数据库加一
文章页上线第一个点赞按钮,直接更新 `like_count`。
点赞表计数字段事务更新
能保证准确,但热门文章会形成数据库写热点。
第 2 版
Redis 原子计数
点赞 QPS 上升,计数写入需要从数据库移到内存。
INCRSet 去重异步落库
吞吐提升后,一致性、冷启动和补偿成为核心问题。
第 3 版
分片与合并写
单 key 热点和大 V 内容爆发,需要削峰和分散压力。
分片计数本地缓冲批量同步幂等记录
计数系统开始接受短暂不准确,用最终一致换吞吐。
生产版
互动数据平台
点赞数要进入 Feed、排行榜、推荐特征和风控。
行为日志排行榜Feed 展示反刷赞监控校准
生产级计数器既是展示数字,也是内容分发和治理信号。
课程简介
系统总览
点赞计数系统总览
把高频写入、缓存计数、异步落库和展示一致性放在一条链路里理解。
写入
点赞事件
去重记录
计数增量
计数
Redis INCR
分片计数
合并写入
展示
Feed 计数
排行榜
一致性修复
点赞计数看起来只是一个数字加一,但在真实产品里,它会很快变成高并发系统问题:同一篇文章被大量用户同时点赞,数据库如何避免写热点?用户是否点过赞如何判断?点赞数是否必须实时准确?排行榜如何更新?Feed 流里如何展示好友点赞?
这门课从最简单的数据库计数开始,逐步演进到 Redis 原子计数、高并发合并写、分布式一致性、点赞记录、Feed 展示和排行榜能力。
学习路线
- 计数器概述:从业务场景出发,理解点赞系统为什么不只是
count + 1。 - 基础计数器设计:用数据库实现第一版,并暴露并发更新和写热点问题。
- Redis 计数:引入
INCR提升吞吐,并讨论持久化、冷启动和一致性。 - 高并发优化:通过本地缓存、分片计数和合并写削峰。
- 分布式计数:处理多实例并发、Lua 脚本、分布式锁和一致性边界。
- 点赞 Feed 流:记录谁点赞了什么,并在内容流中正确展示。
- 排行榜功能:用 ZSet 和分页优化构建实时点赞榜。
- 完整系统:总结最终架构、关键取舍和上线检查清单。
读完后,你应该能判断一个计数系统在哪些地方需要强一致,哪些地方可以最终一致,以及如何在性能和准确性之间做取舍。
