阿里分布式数据库服务实践


沈询: 阿里巴巴资深技术专家,08年加入阿里巴巴,一直从事阿里分布式数据层方面的研发工作,参与了公司大部分的去IOE工作,具备较多实操经验。目前主要负责淘宝分布式数据层(TDDL),阿里分布式数据库服务(DRDS),阿里分布式消息服务(Notify,MetaQ)的开发和架构设计工作。

经过近一年的运营,阿里巴巴的分布式数据库(DRDS)已经协助电商,电信,银行,政府等多种类型的系统进行过业务分布式改造,在系统实施的过程中,我们碰到和解决了哪些问题? 他们是怎么解决的?背后的思考是什么?未来在何方? 以下来分享下精彩内容。

DRDS简介

起源

DRDS 脱胎于
alibaba的cobra 分布式数据库引擎06年上线使用,在alibaba有近百应用在使用,目前已经开源,DRDS的80%的代码出自cobra proxySql解析器,执行流程配置)。

DRDS吸收了taobao TDDL分布式数据库引擎的大量优秀经验和解决方案,08年上线使用,目前在使用的应用近千个,大量实际应用解决方案支持分布式join,支持分布式aggregation (group sum max min),支持异步索引构建,支持Auto sharding ,自动扩容缩容。

从TDDL到DRDS,

DRDS专门针对外部用户进行了配置的重新设计:简化了配置操作规范与流程;尽可能使得应用像操作一个数据库一样的操作DRDS;用户的专业化指导。

场景广泛:互联网应用,企业内大数据应用,政务类应用,物联网应用。

应用场景

应用的业务需求单机已经无法满足,一个RDS数据库的最大实例也无法满足用户的需求,可能遇到容量瓶颈、事务数瓶颈、读取瓶颈,我们就可以考虑使用分布式数据库了。

Scale out(多机水平扩展),使用廉价数据库阵列来满足用户需求—DRDS。

优势:更轻量的使用数据库,未来更换的成本小;一次重构,以后基本再无需担心系统瓶颈。劣势:重构迁移需要付出成本;分布式环境下一些查询会被限制不允许执行;完成相同功能需要比单机扩展付出更多成本。

 

 

                                             图1

理想状态就是Scale out 与scale up结合。如图1所示,让系统架构具备scale out的能力,尽可能提升单机利用率,但不要过早过度设计。

 

                                        图2

何时应该选择Sharding方案?图2中的概要图给出了分析。

DRDS功能介绍

分布式MySQL执行引擎

具有非常高的兼容性,MySQL 5.5 的各类复杂查询都能做到,包括复杂的join,复杂的嵌套,复杂的函数。降低了迁移时候的成本。

智能下推的功能,减少网络传输,减少计算量,充分发挥下层存储的全部能力。

智能下推有两个典型的例子,图3为表A 分库分表3个的例子,图4为全表distinct groupby的执行计划的例子。

 

 

   图3

 图4

 

弹性扩展

  自动扩容、缩容是另外一个重要功能。如图5,DRDS可以做到原来一个库,下一步变成两个库,依然可以扩,对一些特殊需求也可以实现自动化后台迁移,自动扩容缩容。

  图5

小表异步广播

  图6

  如图6的跨机join的优势是一致性,空间比较节省。劣势是网络消耗和延迟增加。

  图7

图7小表广播join的优势是性能高,延迟低,网络消耗小,劣势是最终一致性,小表更新量不能太巨大。

DRDS实践

分布式查询优化

最终的目标是让所有请求可以水平扩展,要想达到这个目的,有两个基本的原则:1尽可能让所有查询发生在尽可能少的下层存储节点上,最好是只发生在一台上。将跨网络请求尽可能减少,减少并行查询时的机器消耗。2选择的shardingKey要能够让所有存储节点均衡的负载读写请求。系统可以简单加机器来扩展,没有系统瓶颈。案例1如图8所示是一个订单的场景,应该选择哪个列作为切分条件?按照买家ID的查询(买家查看自己买了哪些商品)。

 

    图8

