跳转到内容

系统案例:知识点全景图

做完主线项目后,想挑战更多系统?从这里选一个开始。 每个系统展示了一个完整的生产系统是怎么把多个知识点串在一起的。

  1. 选一个你感兴趣的系统
  2. 看它的”知识点全景图”,了解涉及哪些知识点
  3. 思考框架 做 5 层分析
  4. vibe-coding-recipes.md 的配方让 AI 实现
  5. 遇到不懂的知识点编号(如 6.1、12.3),查对应的深度参考模块

一句话描述:把长链接变短,核心是高并发读场景下的极速重定向。难度:⭐⭐

  • 如何高效生成不冲突的短码?
  • 如何在海量读请求下保证毫秒级响应?
  • 如何防止恶意刷量和缓存穿透?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入DNS(13.1)、HTTP 301/302(13.2)、HTTPS(13.3)、Nginx(17.2)用户访问短链时,DNS解析到服务器,Nginx做反向代理,HTTP 301/302实现重定向
API层REST(1.6)、限流(1.7)、API Key(12.8)创建短链的REST API,限流防止恶意批量创建,API Key区分调用方
业务逻辑幂等(7.8)、输入校验(14.5)同一长链接重复提交返回相同短码(幂等),校验URL合法性防注入
数据层哈希索引(2.3)、B-Tree(2.5)、哈希分区(3.8)短码用哈希索引快速查找,B-Tree索引支持范围查询统计,数据量大时按短码哈希分区
缓存层Cache-aside(4.2)、穿透防护(4.4)、一致性哈希(4.9)热门短链缓存在Redis,布隆过滤器防穿透,一致性哈希分配缓存节点
异步处理滑动窗口统计(9.5)异步统计点击量,滑动窗口计算实时QPS
认证安全API Key(12.8)、DDoS防护(14.9)API Key控制创建权限,DDoS防护保障服务可用性
可观测性指标监控(15.3)监控重定向延迟、缓存命中率、QPS等关键指标
基础设施Docker(16.1)、CI/CD(16.4)容器化部署,自动化构建和发布

V1 — 能用就行

  • 单机PostgreSQL + Go,REST API,基本重定向
  • 需要掌握:REST(1.6)、HTTP 301/302(13.2)、哈希索引(2.3)

V2 — 扛住流量

  • +Redis缓存,+限流,+点击统计
  • 新增知识点:Cache-aside(4.2)、穿透防护(4.4)、限流(1.7)、滑动窗口统计(9.5)

V3 — 全球服务

  • +分区,+CDN,+多区域部署
  • 新增知识点:哈希分区(3.8)、一致性哈希(4.9)、Nginx(17.2)、Docker(16.1)

一句话描述:自动抓取互联网页面,建立可搜索的索引。难度:⭐⭐⭐

  • 如何高效调度海量URL,避免重复抓取?
  • 如何控制抓取速度,不把目标网站打挂?
  • 如何处理失败和异常页面?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入HTTP(13.2)、DNS(13.1)爬虫作为HTTP客户端请求目标网站,DNS解析目标域名
API层Rate Limiting(1.7)控制对同一域名的请求频率,遵守robots.txt
业务逻辑超时(7.2)、批处理(9.1)、MapReduce(9.2)、DAG(9.3)请求超时避免阻塞,批量处理已抓页面,MapReduce构建索引,DAG编排抓取流水线
数据层LSM-Tree(2.4)、对象存储(17.4)LSM-Tree高效写入URL去重记录,对象存储保存抓取的原始页面
缓存层
异步处理消息队列(5.2)、背压(5.8)、死信队列(5.7)消息队列调度待抓URL,背压控制抓取速度不超过处理能力,死信队列处理反复失败的URL
认证安全
可观测性指标监控(15.3)监控抓取速度、成功率、队列积压等指标
基础设施K8s(16.3)K8s管理爬虫节点,根据队列深度自动扩缩容

V1 — 单机版

  • 单线程BFS爬取,本地存储
  • 需要掌握:HTTP(13.2)、批处理(9.1)、超时(7.2)

V2 — 可靠调度

  • +消息队列调度,+去重(布隆过滤器),+robots.txt遵守
  • 新增知识点:消息队列(5.2)、背压(5.8)、死信队列(5.7)、Rate Limiting(1.7)

