为支撑百亿级访问新浪微博Feed的缓存如何架构以及演进之路。

fishermen发布于2018/09/07

注脚

展开查看详情

1.支撑百亿级访问 微博 Feed 的缓存架构及演进之路 新浪 微博 陈波 @fishermen

2.微博 Feed 的缓存架构及演进之路 数据挑战 Feed 架构 Cache 架构及演进 总结及展望 大纲

3.数据挑战 微博数据 平台接口 日访问百亿 级 Cache 内存百 T 级 核心记录千亿级 Cache 日访问万亿 级 单个核心 数据 Cache QPS 百万级 日活用户 1.4 亿 +

4.Feed 架构 Feed 平台系统架构 总体架构

5.Feed 架构 构建流程 Feed timeline

6.Cache 架构及演进 Feed Cache Cache 架构

7.Cache 架构及演进 单层 HASH Main-HA 简单 KV 数据类型( MC )

8.Cache 架构及演进 Main-HA-L1 简单 KV 数据类型

9.Cache 架构及演进 Key Point 层内 HASH 节点不漂移, miss 则穿透 多组 L1 读取性能升 峰值流量成本降 多层访问 命中率升 , 可用性 高, cache node 故障 透明 MC data : Protocol Buffer, QuickLZ 压缩 读写策略 Write :多写 Read :逐层穿透, miss 回写 简单 KV 数据类型

10.Cache 架构及演进 MC Json /xml  PB Client 序列化 反序列化 Redis 关注,粉丝,分组,共同关注, XX 也关注 部分修改,分页获取,资源 计算 Hash 分布, MS , cache /storage 30+T 内存, 2-3 万亿 rw /day 集合类数据类型

11.Cache 架构及演进 Longset Long 型开放数组, Double Hash 寻址 Client 构建数据结构, elements 单次写入 Lsput :填充率过高,由 client 重建 Lsgetall / Lsdump MC 做前置抗量 Weibo Redis 扩展

12.Cache 架构及演进 其他扩展 热升级 : 10+ 分钟 毫秒级 落地: RDB + rotate Aof 全增量复制 落地 / 同步速控 Weibo Redis 扩展

13.Cache 架构及演进 Memcached / Redis MC 剔除,重启数据丢失 Redis 内存开销 访问性能 计数器 CounterService Shema 支持多列,按 bit 分配 Tables 预分配, double-hash 寻址 内存降 为 1/5-1/15 以下 冷热分离, SSD 存放老数据,老热数据入 LRU 落地 RDB + AOF 全增量复制 单机:热数据百亿级,冷数据千亿 级 其他数据类型 - 计数

14.Cache 架构及演进 存储架构 计数器 CounterService

15.Cache 架构及演进 业务类型需求 检查是否存在(阅读 赞) 单条记录量小 总数据量巨大 每日新增数量大 千亿级 其他数据 类型 - 存在性判断

16.Cache 架构及演进 Redis 单条 kv : 65 bytes 每日新增内存 6T (不考虑 HA ) CounterService 单条 kv : 9 bytes 每日新增内存 9 00G (不考虑 HA ) 存在性判断

17.Cache 架构及演进 Phantom Table 分段预分配, 段内 bloomfilter 每条 kv : 1.2 bytes (1% 误判 ) 每日新增内存: 120G < 800G < 6T 存在性判断

18.Cache 架构及演进 Phantom 数据存放共享内存,重启不丢 数据 落地 RDB + AOF Redis 协议 存在性判断

19.Cache 架构及演进 关注点 集群内高可 用 集群内扩展性 组件高性能 存储 成本 小结

20.Cache 架构及演进 进一步优化 业务关联资源太 多 如何 简化开发 ? 业务数据分类 多 如何 独立管控 SLA ? 常规峰值、 突发 流量 如何快捷、低成本应对? 本地配置 模式 如何快速变更? 面向 资源 / 组件管理 如何简化运维?

21.Cache 架构及演进 本地配置 Confs 资源变更 改本地配置配置更新 重启 配置服务化 configServer 资源管理 API 化 脚步变更, smart client 同步配置 配置服务化

22.Cache 架构及演进 Cache 访问 Proxy 化 IDC 数据一致性 Collecting/replication Cache 服务化

23.Cache 架构及演进 ClusterManager 脚本化 Web 界面化 服务校验 业务 SLA 面向服务管控资源 服务治理 扩容、缩容 SLA 保障 监控报警 故障处理 简化开发 屏蔽 Cache 资源细节 单行配置访问 Cache 服务化

24.总结及展望 Feed Cache 架构 数据 架构 性能 扩展 可用性 存储 成本 服务化 L1-M-HA 分布策略 开源扩展优化 自研组件 简单 KV 集合类数据 计数 存在性判断 配置服务化( vintage ) cacheService ( MC ) 服务治理 监控报警 Phantom counterService Redis storage  c ache 存储引擎 自动化运维

25.THANKS