热点与降级
几亿 DAU 的峰值不均匀:流量服从极端长尾。架构必须按「单 Key 被全国打穿」来设计,否则春晚、明星直播、一条爆款就会把看似够用的集群打穿。
系统吃力
先丢广告 / 特效 / 高码率
召回路超时则跳过
精排改粗排
热门池 + 本地缓冲
必须还能滑到下一条
热视频元数据
一条爆款被全国同时点查,单 Key QPS 远超单分片上限。
多级缓存:播放器本地 → 接入/网关 → 服务进程内 LRU → Redis → Abase。过期短、允许短暂不一致。CDN 承接真正的字节,元数据缓存只放 ID/URL/封面。
计数(赞、播、粉)
INCR 同一个 Redis Key 会先打满单核,再打满分片。
按 uid/item hash 到 N 个计数分片再异步汇总;展示用近似值。写走总线削峰。头部账户在 ByteGraph/计数服务里当超级顶点特殊对待。
评论与通知
爆款评论墙写放大,读是最新 N 条,写是全球同时 insert。
按视频 ID 分片的写队列;热视频评论单独集群。读走缓存列表。通知按接收者 UserID 落入其单元。
大 V 邻接表
一次取粉列表可能百万边,图遍历中间结果会撑爆查询层。
ByteGraph edge-tree 分页;按边类型切开;查询层单 Key 缓存;线程池把重请求和轻请求隔开。关注列表 API 强制游标分页。
推荐 PS / 特征 KV
头部用户和热 item 的 embedding 与特征被所有精排请求打中。
PS 按 key 分片但仍有热点:本地 embedding cache、Backup Request、把极热 ID 复制到多副本。特征侧把窗口结果预计算。
降级顺序
先丢:个性化召回路、广告、高码率、礼物特效。再丢:精排改粗排分。保底:热门池 + 已缓冲的本地视频。