案例2如图9所示的过程就是数据的切分,应该选择哪个列作为切分条件?按照买家ID的查询(买家查看自己买了哪些商品);按照卖家ID的查询(卖家查看自己卖了哪些商品。

  图9

图10表达了异构复制,数据通过后台自动化逻辑复制过去,建立一个新的全表索引。

 图10

案例三如图11所示,在原来表里加了type,关联两个表,但这两个表不在一台机器上,遇到这种场景就需要如图12所示的小表异步广播。

  图11

  图12

 

事务的分布式优化

  事务的分布式优化的目标是完整的事务支持,既要支持ACID,又可按需无限拓展。然而这种模型是不可能实现的。

那么我们该怎么办呢?优化事务的最重要的手段就是从强一致到最终一致。把这种情况拟人化场景为:李雷家住长江头,梅梅家住长江尾,日日思君不见君,送只玫瑰表心意。李雷希望(ACID):花别丢了,送不到给我退回来(原子性,A);花能瞬时送到梅梅家(强一致性和强隔离性,C&I);花别在路上坏了(D)。其中瞬时就是当李雷去检查的时候,要么花在李雷那,要么花在韩梅梅那。

实现方案一:李雷做火车到长江尾,亲手交给了梅梅。方案二:李雷将花交给邮递员,邮递员做飞机把花送给韩梅梅,李雷电话打了一天,韩梅梅都没接,邮递员把花交给韩梅梅,韩梅梅接起电话,告诉李雷收到花。方案二就是强一致,它的优势是编程模型简单,不用考虑邮递员运输中的各种并发问题。它的劣势是并发性能低,李雷一天都不用干活了。

真的遇到这种情况时,我们该采用最终一致进行优化,上述情景大体不变,更改为李雷打电话韩梅梅告诉他还没收到,李雷就去做了其他事情。最终一致的优势是无阻塞情况,并发性能好。劣势是复杂度略高,需要考虑玫瑰已经发出,但对方还没收到的情况应该如何处理。

  图13展现了单机和分布式事务情况。所以我们建议结合最终一致和强一致,单机可以使用强一致,跨机建议使用最终一致。

  图13

 

 

从单机存储到DRDS迁移流程

迁移的目标是:保证业务线上正常运转;平滑过渡;减少运维。

迁移的步骤有三步:SETP1:读写在原来的单机数据库;数据通过“愚公数据迁移平台”写入云上DRDS。SETP2:验证云上数据是否正确;验证云上DRDS是否能够很好的应对读流量压力。SETP3:夜间,停写几分钟;读写切换到DRDS;数据通过“愚公数据迁移平台”写回到云下单机数据库。

                                                                                              PPT下载地址:http://club.alibabatech.org/resource_detail.htm?topicId=156

 

时间: 2024-08-28 18:25:22

阿里分布式数据库服务实践的相关文章

云时代的分布式数据库:阿里分布式数据库服务DRDS

摘要:伴随着系统性能.成本及扩展性的新时代需要,以HBase.MongoDB为代表的NoSQL数据库和以阿里DRDS.VoltDB.ScaleBase为代表的分布式NewSQL数据库如雨后春笋般不断涌现出来.本文详细介绍了阿里分布式数据库服务DRDS. 随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估.我们的系统所需要支持的用户数,很可能在短短的一个月内突然爆发式地增长几千倍,数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB.如果在这爆

云时代的分布式数据库:阿里分布式数据库服务 DRDS

随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估.我们的系统所需要支持的用户数,很可能在短短 的一个月内突然爆发式地增长几千倍,数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB.如果在这爆发的关键时刻,系统不稳定或无法访问,那么对 于业务将会是毁灭性的打击. 伴随着这种对于系统性能.成本以及扩展性的新需要,以HBase.MongoDB为代表的NoSQL数据库和以阿里DRDS.VoltDB.ScaleBase为代表的分布式NewSQL数据

十问够快网络 答疑阿里云平台实践之路

本文讲的是十问够快网络 答疑阿里云平台实践之路,云计算已经被众多的厂商视为一块肥肉,纷纷下血本投入到这个行业中.国内比较大的云平台服务商包括阿里云.盛大云.百度云.新浪云和华为云.他们都在推出自己产品和服务,谋求在云计算时代引领行业发展. 当然任何的产品和服务都离不开用户的支持,作为阿里云平台的核心用户之一,够快网络是阿里云平台的一个实践者,今天我们IT168有幸采访到了够快网络的技术负责人蒋烁淼,他从用户的角度分析了阿里云平台的技术特点以及使用体验,给用户选择云平台提供了很好的参考. ▲够快网

阿里巴巴分布式数据库服务DRDS研发历程

淘宝TDDL研发历史和背景 淘宝DRDS/TDDL是阿里巴巴自主研发的分布式数据库服务.DRDS脱胎于阿里巴巴开源的Cobar分布式数据库引擎,吸收了Cobar核心的Cobar-Proxy源码,实现了一套独立的类似MySQL-Proxy协议的解析端,能够对传入的SQL进行解析和处理,对应用程序屏蔽各种复杂的底层DB拓扑结构,获得单机数据库一样的使用体验,同时借鉴了淘宝TDDL丰富的分布式数据库实践经验,实现了对分布式Join支持,SUM.MAX.COUNT.AVG等聚合函数支持以及排序等函数支持

HIVE在腾讯分布式数据仓库实践分享

HIVE在腾讯分布式数据仓库实践分享 赵伟 2012-12-1 一.腾讯分布式数据仓库介绍 二.HIVE在TDW中的实践 三.TDW HIVE接下来的工作 temp_12120611487766.pdf

分布式系统测试在阿里云的实践

分布式系统的测试是一个比较大的话题,在这里,我们仅用几个阿里云飞天分布式系统测试中比较有特点的实践方式来阐述一下我们对分布式系统测试的理解,希望对大家有所帮助. 1. 阿里云的分布式系统 飞天是阿里云独立开发的大规模分布式计算与存储系统,兼有分布式存储和分布式计算的多重功能.基于飞天大规模分布式系统,我们开发了弹性计算,海量邮箱服务,Key-Value存储引擎,结构化数据存储引擎和海量数据处理服务等一系列的上层服务,并且基于这些上层服务,我们运营了了Open Table Service和Open

大数据时代的结构化存储—HBase在阿里的应用实践

前言 时间回到2011年,Hadoop作为新生事物,在阿里巴巴已经玩得风生水起,上千台规模的"云梯"是当时国内名声显赫的计算平台. 这一年,Hadoop的好兄弟HBase由毕玄大师带入淘宝,开启了它的阿里之旅.从最初的淘宝历史交易记录,到去年的支付宝消费记录存储在线历史存储统一:从蚂蚁安全风控的多年存储演进,到HBase.TT.Galaxy的大数据激情迭代:HBase在阿里经历过年轻的苦涩,释放过青春的活力,也付出过成长的代价.几代人的不懈努力下,五年陈的HBase开始表现出更成熟.更

分布式数据库服务(DRDS)自主平滑扩容功能开放了

自12月DRDS上线公测至今,3个多月内,我们已经接到了上千个用户的公测申请,全体项目组成员都能感受到大家对于这款分布式数据库的热情,在此谢谢大家.   在这2个月内,我们努力将TDDL在阿里内部一些优秀的功能性组件以产品化的形式输出到阿里云上.在TDDL众多的优秀组件中,数据库平滑扩容组件自然是这款产品的核心功能之一,DRDS(TDDL)在内部服务的这六年中,平滑扩容组件曾成功的支持过淘宝.天猫.支付宝等多个BU大量核心系统的几百次扩容需求,可谓久经考验,是我们在历年双十一中必用的必杀绝技之一

探秘阿里分布式任务调度服务SchedulerX

7月中上旬,阿里云企业级分布式应用服务EDAS低调上线分布式任务调度服务,目前处于免费公测阶段.SchedulerX--是该服务在阿里内部的产品名字,顾名思义,比调度做的更多.随着公测的开启,阿里巴巴内部又一款核心中间件产品浮出水面. SchedulerX是阿里巴巴集团中间件团队开发的一款高性能.分布式任务调度产品,在阿里内部有着广泛的使用,经过集团内上千个业务应用历经多年打磨而成.截止2016年6月,每天平稳运行集团内几十万个任务,完成每天几亿次的任务调度.在未来SchedulerX将支持更多