沈询 - 云上的分布式数据库

铎慕卉

2018/05/13 发布于 技术 分类

自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、ChinaUnix两大技术社区,已经连续举办了五届中国数据库技术大会,每届大会与会规模超千人,大会云集了国内水平最高的数据架构师、数据库管理和运维工程师、数据库开发工程师、研发总监和IT经理等技术人群,是目前国内最受欢迎、人气最高的的数据库技术交流盛会。

文字内容
1. 云上的分布式数据库 DRDS原理与实践
2. 自我介绍 •  花名 沈询 •  新浪微博: 搜 淘宝沈询 •  阿里分布式数据库(DRDS/TDDL)、阿里分布 式消息服务(ONS)负责人 •  参与过阿里集团大部分的Oracle到MySQL的 迁移工作(商品、用户、交易、评价 etc..) •  在分布式存储领域经验比较丰富
3. 提纲 •  DRDS 简介 •  DRDS 云上的实践 •  DRDS 功能特性与原理 •  小结
4. DRDS 简介
5. DRDS简介 •  DRDS是什么 –  分布式数据库整体解决方案 •  DRDS能做到什么 –  尽可能保留数据库的优势(RDBMS--) •  MySQL兼容 •  复杂SQL解决方案、分布式事务解决方案 –  线性扩缩(RDBMS++) •  读写分离 •  动态伸缩(解决读写瓶颈) •  业务在线正常运行
6. DRDS简介 •  DRDS的应用场景 –  您是DRDS的用户 •  您的企业有高速增长预期 •  您的业务的目标客户是70亿人 •  您希望您的目标客户有优质的软件体验 •  您希望寻找高容错的数据库解决方案 •  您觉得NoSQL太麻烦 –  您不是DRDS的用户 •  您的企业已经不再增长 •  您服务的目标客户在一千人以下 •  您认为您的IT系统挂掉稀松平常,影响不大
7. DRDS简介 •  历史悠久 –  Cobar 的协议层(from 08年) –  TDDL 的执行引擎和运维生态(from 08年) •  为云打造 –  更好的自主运维体验 –  更强大的功能与兼容性 –  与世界最新潮流并驾齐驱
8. DRDS 云上实践
9. DRDS云上实践 •  内部使用情况 –  内部几千应用使用 –  至今6年,多次双11 –  无p1故障 •  2014-12-4 正式公测 –  五个月时间内 –  x000+公测申请 –  正式运行的活跃应用超过x00 •  保险(众安保险,etc..) •  互联网应用(为知笔记,虾米,华甫达,etc..) •  通信(阿里通信,etc..) •  金融(xx贷,etc..) •  医疗健康(阿里医药,etc..) •  GIS(高德,etc..) •  Etc ….
10. DRDS云上实践 •  分布式数据库核心功能产品化 –  动态读写分离 –  小表复制 –  弹性扩容缩容 –  监控、告警、性能调优
11. DRDS云上实践 •  易用性功能补强 –  MySQL协议兼容性提升 –  GUI工具兼容性提升 –  复杂SQL和聚合兼容性 •  智能下推 •  分布式Join •  系统稳定性提升 –  网络结构大调整,解决Cobar不稳定问题 –  Cobar读写分离数据不一致问题改进
12. DRDS云上实践 •  外部故障 –  4月x日 –  运维系统变更导致P3 影响了10+客户不能正常 登陆 •  后续action –  百倍赔付 –  管理工具是最高优先级,尽可能减少变更 –  鸡蛋放在多个篮子里,集群拆分力度进一步划 小
13. DRDS 功能特性与原理
14. DRDS 功能特性与原理 •  社区版提供 –  分库支持(cobar) –  读写分离(TDDL) •  DRDS云数据库版本 –  在线动态读写分离 –  分布式MySQL执行引擎 –  小表异步广播 –  弹性扩展 –  事务方案套件
15. 在线动态读写分离 •  按需“动态”读写分离 MySQL  Client MySQL  Client MySQL  Client DRDS   Cluster 写请求 读请求 写库 异步复制 读库
16. DRDS功能介绍-执行引擎 •  高兼容分布式SQL引擎 –  MySQL 5.5 的各类复杂查询 •  Join •  嵌套 •  函数 •  智能下推 –  减少网络传输 –  减少计算量 –  充分发挥下层存储的全部能力
17. DRDS功能介绍-执行引擎 •  智能下推 –  表A 分库分表3个 –  select avg(id) from A avg(id) 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                   Query   sum(id),count (id)  from  A_0 Query   sum(id),count (id)  from  A_1 Query   sum(id),count (id)  from  A_2
18. DRDS功能介绍-执行引擎 •  智能下推 –  全表distinct groupby的执行计划 –  Select distinct(id) from A order by id limit 1000,10 DisEnct  id   Group  by  id   Limit  1000,10 Query  id  from   A_0  order  by   id  limit  0,1010 Query  id  from   A_1  order  by   id  limit  0,1010 Merge              dis0nct  id  ,  group  by  id,Limit  1000,10 subQuery                  Q1:select  id  from  A_0  order  by  id  limit  0,1010 Query  id  from                 Q2:select'>Q2:select  id  from  A_1  order  by  id  limit  0,1010   A_2  order  b y                  Q2:select'>Q2:select  id  from  A_2  order  by  id  limit  0,1010               id  limit  0,1010
19. DRDS功能介绍-小表异步广播 •  跨机JOIN – 优势: •  一致性 •  空间比较节省 – 劣势 •  网络消耗 •  延迟增加
20. DRDS功能介绍-小表异步广播 •  小表广播JOIN –  优势 •  性能高 •  延迟低 •  网络消耗小 – 劣势 •  最终一致性 •  小表更新量不能太巨大
21. DRDS 实践-分布式查询优化 •  让请求可以水平扩展 –  原则1:选择的切分条件要能够让所有存储节点 均衡的负载读写请求 •  系统可以简单加机器来扩展 •  没有系统瓶颈 –  原则2:尽可能的让查询发生在一台物理数据库 上,查询尽可能带上切分条件 •  将跨网络请求尽可能减少 •  减少并行查询时的机器消耗
22. DRDS 实践-分布式查询优化 •  CASE1: –  应该选择哪个列作为切分条件? •  按照买家ID的查询(买家查看自己买了哪些商品) bizOrderID 0 1 2 3 4 5 6 7 8 buyerID 0 0 0 0 0 1 2 3 4 sellerID 1 2 3 4 5 0 0 0 0 content 床上用品 路上用品 销售路由器 中文书籍 电脑 ipad 笔记本 铅笔 桌面
23. DRDS 实践-分布式查询优化 •  CASE2: –  应该选择哪个列作 为切分条件? •  按照买家ID的查询 (买家查看自己买了 哪些商品) •  按照卖家ID的查询 (卖家查看自己卖了 哪些商品) bizOrderID 0 1 2 3 4 8 bizOrderID 5 bizOrderID 6 bizOrderID 7   Table_bid       buyerID  %  4     buye0rID   sellerID 1 0   2 0   3 0   4 0 4   5 0   buye1rID   sellerID 0   buyerID sellerID 2   0   buyerID   sellerID 3 0     content 床上用品 路上用品 销售路由 器 中文书籍 电脑 桌面 content ipad content 笔记本 content 铅笔
24. DRDS 实践-分布式查询优化 •  异构复制   Table_bid       buyerID  %  4   bizOrderID 0 buye0rID   sellerID 1 content 床上用品 1 0   2 路上用品 2 0   3 销售路由 器 3 0   4 中文书籍 4 0   5 电脑 8 4   0 桌面 bizOrderID buyerID   sellerID content 5 1   0 ipad bizOrderID buyerID   sellerID content 6 2   0 笔记本   bizOrderID buyerID sellerID content 7 3   0 铅笔     异构 复制   Table_sid   sellerID  %  4   bizOrderID buyerID   sellerID content 5 1   0 ipad 6 2 0 笔记本 7 3   0 铅笔 8 4   0 桌面 3 0   4 中文书籍 bizOrderID buyerID   sellerID content 0 0   1 床上用品 4 0 5 电脑   bizOrderID buyerID   sellerID content 1 0   2 路上用品   bizOrderID buyerID sellerID content 2   0   3 销售路由 器  
25. DRDS 实践-分布式查询优化 •  CASE3: –  卖家在商城销售的 所有商品 type 0 1 平台名 商城 专卖店 Tab l  e_bid       buye r   ID  %  4   bizOrderID buyerID 0 0 se  ll1erID type 0 1 0   2 1 content 床上用品 路上用品 2 0   3 0 销售路由器 3 0   4 1 中文书籍 4 0   5 0 电脑 8 4 0 0 桌面   bizOrderID buyerID se  llerID type 5 1 0 1   content ipad bizOrderID buyerID s e   llerID type 6 2   0 0 content 笔记本 bizOrderID 7   buyerID sellerID type content 3   0 1 铅笔  
26. DRDS 实践-分布式查询优化 •  小表异步广播 type 0 1 平台名 商城 专卖店 type 0 1 type 0 1 type 0 1 平台名 商城 专卖店 平台名 商城 专卖店 平台名 商城 专卖店 Table_bid         buyerID  %  4   bizOrderID   buyerID sellerID type content 0 1   0 0 2   0 3   0 4   0 1 0 床上用品 2 1 路上用品 3 0 销售路由器 4 1 中文书籍 5 0 电脑 8   4 0 0 桌面   bizOrderID   buyerID sellerID type 5   1 0 1 content ipad   bizOrderID   buyerID sellerID type 6   2 0 0 content 笔记本   bizOrderID   buyerID sellerID type content 7 3 0 1 铅笔
27. DRDS 实践-分布式查询优化 •  CASE4: –  应该选择哪个列作为切分条件? •  最近1周内所有卖家销售的商品量? bizOrderID 0 1 2 3 4 5 6 7 8 buyerID 0 0 0 0 0 1 2 3 4 sellerID 1 2 3 4 5 0 0 0 0 content 床上用品 路上用品 销售路由器 中文书籍 电脑 ipad 笔记本 铅笔 桌面 GMT_MODIFIED 2014-09-01 2014-09-01 2014-09-01 2014-09-01 2014-09-02 2014-09-02 2014-09-04 2014-09-03 2014-09-05
28. DRDS功能介绍-弹性扩展 •  自动扩容、缩容 购买RDS实 例 新购 RDS DRDS集 群 加入DRDS 集群 DRDS集 新购 群 RDS 迁移数据 使用新机器 新购 RDS DRDS集 群
29. DRDS 实践-事务的分布式优化 •  目标: –  完整的事务支持 •  像传统单机事务一样的操作方式 •  可按需无限扩展 •  快醒醒~~别做梦了 •  容易理解的模型往往性能都不好,性能好 的模型往往不容易理解
30. DRDS实践 – 事务 的分布式优化 事务单元 事 务 时 间 序 Bob账户 Smith账户
31. DRDS实践 – 事务 的分布式优化 事 务 时 间 序 Bob账户 Smith账户
32. DRDS实践 – 事务 的分布式优化 事务单元 Bob账户 异步事务单元 事 务 时 间 序 Smith账户
33. DRDS实践 – 事务 的分布式优化 事务5 事务4 事务3 事 务 事务1 事务2 时 间 序 Bob账户 Smith账户 异步事务 异步5 事务4 事务3 事务1 Bob账户 事务5 事 异步3 务 时 异步3 间 事务2 序 Smith账户