V3 — 分布式集群

  • +分布式多节点,+K8s自动扩缩,+增量更新
  • 新增知识点:K8s(16.3)、MapReduce(9.2)、DAG(9.3)、LSM-Tree(2.4)

一句话描述:展示你关注的人的动态,核心是海量用户的feed聚合与分发。难度:⭐⭐⭐⭐

  • 推模式还是拉模式?大V粉丝百万怎么办?
  • 如何保证feed的最终一致性?
  • 如何在延迟和成本之间取得平衡?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入GraphQL(13.6)、Cursor分页(1.8)GraphQL灵活查询feed数据,游标分页实现无限滚动
API层REST(1.6)、OAuth(12.4)REST API发布动态、查看feed,OAuth集成第三方登录
业务逻辑CQRS(9.8)、图模型(2.1)CQRS分离读写路径(写入发布、读取聚合),图模型存储关注关系
数据层哈希分区(3.8)、热点(3.9)按用户ID分区存储feed,大V热点数据特殊处理
缓存层Cache Write-behind(4.2)写入时异步更新粉丝的feed缓存
异步处理异步分发(5.1)、发布订阅(5.3)用户发布动态后,消息队列异步分发到粉丝的feed
认证安全OAuth(12.4)、XSS(14.3)、CSRF(14.4)OAuth登录,防止XSS注入恶意内容,CSRF保护操作接口
可观测性
基础设施

V1 — 拉模式

  • 拉模式(读时聚合),REST API,关系数据库
  • 需要掌握:REST(1.6)、图模型(2.1)、Cursor分页(1.8)

V2 — 推模式

  • +推模式(写时分发),+Redis缓存feed,+消息队列
  • 新增知识点:异步分发(5.1)、发布订阅(5.3)、Cache Write-behind(4.2)、最终一致性(6.9)

V3 — 推拉混合

  • +推拉混合(大V用拉模式),+CQRS,+GraphQL
  • 新增知识点:CQRS(9.8)、GraphQL(13.6)、热点(3.9)、哈希分区(3.8)

一句话描述:实时消息收发,核心是消息的可靠有序传递。难度:⭐⭐⭐⭐

  • 如何保证消息不丢、不重复、有序?
  • 如何支持多设备同步和离线消息?
  • 如何在多服务器间同步在线状态?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入WebSocket(13.4)、SSE(13.8)WebSocket维持长连接实现实时双向通信,SSE用于通知推送
API层REST(1.6)、JWT(12.3)REST API用于历史消息查询、好友管理,JWT做身份认证
业务逻辑幂等(7.8)、逻辑时钟(7.4)、因果一致性(6.8)消息ID实现幂等去重,逻辑时钟保证消息因果顺序
数据层分区(3.8)按会话ID分区存储消息,保证同一会话的消息在同一分区
缓存层
异步处理消息有序(5.6)、At-least-once(5.4)消息队列保证有序投递,至少一次语义确保消息不丢
认证安全JWT(12.3)、XSS(14.3)、加密(14.7)JWT认证WebSocket连接,防XSS注入,端到端加密保护隐私
可观测性链路追踪(15.4)追踪消息从发送到接收的完整链路,定位延迟问题
基础设施

V1 — 单服务器

  • WebSocket + 内存,单服务器,消息存DB
  • 需要掌握:WebSocket(13.4)、JWT(12.3)、幂等(7.8)

V2 — 多节点

  • +Redis Pub/Sub(多节点消息同步),+离线消息,+已读回执
  • 新增知识点:At-least-once(5.4)、消息有序(5.6)、因果一致性(6.8)

V3 — 生产级

  • +消息分区,+端到端加密,+群聊
  • 新增知识点:分区(3.8)、加密(14.7)、逻辑时钟(7.4)、链路追踪(15.4)

一句话描述:全文检索加相关性排序,核心是倒排索引和分布式查询。难度:⭐⭐⭐⭐

  • 如何构建和维护大规模倒排索引?
  • 如何在海量文档中实现毫秒级检索?
  • 如何平衡搜索相关性和实时性?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入gRPC(13.5)内部微服务间用gRPC高效通信
