• 1. 阿里分布式数据库服务实践沈询
  • 2. 自我介绍花名 沈询 新浪微博@WhisperXD DRDS 目前的负责人 阿里分布式数据层(TDDL)负责人 参与过阿里集团大部分的Oracle到MySQL的迁移工作 在分布式存储领域经验比较丰富
  • 3. AgendaDRDS 简介 DRDS 功能特性 DRDS 原理剖析 DRDS 实战
  • 4. DRDS 简介
  • 5. DRDS简介-起源起源 DRDS 脱胎于 alibaba的cobra 分布式数据库引擎 06年上线使用 在alibaba有近百应用在使用,目前已经开源 DRDS的80%的代码出自cobra proxy Sql解析器 执行流程 配置
  • 6. DRDS简介-起源起源 DRDS吸收了taobao TDDL分布式数据库引擎的大量优秀经验和解决方案 08年上线使用 目前在使用的应用近千个 大量实际应用解决方案支持 分布式join 分布式aggregation (group sum max min) 异步索引构建 Auto sharding ,自动扩容缩容
  • 7. DRDS简介-起源从TDDL到DRDS DRDS专门针对外部用户进行了配置的重新设计 简化了配置操作规范与流程 尽可能使得应用像操作一个数据库一样的操作DRDS 用户的专业化指导 场景广泛 互联网应用 企业内大数据应用 政务类应用 物联网应用
  • 8. DRDS简介-应用场景应用的业务需求单机已经无法满足 一个RDS数据库的最大实例也无法满足用户的需求 容量瓶颈 事务数瓶颈 读取瓶颈
  • 9. DRDS简介-应用场景Scale out(多机水平扩展) 使用廉价数据库阵列来满足用户需求--DRDS 优势 更轻量的使用数据库,未来更换的成本小 一次重构,以后基本再无需担心系统瓶颈 劣势 重构迁移需要付出成本 分布式环境下一些查询会被限制不允许执行 完成相同功能需要比单机扩展付出更多成本
  • 10. DRDS简介-应用场景理想状态 Scale out 与scale up结合 让系统架构具备scale out的能力 尽可能提升单机利用率 但不要过早过度设计
  • 11. DRDS简介-应用场景何时应该选择Sharding方案? 单机存储是否能满足未来1年的要求?使用PC server存储使用共享存储数据库共享存储是否 能满足未来1年要求?兜儿里的钱够么?使用分布式存储(DRDS)是否是是否否
  • 12. DRDS 简介
  • 13. DRDS功能介绍分布式MySQL执行引擎 弹性扩展 小表异步广播
  • 14. DRDS功能介绍-执行引擎高兼容性 MySQL 5.5 的各类复杂查询 Join 嵌套 函数 智能下推 减少网络传输 减少计算量 充分发挥下层存储的全部能力
  • 15. DRDS功能介绍-执行引擎智能下推 表A 分库分表3个 select avg(id) from A Merge avg(id) subQuery Q1:select count(id),sum(id) A_0 Q2:select count(id),sum(id) A_1 Q3:select count(id),sum(id) A_2 avg(id)Query sum(id),count(id) from A_0Query sum(id),count(id) from A_1Query sum(id),count(id) from A_2
  • 16. 智能下推 全表distinct groupby的执行计划 Select id from A order by id limit 1000,10 Merge distinct id , group by id subQuery Q1:select id from A_0 order by id limit 0,1010 Q2:select id from A_1 order by id limit 0,1010 Q2:select id from A_2 order by id limit 0,1010 Distinct id Order by idQuery id from A_0 order by id limit 0,1010Query id from A_1 order by id limit 0,1010Query id from A_2 order by id limit 0,1010DRDS功能介绍-执行引擎
  • 17. 自动扩容、缩容 DRDS功能介绍-弹性扩展新购RDS购买RDS实例加入DRDS集群DRDS集群使用新机器DRDS集群新购RDS迁移数据新购RDSDRDS集群
  • 18. DRDS功能介绍-小表异步广播跨机JOIN 优势: 一致性 空间比较节省 劣势 网络消耗 延迟增加
  • 19. DRDS功能介绍-小表异步广播小表广播JOIN 优势 性能高 延迟低 网络消耗小 劣势 最终一致性 小表更新量不能太巨大
  • 20. DRDS 实践
  • 21. DRDS 实践分布式查询优化 事务的分布式优化 从单机存储到DRDS迁移流程
  • 22. DRDS 实践-分布式查询优化让请求可以水平扩展 原则1:尽可能让所有查询发生在尽可能少的下层存储节点上,最好是只发生在一台上 将跨网络请求尽可能减少 减少并行查询时的机器消耗 原则2:选择的shardingKey要能够让所有存储节点均衡的负载读写请求 系统可以简单加机器来扩展 没有系统瓶颈
  • 23. DRDS 实践-分布式查询优化CASE1: 应该选择哪个列作为切分条件? 按照买家ID的查询(买家查看自己买了哪些商品) bizOrderIDbuyerIDsellerIDcontent001床上用品102路上用品203销售路由器304中文书籍405电脑510ipad620笔记本730铅笔840桌面
  • 24. DRDS 实践-分布式查询优化CASE2: 应该选择哪个列作为切分条件? 按照买家ID的查询(买家查看自己买了哪些商品) 按照卖家ID的查询(卖家查看自己卖了哪些商品) Table_bid buyerID % 4 bizOrderIDbuyerIDsellerIDcontent510ipadbizOrderIDbuyerIDsellerIDcontent001床上用品102路上用品203销售路由器304中文书籍405电脑840桌面bizOrderIDbuyerIDsellerIDcontent620笔记本bizOrderIDbuyerIDsellerIDcontent730铅笔
  • 25. DRDS 实践-分布式查询优化异构复制 Table_bid buyerID % 4 Table_sid sellerID % 4 异构复制bizOrderIDbuyerIDsellerIDcontent510ipadbizOrderIDbuyerIDsellerIDcontent001床上用品102路上用品203销售路由器304中文书籍405电脑840桌面bizOrderIDbuyerIDsellerIDcontent620笔记本bizOrderIDbuyerIDsellerIDcontent730铅笔bizOrderIDbuyerIDsellerIDcontent510ipad620笔记本730铅笔840桌面304中文书籍bizOrderIDbuyerIDsellerIDcontent001床上用品405电脑bizOrderIDbuyerIDsellerIDcontent102路上用品bizOrderIDbuyerIDsellerIDcontent203销售路由器
  • 26. DRDS 实践-分布式查询优化CASE3: 卖家在商城销售的所有商品bizOrderIDbuyerIDsellerIDtypecontent5101ipadbizOrderIDbuyerIDsellerIDtypecontent0010床上用品1021路上用品2030销售路由器3041中文书籍4050电脑8400桌面bizOrderIDbuyerIDsellerIDtypecontent6200笔记本bizOrderIDbuyerIDsellerIDtypecontent7301铅笔Table_bid buyerID % 4type平台名0商城1专卖店
  • 27. DRDS 实践-分布式查询优化小表异步广播 bizOrderIDbuyerIDsellerIDtypecontent5101ipadbizOrderIDbuyerIDsellerIDtypecontent0010床上用品1021路上用品2030销售路由器3041中文书籍4050电脑8400桌面bizOrderIDbuyerIDsellerIDtypecontent6200笔记本bizOrderIDbuyerIDsellerIDtypecontent7301铅笔Table_bid buyerID % 4type平台名0商城1专卖店type平台名0商城1专卖店type平台名0商城1专卖店type平台名0商城1专卖店
  • 28. DRDS 实践-分布式查询优化CASE4: 应该选择哪个列作为切分条件? 最近1周内所有卖家销售的商品量?bizOrderIDbuyerIDsellerIDcontentGMT_MODIFIED001床上用品2014-09-01102路上用品2014-09-01203销售路由器2014-09-01304中文书籍2014-09-01405电脑2014-09-02510ipad2014-09-02620笔记本2014-09-04730铅笔2014-09-03840桌面2014-09-05
  • 29. DRDS 实践-分布式查询优化让请求可以水平扩展 原则1:尽可能让所有查询发生在尽可能少的下层存储节点上,最好是只发生在一台上 将跨网络请求尽可能减少 减少并行查询时的机器消耗 原则2:选择的shardingKey要能够让所有存储节点均衡的负载读写请求 系统可以简单加机器来扩展 没有系统瓶颈
  • 30. DRDS 实践-事务的分布式优化目标: 完整的事务支持 ACID支持 可按需无限扩展 快醒醒~~别做梦了
  • 31. DRDS 实践-事务的分布式优化从强一致到最终一致 李雷家住长江头,梅梅家住长江尾, 日日思君不见君,送只玫瑰表心意。 李雷希望(ACID): 花别丢了,送不到给我退回来(原子性,A) 花能瞬时送到梅梅家(强一致性和强隔离性,C&I) 花别在路上坏了(D)
  • 32. DRDS 实践-事务的分布式优化Rethink “瞬时”? “马上”? 再快也有延迟,光速走过特定距离也需要时间 重新定义一下: 当李雷去检查的时候,要么花在李雷那,要么花在韩梅梅那。
  • 33. DRDS 实践-事务的分布式优化方案1: 李雷做火车到长江尾 亲手交给了梅梅 方案2: 李雷将花交给邮递员 邮递员做飞机把花送给韩梅梅 李雷电话打了一天,韩梅梅都没接 邮递员把花交给韩梅梅 韩梅梅接起电话,告诉李雷收到花
  • 34. DRDS 实践-事务的分布式优化强一致(方案2) 优势: 编程模型简单:不用考虑邮递员运输中的各种并发问题。 劣势 并发性能低:李雷一天都不用干活了。
  • 35. DRDS 实践-事务的分布式优化最终一致 李雷将花交给邮递员 邮递员做飞机把花送给韩梅梅 李雷电话给梅梅,梅梅告诉他还没收到。 李雷去写作业,去打排球,去踢足球~~ 邮递员把花交给韩梅梅 李雷玩回来,打电话给韩梅梅,梅梅告诉他收到了
  • 36. DRDS 实践-事务的分布式优化最终一致 优势 无阻塞情况,并发性能好 劣势 复杂度略高:需要考虑玫瑰已经发出,但对方还没收到的情况应该如何处理。
  • 37. DRDS 实践-事务的分布式优化结合最终一致与强一致 单机可以使用强一致 跨机建议使用最终一致 表A表B事务1事务2事务3事务4事务5事务时间序分布式事务表A表B事务1事务2事务3事务4事务5事务时间序
  • 38. DRDS 实践-DRDS迁移流程目标: 保证业务线上正常运转 平滑过渡 减少运维
  • 39. DRDS 实践-DRDS迁移流程SETP1: 读写在原来的单机数据库 数据通过“愚公数据迁移平台”写入云上DRDS SETP2: 验证云上数据是否正确 验证云上DRDS是否能够很好的应对读流量压力 SETP3: 夜间,停写几分钟 读写切换到DRDS 数据通过“愚公数据迁移平台”写回到云下单机数据库
  • 40. 小结
  • 41. 小结DRDS系统靠谱 DRDS服务靠谱 用吧~