小红书缓存服务多云建设之路
如果无法正常显示,请先停止浏览器的去广告插件。
        
                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