API层REST(1.6)、RBAC(12.6)REST API提供搜索接口,RBAC控制不同用户的搜索范围
业务逻辑倒排索引(2.7)、Schema-on-read(2.2)、全局vs本地索引(3.10)倒排索引实现全文检索,Schema-on-read灵活处理不同格式文档,选择全局/本地索引策略
数据层Elasticsearch、批处理(9.1)Elasticsearch存储和检索,批处理构建离线索引
缓存层缓存(4.1)缓存热门查询结果,减少重复计算
异步处理MapReduce(9.2)、流处理增量更新(9.6)MapReduce批量构建索引,流处理实现近实时索引更新
认证安全RBAC(12.6)基于角色控制搜索结果的可见范围
可观测性
基础设施

V1 — 单节点

  • 单节点Elasticsearch,基础搜索
  • 需要掌握:倒排索引(2.7)、Elasticsearch、REST(1.6)

V2 — 精细化

  • +分词优化,+权限过滤,+搜索建议
  • 新增知识点:RBAC(12.6)、Schema-on-read(2.2)、缓存(4.1)

V3 — 分布式

  • +分布式索引,+实时增量更新,+个性化排序
  • 新增知识点:全局vs本地索引(3.10)、MapReduce(9.2)、流处理增量更新(9.6)、gRPC(13.5)

一句话描述:视频上传、转码、全球分发,核心是大文件处理和CDN架构。难度:⭐⭐⭐⭐⭐

  • 如何高效处理GB级视频的上传和转码?
  • 如何实现全球低延迟的视频播放?
  • 如何构建实时推荐系统?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入CDN(4.5/17.10)、HTTP/2(13.2)CDN全球分发视频内容,HTTP/2多路复用提升加载速度
API层OAuth(12.4)、RBAC(12.6)、分块上传OAuth第三方登录,RBAC区分普通用户和创作者权限,大文件分块上传
业务逻辑DAG管道(9.3)、异步转码(5.1)、流处理推荐(9.4)、支付(17.9)DAG编排转码流水线(解码→多分辨率编码→缩略图→水印),流处理实时更新推荐,创作者收益结算
数据层对象存储(17.4)、列式存储(2.8)、多主复制(3.5)对象存储保存视频文件,列式存储做观看行为分析,多主复制实现多区域读写
缓存层CDN(4.5/17.10)多层CDN缓存(边缘节点→区域节点→源站)
异步处理消息队列(5.2)、异步转码(5.1)、DAG管道(9.3)上传完成后消息触发异步转码流水线
认证安全OAuth(12.4)、RBAC(12.6)OAuth认证,RBAC控制视频可见性和操作权限
可观测性SLO(15.9)定义和监控播放成功率、缓冲率、首帧时间等SLO
基础设施K8s(16.3)K8s管理转码worker集群,按需扩缩

V1 — 基础功能

  • 简单上传 + 存储 + 播放
  • 需要掌握:对象存储(17.4)、REST(1.6)、HTTP/2(13.2)

V2 — 专业化

  • +异步转码多分辨率,+CDN分发,+缩略图生成
  • 新增知识点:消息队列(5.2)、异步转码(5.1)、DAG管道(9.3)、CDN(4.5/17.10)

V3 — 平台化

  • +推荐系统,+全球多区域,+创作者收益,+直播
  • 新增知识点:流处理推荐(9.4)、多主复制(3.5)、列式存储(2.8)、支付(17.9)、K8s(16.3)、SLO(15.9)

一句话描述:文件存储、同步、协作,核心是多端同步和冲突解决。难度:⭐⭐⭐⭐

  • 多个设备同时修改同一文件怎么办?
  • 如何实现高效的增量同步?
  • 如何设计灵活又安全的权限模型?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入HTTP/2(13.2)、WebSocket/SSE(13.8)HTTP/2分块上传大文件,WebSocket/SSE实时通知文件变更
API层REST(1.6)、分块上传REST API管理文件和文件夹,大文件分块上传支持断点续传
业务逻辑冲突解决(3.6)、乐观锁(6.4)、逻辑时钟(7.4)多端同步时检测冲突并自动合并,乐观锁处理并发更新,逻辑时钟确定变更顺序
数据层对象存储(17.4)、多主复制(3.5)对象存储保存文件内容,多主复制实现多区域读写
缓存层
异步处理
认证安全ABAC权限(12.7)、加密(14.7)ABAC实现文件级细粒度权限(查看/编辑/评论/管理),服务端加密保护存储数据
可观测性
基础设施

