美团点评万亿级KV存储架构与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 美团点评万亿级 KV 存储架构与实践
齐泽斌
美团点评高级技术专家
2. 在此键入姓名
在此键入tittle
3. ⾃自我介绍
美团点评高级技术专家,KV 存储团队负责人,有 8 年以上分布式存储研发经验。
2011 年天津大学毕业后加入百度,负责过分布式文件系统 MFS 和分布式 KV BDRP
系统研发及运营。
2014 年加入美团,负责过分布式 KV 存储 Cellar、分布式缓存 Squirrel、数据传输
Databus 等系统研发及运营,主要关注于分布式存储技术领域。
4. ⽬目录
•
•
•
•
美团点评 KV 存储发展历程
内存 KV Squirrel 架构和实践
持久化 KV Cellar 架构和实践
发展规划和业界趋势
5. ⽬目录
•
•
•
•
美团点评 KV 存储发展历程
内存 KV Squirrel 架构和实践
持久化 KV Cellar 架构和实践
发展规划和业界趋势
6. 美团点评 KV 存储发展历程
客户端
⼀一致性哈希
memcached
memcached
客户端
宕机、扩缩容
丢数据
⼀一致性哈希
扩缩容丢数据
Redis Redis Redis
Redis Redis Redis
memcached
7. 美团点评 KV 存储发展历程
config
• 中⼼心节点脑裂
• 容灾、扩容难
config
Tair 中⼼心节点
路路由表
客户端
⼼心跳
读&写
A
B
复制
C
Tair 存储节点
D
8. 美团点评 KV 存储发展历程
⾃自研 + 社区
Redis Cluster
⾃自研
Tair
•
•
⽇日调⽤用量量均已破万亿
请求峰值均已破亿
Squirrel
Cellar
全内存、⾼高吞吐、
低延迟
持久化、⼤大容量量、
数据⾼高可靠
9. ⽬目录
•
•
•
•
美团点评 KV 存储发展历程
内存 KV Squirrel 架构和实践
持久化 KV Cellar 架构和实践
发展规划和业界趋势
10. KV 数据分布介绍
key
HASH
固定HASH算
法
Slot
固定数目
数据分片
路路由表
Slot->存储节
点对照表
存储节点
11. KV 架构和实践
高可用
• 宏观:容灾
• 微观:端到端成功率
12. Squirrel 架构和实践
zookeeper
元数据更更新
元数据获取
调度服务
主1
客户端
主2
读&写
主3
管理理
Gossip
从1
从3
扩缩容服务
⾼高可⽤用服务
从2
Redis集群
集群调度平台
13. Squirrel—节点容灾
• 主库宕机恢复30s,从库
有必要等这么久吗?
• 集群多,宕机后补副本
累坏人?
HA⾼高可⽤用服
14. Squirrel—节点容灾
摘除Redis2
替换Redis4
ZooKeeper
•
•
摘除Redis2
替换Redis4
Redis4
HA1
HA2
客户端
监控
Redis1
读
Redis4
Redis2
Redis3
Squirrel集群
Kubernetes
从摘除30s->5s
分钟级⾃自动扩容
15. Squirrel—跨地域容灾
•
•
•
跨地域专线不稳定
跨地域专线有限的带宽
单元化部署,多活架构
集群间复制
16. Squirrel—跨地域容灾
监控
manager
manager
监控
同步调度
任务调度
从
Redis复制协议
同步机
主
从
从
主
从
同步机
Redis复制协议
从
写
同步机
主
从
写
主
从
从
北北京主集群
同步集群
上海海从集群
17. Squirrel—端到端成功率
影响端到端成功率的因素:
• 数据迁移造成超时抖动
• 持久化造成超时抖动
• 热点key请求导致单节点过载
• ···
18. Squirrel—智能迁移
Redis提供数据迁移功能,但:
• Slot迁哪些、往哪迁、谁来迁?
• 想迁的快又怕太快影响业务?
• 迁移大key阻塞业务请求?
迁移服务
19. Squirrel—智能迁移
就近原则
迁移任务 任务下发
⽣生成
迁移Slot
客户端
读写
Redis1
Migrate
迁移
机1
• 节点间并发
• 批量量Migrate
• 根据监控调速
迁移
机2
迁移Slot
Redis2
Redis3
IDC1
服务状态反馈
Migrate
Redis4
IDC2
成功率、耗时···
监控服务
⼤大key异步迁
20. Squirrel—持久化重构
• 做不不起的RDB
• ⽆无法避免抖动的AOF
重构持久化机制
21. Squirrel—持久化重构
写请求
mem_backlog
DB
disk_backlog
mem_backlog
异步
线程
RDB +
disk_backlog
RDB
disk_backlog
disk_backlog
disk_backlog
•
•
•
•
减少全量量重传
减少并控制RDB
减少AOF写盘抖动
降低了了数据可靠性
22. Squirrel—热点key
普通从
•
•
普通主
统计
查询热点
监控服务
热 点
key
流控
普通主
热点Slot
迁移服务
热点Slot
迁移热点Slot
热点主
热点从
热点从
实时监控热点并止损
自动隔离热点并扩容
23. ⽬目录
•
•
•
•
美团点评 KV 存储发展历程
内存 KV Squirrel 架构和实践
持久化 KV Cellar 架构和实践
发展规划和业界趋势
24. Cellar 架构和实践
ZooKeeper
元数据
路路由表
OB1
OB2
config
config
中⼼心节点
客户端
⼼心跳
读&写
A
B
复制
C
D
25. Cellar—节点容灾
• 想快速Failover却承
•
担不起数据恢复的代价?
运维操作导致请求超时?
Handoff
26. Cellar—节点容灾
• 秒级容灾
• 静默升级
中心节点
A恢复
A故障
客户端
分⽚片1请求
分⽚片1请求
A
1分片主
2分片备
⼼心跳
⼼心跳
分⽚片1复制
回写增量量log
分⽚片2复制
B
1分片备
2分片主
分⽚片1&2
log
27. Cellar—跨地域容灾
•
•
•
跨地域专线不稳定
跨地域专线有限的带宽
单元化部署,多活架构
集群间复制
28. Cellar—跨地域容灾
写
A
B
C
D
集群内复制
客户端
北北京主集群
集群间复制
读
H
J
I
集群内复制
上海海从集
K
29. Cellar—强⼀一致
⽀支付等场景
数据不不能丢
共识协议:
Paxos/Raft
Raft:
协议详实、⼯工程实践
30. Cellar—强⼀一致
• multi Raft
• 调度leader
客户端
读&写
Raft 复制组
读&写
读&写
读&写
Slot 1 Slot 1 Slot 2 Slot 1
Slot 3 Slot 2 Slot 3 Slot 2
存储节点3 存储节点4
Slot 3
存储节点1
存储节点2
Raft组调度
中⼼心节点
31. Cellar—端到端成功率
影响端到端成功率的因素:
• 数据迁移影响业务请求成功率
• 慢请求阻塞服务队列
• 热点key请求导致单节点过载
• ···
32. Cellar—智能迁移
节点状态指标
Slot 1
• 引擎压力
• 网卡流量
量量
增 g
lo
请求
客户端
迁移
Slot 2
响应
• 队列长度
• ···
桶2
B节点状态
请求
代理理请求
响应
Slot 3
Slot 3
A节点
响应
B节点
33. Cellar—快慢队列列
网络
线程
网络
线程
工作队列
工作
线程
读快队列 读快
线程
读慢队列 读慢
线程
写快队列 写快
线程
写慢队列 写慢
线程
慢请求:超时请
求 1:20
TP999延迟降
低86%
34. Cellar—热点key
路由表&热点区域
热点key
中⼼心节点
客户端
写
•
•
热点读彻底分散
热点读无延迟
读
热点区域管理
普通
数据
dataserver
普通复制
普通
数据 普通
数据
dataserver dataserver
热点复制
热点
数据
普通
数据
热点
数据
dataserver
35. ⽬目录
•
•
•
•
美团点评 KV 存储发展历程
内存 KV Squirrel 架构和实践
持久化 KV Cellar 架构和实践
发展规划和业界趋势
36. 发展规划和业界趋势
服务
• Redis gossip 优化
• Cellar 中心节点 Raft
• Squirrel & Cellar API 统一
• ···
系统
• Kernel bypass(DPDK、SPDK)
硬件
• RDMA
• 3D XPoint(Optane、AEP)
• 计算型硬件(SSD + FPGA)
37.
38. 欢迎交流:qizebin@meituan.com