全球架构师峰会 Arch Summit 2018

余汶龙 2018ArchSummit北京 滴滴余汶龙

1. 滴滴分布式NoSQL数据库Fusion的演进之路 余汶龙 滴滴出行——基础平台部
3. 余汶龙 分布式存储专家 • 曾就职于VMware、淘宝核心系统、 阿里云数据库组,长期从事分布式 存储相关的研发。 • 2016年加入滴滴,从零开始构建滴 滴 自 研 的 分 布 式 NoSQL 数 据 库 Fusion。
4. 诞生背景:滴滴业务发展简介 演进过程:如何满足业务需求 总结 & 展望
5. 第一章 诞生背景:滴滴业务发展简介
6. 业务&架构之演进
7. Fusion是什么 定义:兼容Redis协议的分布式NoSQL数据库。 定位:介于Redis与MySQL之间的主存储数据库。 Redis client Redis client Proxy MEM SSD ü String ü Hash ü Bitmap ü Set ü Sorted Set ü List
8. 第二章 演进过程:如何满足业务需求
9. 演进过程:如何满足业务需求 海量存储 1 FastLoad 2 NewSQL 3 跨机房多活 4
10. 演进过程:如何满足业务需求 1 海量存储:解决Redis容量太小、扩容阻塞、宕机恢复慢等问题 Fusion 2 FastLoad 3 NewSQL 4 跨机房多活
11. 需求1:百亿级订单如何存 储? 需求2:数百TB司机行程轨 迹如何落地? 存储需求 6. 存储 生态 5. 接入 简单 1. 海量 数据 Why Fusion 4. 性能 要好 2. 故障 处理 3. 稳定 性4个9
12. Fusion软件架构 接入层(负载均衡) 控制台 Fusion Cache Redis RPC RocksDB SSD 集群路由 用户系统 运维系统 计费系统 监控系统 FastLoad平台 一键切流平台 SaltStack管理平台
13. Fusion集群架构 jedis redigo hiredis Hadoop Proxy VIP Proxy Proxy MySQL FastLoad导入 hash(key) % slots 集群管控 binlog导出 MQ Redis master slave DataNode DataNode slot0-slotn DataNode DataNode DataNode DataNode
14. Redis 协议 性能 Redis 极高 协议 Fusion VS Redis 容量 受限于 内存 数据安全 存内存 线程模 型 单线程 数据导入 SDK 数据导 出 不支持 事务 不支持 快照、 回滚 Fusion Redis 协议 高, 热点 数据 访问 效率 极高 受限于 磁盘 存磁盘 多线程 FastLoad 提供 ACID binlog
15. 演进过程:如何满足业务需求 1 海量存储 Fusion 2 FastLoad:解决离线系统到在线系统数据打通 3 NewSQL 4 跨机房多活
16. 业务需求:标签平台 & 特征平台。 存储需求 痛点:1. 如何支撑每日百亿级高速查询。 2. 如何定时的快速的更新TB级别数据。 3. 如何支持几千个特征库数据个性化更新。 5. 多表隔 离 1. 高性能 Why FastLoad 2. 定时更 新 4. 99.99% 稳定 3. 快速更 新
17. FastLoad 控制台 OpenAPI FastLoad一站式DTS平台——架构 启动调 度任务 hadoop配 置中心 数据分片 计算Fusion路 由及构造SST FastLoad服 务器 用户hive表 数据分片 数据分片 Map/Reduce 有序SST集合 有序SST集合 有序SST集合 Redis client Proxy 路由表 DataNode DataNode DataNode 切换用户访问逻辑表 t0 t0 t0 下载SST t1 t1 t1
18. FastLoad一站式DTS平台——优势 减少N次网络交互。 01 02 绕过LSM的compact过程 ,对 用户请求0影响。 接入简单,用户0感知底层细节。 03 04 提供OpenAPI,方便用户自动接入。 提供2种方式:全量滚动和增量 插入。 05
19. 演进过程:如何满足业务需求 1 海量存储 Fusion 2 FastLoad 3 NewSQL:解决MySQL单库容量小、扩展不灵活等问题 4 跨机房多活
20. NewSQL——需求是什么 轻松改字段 存储不限量 尽量省成本 单机事务 稳定性 灵活扩展 高性能 二级索引
21. NewSQL——schema转换 Redis协议:hset key field value Table: student ID name age sex 1 Li 20 male 2 Wang 22 female 3 Zhang 19 male key student_1 field value name Li age 20 sex male key student_2 field value name Wang age 22 sex female
22. NewSQL——主键索引 •如何主键查询? •hgetall/hget select * from student where id = 1 select age from student where id = 1 hgetall student_1 “name” “Li” “age” “20” “sex” “male” hget student_1 age “20”
23. NewSQL——二级索引 Table: student ID name age sex 1 Li 20 male 2 Wang 22 female 3 Zhang 19 male index_age student_age_20_1 student_age_22_2 student_age_19_3 value null null null index_sex student_sex_male_1 student_sex_female_2 student_sex_male_3 value null null null
24. NewSQL——二级索引 •如何范围查询和非主键查询? •ksecyan索引key,得到主键 select * from student where age >=19 and age <=22 select * from student where sex = ‘male’ scan student_age_19 student_age_22 得到主键1,2,3,然后再根据主键查询即 可。 scan student_sex_male student_sex_male + 1得到所有以 student_sex_ma le开头的key,并提取主键, 即可查询。
25. NewSQL——架构 APP1 APP2 APP3 定制schema 管理字段、索引 控制台 SDK schema转换成 hash结构 dise-server 异步增量索 引\schema\ 跨行事务 插入数据 Proxy DISE 构建索引,插入Fusion dise-index Proxy Fusion Fusion Fusion Fusion
26. Fusion VS MySQL MySQL 事务 单机 跨行 事务 数据导 出 支持 binlog 协议 SQL 索引 实时 索引 复杂 性能 查询 Join、 较高 条件 组合 等查 询 容量 受限于单 机 压缩比 数据导入 较高 SQL插入 Fusion 单机 支持 SDK 异步 简单 高 跨行 binlog 索引 事务 分布式无 高 上限 FastLoad
27. 演进过程:如何满足业务需求 1 海量存储 Fusion 2 FastLoad 3 NewSQL 4 跨机房多活:解决滴滴业务跨机房容灾问题
28. Native APP 用户层 滴滴多活——业务架构 Web APP Native APP 用户层 Web APP 短连接 接入层 长连接 业务层 业务核心API 订 司分 单 机单 系 系系 … 统 统统 坐 登 标地录 系图系 统 统 MySQL Fusion Redis MQ 数据层 短连接 接入层 长连接 业务层 业务核心API 订 司分 单 机单 系 系系 … 统 统统 坐 登 标地录 系图系 统 统 数据同步 MySQL Fusion Redis MQ 数据层
29. 滴滴多活——Fusion架构 集群A写入 Redis Client Proxy 配置中心 集群B可读 计算路由,异步复制 Redis Client Proxy 配置中心 master DataNode slave DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode
30. Fusion多活方案总结 异步数据复制,忧喜参半。 01 02 自适应感知集群状态变更,切 主、扩容等。 数据可靠同步。 03 04 支持双写,解决秒级冲突。 自动数据补偿。 05
31. 第三章 总结 & 展望
32. 总结——发展历程 滴滴多活建设:支撑跨机房多活、单元化、一键 开城 NewSQL:提供事务、二级索引、schema等能 力 FastLoad:打通离线到在线数据流动,支 持多种业务场景 海量存储:大容量、持久化、容灾、分布 式集群等 滴滴多活建设 NewSQL FastLoad 海量存储
33. 展望——分布式数据库 SQL 实时索引 全量索引 跨机房 DTS 自动扩缩容 容灾&故障恢复 自动负载均衡 分布式事务 多副本强一致

相关幻灯片