美团点评万亿级KV存储架构与实践 齐泽斌

Razor

2019/10/19 发布于 技术 分类

文字内容
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)
38. 欢迎交流:qizebin@meituan.com