V1 — 基础存储

  • 上传下载 + 文件夹管理
  • 需要掌握:对象存储(17.4)、REST(1.6)、HTTP/2(13.2)

V2 — 协作分享

  • +分享权限,+版本历史,+多端同步
  • 新增知识点:ABAC权限(12.7)、乐观锁(6.4)、WebSocket/SSE(13.8)

V3 — 实时协作

  • +实时协作,+冲突自动合并,+离线支持
  • 新增知识点:冲突解决(3.6)、多主复制(3.5)、逻辑时钟(7.4)、加密(14.7)

一句话描述:基于位置发现附近商家,核心是地理空间索引和高效范围查询。难度:⭐⭐⭐

  • 如何高效进行地理范围查询?
  • 如何缓存不断变化的地理位置数据?
  • 如何支持多种筛选条件的组合查询?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入Nginx(17.2)、CDN(4.5)Nginx负载均衡,CDN缓存静态商家信息
API层REST(1.6)、游标分页(1.8)、API Key(12.8)REST API搜索附近商家,游标分页返回结果,API Key控制第三方调用
业务逻辑GeoHash/PostGIS、B-Tree范围查询(2.5)PostGIS的ST_DWithin做地理范围查询,GeoHash将二维坐标转为一维索引,B-Tree加速范围扫描
数据层GeoHash/PostGISPostgreSQL + PostGIS存储商家位置数据
缓存层缓存(4.1)、CDN(4.5)缓存热门区域的查询结果,CDN缓存商家详情
异步处理
认证安全API Key(12.8)API Key控制调用频率和权限
可观测性
基础设施多区域(17.5)多区域部署降低用户到服务的物理距离

V1 — 基础搜索

  • PostGIS + ST_DWithin,基础搜索
  • 需要掌握:GeoHash/PostGIS、REST(1.6)、B-Tree范围查询(2.5)

V2 — 体验优化

  • +缓存,+按类别筛选,+范围自适应
  • 新增知识点:缓存(4.1)、CDN(4.5)、游标分页(1.8)

V3 — 全球服务

  • +实时位置更新,+推荐排序,+多区域
  • 新增知识点:多区域(17.5)、Nginx(17.2)、API Key(12.8)

一句话描述:地图渲染、路径规划、实时导航,核心是多层瓦片缓存和图算法。难度:⭐⭐⭐⭐⭐

  • 如何快速渲染不同缩放级别的地图?
  • 如何在亿级节点的路网上做实时路径规划?
  • 如何融合实时路况做动态ETA预估?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入CDN多层缓存(4.5/11.3/17.10)、HTTP/2(13.2)地图瓦片通过多层CDN缓存和分发,HTTP/2并行加载多个瓦片
API层REST(1.6)REST API提供地点搜索、路径规划、地理编码等接口
业务逻辑图算法(Dijkstra等)路径规划用图算法(Dijkstra/A*),支持多交通方式
数据层对象存储(17.4)对象存储保存预渲染的地图瓦片
缓存层CDN多层缓存(4.5/11.3/17.10)边缘节点缓存高频瓦片,区域节点缓存中频瓦片,大幅降低源站压力
异步处理流处理路况(9.4)、窗口(9.5)流处理实时聚合路况数据,滑动窗口计算路段平均速度
认证安全
可观测性SLO(15.9)SLO定义地图加载时间、路径规划延迟的目标
基础设施全球CDN、离线支持全球CDN节点保证低延迟,离线地图包支持无网使用

V1 — 基础地图

  • 瓦片渲染 + 地点搜索
  • 需要掌握:CDN(4.5)、对象存储(17.4)、HTTP/2(13.2)

V2 — 路径规划

  • +路径规划(Dijkstra),+多交通方式
  • 新增知识点:图算法、REST(1.6)

V3 — 实时导航

  • +实时路况,+ETA预估,+离线地图,+导航
  • 新增知识点:流处理路况(9.4)、窗口(9.5)、SLO(15.9)、全球CDN(17.10)

一句话描述:酒店预订系统,核心是绝对不能超卖的库存一致性。难度:⭐⭐⭐⭐

  • 如何在高并发下保证不超卖?
  • 如何处理支付失败和订单取消的分布式事务?
  • 如何实现跨服务的可靠性?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入REST(1.6)、JWT(12.3)REST API搜索和预订酒店,JWT认证用户身份
