小红书缓存服务多云建设之路

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 小红书缓存服务多云建设之路 吴成超 小红书 数据库缓存组负责人
2.
3. 大纲 • Redis集群现状 • Redis编排与内核优化 • 多云架构演进
4. Redis集群现状 slot = CRC16(key) % 16384 Proxy Redis Cluster • 标准缓存 • 内存DB • 数据排序 Master • 推荐特征存储 Slave1 • 分布式锁 • ... ... Slot 0 1 2 ... ... 16383 Slave2 Gossip Protocol
5. Redis集群现状 488 内存/TB 412 QPS/M 90 Pod/K 100 % k8s
6. 集群编排 Why K8S ? • 运维简单、自动化程度高 • 屏蔽多云机器差异 • 复用K8S丰富的调度能力 • 方便资源拆借、混部 • ... ...
7. 集群编排 K8S ... ... VM-2 VM-1 VM-3 M S S S S M S M S ... ... ... ... ... ... VM-1 VM-2 VM-3 Proxy server group ... ... VM-X Redis server group
8. 集群编排 • IP漂移 • 磁盘满导致节点被驱逐 • 资源碎片 • 单k8s规模过大 (>4000 node) • 宿主机快速重启导致数据丢失 • ... ...
9. Redis内核优化 • Gossip分治 • Cluster功能裁剪 • Time Window Rank • 全局Scan • ... ...
10. Redis内核优化 • 去中心化 • 架构简单 • 鲁棒性好 VS • 网络风暴 • 选主收敛慢
11. Redis内核优化 LAN Gossip WAN Gossip
12. Redis内核优化
13. Redis内核优化
14. Redis内核优化 优化前 优化后 变化 内存 2.166TB 1.513TB -30.1% CPU 40.93C 27.15C -33.6% 业务报错 每天一次 不再报错 / 响应时间P99 (灌数据时段) 75ms~100ms <20ms (几乎无波动) -80%
15. Redis内核优化 Read Write 归并计算 ts Zset ts - w Zset ts - 2w Zset ... ... ... ... ts - nw Zset ts – (n+1)w Zset ts – (n+2)w Zset • 搜索词出现频率TopN • 统计窗口: 1s / 10s / 1min • 实时动态刷新(延迟<10s) 归并计算 实时写入 TopN统计窗口 待GC数据
16. Redis内核优化 记录Key搜索事件 zincryby twrank:search-key camping 1 获取Key搜索频率Top 100 zrevrange twrank:search-key 0 100 withscores
17. Redis内核优化 • 全局 Scan • Cluster 拓扑 缓存 • 实时大Key检测 • 亚健康节点自动隔离 • 实时热Key检测 • Rehash 内存分配异步化 • ... ...
18. 多云架构演进 Why • 单机房故障 • 单云入口层异常 • 更强大的灰度和容量管理能力 • 上海机房资源受限 • 单供应商议价能力差 • 地域级故障
19. 多云架构演进 • 同城双活 • 跨云多活 1.0 • 跨云多活 2.0
20. 多云架构演进 • 上海同城双机房( Ping<2ms, 带宽几乎无限制) • 核心业务场景(标准缓存用法) • 单机房异常/专线异常时 核心用户体验不受影响
21. 多云架构演进 Zone A Zone B CDC
22. 多云架构演进 User Cmd Repl Cmd Mem Dict Mem Dict X Redis CDC
23. 多云架构演进 • Full Sync Without RDB • Slot同步延迟校验 • 数据一致性校验
24. 多云架构演进 • 华东跨省多机房( Ping:10ms, 带宽受限) • 业务侧场景复杂(Redis As Cache & DB) • 业务层做单元化改造 • 单机房异常/专线异常时 核心用户体验不受影响
25. 多云架构演进 Cloud A Cloud B Cloud C Redis Master Redis Slave
26. 多云架构演进 User Cmd Redis Disk Mem Dict RDB User Cmd Repl Cmd Mem Dict binlog.001-099 binlog.100-199 binlog.xxx-yyy Simba Data Loader Replicate Server Replicate Client
27. 多云架构演进 • 自定义ReplCmd, 引入Clsuter ID 避免循环复制 • 不做冲突处理 • 复制位点存储Redis ,无中心存储依赖 • 默认关闭全同步,由人工触发 • 外部组件检查&调整 复制链路
28. 多云架构演进 • 链路管理复杂 ( 4机房 -> 6条链路) • 业务层无法实现单元化 • 读多写少,写入Latency要求不高 • 不要求“写后读”
29. 多云架构演进 group 1 group 2 Cloud A group 3 group 4 Cloud B group 5 Redis Master Redis Slave Cloud C
30. 多云架构演进 User Cmd Master Cmd Mem Dict Mem Dict binlog.001-099 binlog.100-199 binlog.xxx-yyy
31. 多云架构演进 • 强一致性、强写后读场景 • 专线带宽管理 • 异步RDB全同步 • 单机房/专线故障时的处理预案 • 双活 VS 三活
32.
33. THANKS xueying@xiaohongshu.com

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 10:51
浙ICP备14020137号-1 $Map of visitor$