设计像微博、微信朋友圈这样高并发的点赞/取消点赞功能,核心挑战在于巨大的瞬时写流量(Write Heavy)和海量数据的存储与读取。 直接操作数据库(如 MySQL)是绝对扛不住的,必须采用 “缓存 + 异步 + 最终一致性” 的架构设计。 以下是详细的架构设计方案,分为核心流程、缓存设计、持久化设计、以及极端场景优化四个部分。 --- 1. 核心架构思路 整体遵循 Write-Behind(写后/异步写入) 策略: 1. 用户点赞:请求先落到 Redis 缓存,直接返回成功(前端即时反馈)。 2. 异步处理:通过消息队列(MQ)削峰填谷,将点赞动作异步写入数据库。 3. 数据读取:优先读 Redis,Redis 没有再查数据库并回填。 --- 2. Redis 缓存设计 (抗压第一线) Redis 是抗住高并发的核心。我们需要存储两类数据: 1. 点赞数(Count):这条微博有多少人点赞。 2. 点赞状态(Relationship):具体是谁点了赞(用于判断“我是否点赞过”以及展示“张三、李四觉得很赞”)。 2.1 数据结构选择 方案 A:Hash 结构 (推荐) : : :...