API层RBAC(12.6)、CSRF(14.4)RBAC区分旅客和酒店管理员,CSRF保护预订操作
业务逻辑悲观锁(6.4)、ACID(6.1)、Saga(6.6)、2PC(6.5)、Webhook幂等(7.8)悲观锁锁定房间库存防超卖,ACID保证单库事务,Saga/2PC处理跨服务事务(订单+支付+库存),Webhook幂等处理支付回调
数据层同步复制(3.3)同步复制确保主备数据一致,不丢失任何订单
缓存层搜索缓存(4.1)缓存搜索结果(价格和可用性),减少数据库压力
异步处理
认证安全JWT(12.3)、RBAC(12.6)、CSRF(14.4)、加密(14.7)JWT认证,RBAC权限控制,CSRF防护,敏感数据(支付信息)加密存储
可观测性库存告警(15.5)、链路追踪(15.4)库存低时告警,链路追踪定位预订流程中的瓶颈
基础设施蓝绿部署(16.5)、Stripe支付(17.9)蓝绿部署实现零停机发布,集成Stripe处理支付

V1 — 基础预订

  • 搜索 + 预订 + 取消,单机PostgreSQL
  • 需要掌握:ACID(6.1)、悲观锁(6.4)、REST(1.6)、JWT(12.3)

V2 — 支付与通知

  • +支付集成,+缓存,+邮件通知
  • 新增知识点:Stripe支付(17.9)、Webhook幂等(7.8)、搜索缓存(4.1)、Saga(6.6)

V3 — 平台化

  • +动态定价,+多数据中心,+推荐
  • 新增知识点:2PC(6.5)、同步复制(3.3)、蓝绿部署(16.5)、链路追踪(15.4)、库存告警(15.5)

11. Gaming Leaderboard — 游戏排行榜

Section titled “11. Gaming Leaderboard — 游戏排行榜”

一句话描述:实时排名系统,核心是百万级玩家的实时排序和防作弊。难度:⭐⭐⭐

  • 如何在百万级数据中实时维护排名?
  • 如何防止作弊和刷分?
  • 如何支持多维度排行(按区服、赛季、好友圈)?
涉及知识点(模块编号)在这个系统中具体怎么用
用户接入SSE(13.8)SSE实时推送排名变化到客户端
API层REST(1.6)REST API查询排行榜、提交分数
业务逻辑Redis Sorted Set、弱拜占庭(7.5)Sorted Set天然支持有序集合的插入和排名查询,弱拜占庭思路做防作弊校验
数据层LSM-Tree(2.4)、分区(按区服/赛季)LSM-Tree高效写入历史得分记录,按区服和赛季分区存储
缓存层Top N缓存(4.3)缓存Top N排行榜数据,减少Redis查询
异步处理流处理(9.4)流处理实时计算和更新排名
认证安全弱拜占庭(7.5)多维度校验防止刷分作弊
可观测性
基础设施Docker(16.1)Docker容器化部署

V1 — 单排行榜

  • Redis ZADD/ZREVRANGE,单排行榜
  • 需要掌握:Redis Sorted Set、REST(1.6)、SSE(13.8)

V2 — 多维排行

  • +好友排行,+赛季机制,+防作弊
  • 新增知识点:弱拜占庭(7.5)、线性一致性(6.7)、Top N缓存(4.3)

V3 — 全球排行

  • +多维排行,+历史存档,+全球排行
  • 新增知识点:LSM-Tree(2.4)、分区(按区服/赛季)、流处理(9.4)、Docker(16.1)

知识领域URLCrawlerFeedChatSearchYouTubeDriveProximityMapsHotelLeaderboard
数据存储与索引
分区与复制
缓存与CDN
消息队列与异步
事务与一致性
分布式系统
批处理与流处理
认证与授权
安全
网络与协议
可观测性
DevOps与部署
基础设施

● = 核心使用(这个系统是学习该知识的最佳案例) ○ = 基础使用(会用到但不是重点) 空 = 不涉及

按知识领域推荐系统

  • 想学缓存与CDN → YouTube, Google Maps
  • 想学事务与一致性 → Hotel Reservation, Google Drive
  • 想学消息队列 → YouTube, News Feed, Web Crawler
  • 想学实时通信 → Chat System
  • 想学搜索 → Search Engine
  • 想学地理位置 → Proximity Service, Google Maps
  • 想学文件处理 → YouTube, Google Drive