新萄京3522娱乐手机版

新萄京3522娱乐手机版 企业阿里云计算正文

阿里云DRDS详解:跨时代的分布式新萄京3522娱乐手机版库

  随着互联网时代的到来,计算机要管理的新萄京3522娱乐手机版量成指数级别的飞速上涨。而大家完全无法对用户数做出准确的预估,大家的系统所需要支撑的用户数很可能在短短的一个月内突然爆发式的增长几千倍,新萄京3522娱乐手机版也很可能快速的从原来的几百GB飞速上涨到了几百个TB。如果在这爆发的关键时刻,系统不稳定或无法访问,那么对于业务将会是毁灭性的打击。

  伴随着这种对于系统性能、成本以及扩展性的新需要,以Hbase、MongoDB为代表的NoSQL新萄京3522娱乐手机版库和以阿里DRDS、VoltDB、ScaleBase为代表的分布式NewSQL新萄京3522娱乐手机版库如雨后春笋一般的不断涌现出来。DRDS就是其中的翘楚,今天大家一起来揭开它神秘的面纱。

  本篇文章来自alibaba的高级专家王晶昱,他是淘宝分布式新萄京3522娱乐手机版层(TDDL)编辑,曾经参与过淘宝大部分的新萄京3522娱乐手机版库架构升级工作,具备丰富的一线实战经验。本文将会先容DRDS的技术理念、发展历程,技术特性先容等内容。

  DRDS的前世今生

  阿里分布式新萄京3522娱乐手机版库(DRDS)的前身是淘宝分布式新萄京3522娱乐手机版库层(TDDL),他淘宝内部使用最为广泛的一套分布式新萄京3522娱乐手机版库中间件。如果您看过子柳校长写过的《淘宝技术这十年》,也就一定会对里面的 “头都大了”( TDDL) 有一定印象吧。

  从上世纪70年代关系新萄京3522娱乐手机版库创立开始,其实大家在新萄京3522娱乐手机版库上的追求就从未发生过变化:更快的存取新萄京3522娱乐手机版,可以按需扩缩以承载更大的访问量和更大的新萄京3522娱乐手机版量,开发容易,硬件成本低,大家可以把这叫做新萄京3522娱乐手机版库的领域的圣杯。

  为了支撑更大的访问量和新萄京3522娱乐手机版量,大家必然的需要分布式的新萄京3522娱乐手机版库系统,然而分布式系统又必然的会面对强一致性所带来的延迟提高的问题,因为网络通信本身比单机内通信代价高很多,这种通信的代价就会直接增加系统单次提交的延迟。延迟提高会导致锁持有时间变长,使得高冲突条件下分布式事务的性能不升反降(这个具体可以了解一下Amdahl定律),甚至性能距离单机新萄京3522娱乐手机版库都还有明显的差距。

  从上面的说明,大家可以发现,问题的关键并不是分布式事务做不出来,而是做出来了却因为性能太差而没有什么卵用。新萄京3522娱乐手机版库领域的高手们努力了40年,但至今仍然没有人能够很好地解决这个问题,google spanner的开发负责人就经常在他的blog上谈论延迟的问题,相信也是饱受这个问题的困扰。

  面对这个难题,传统的关系新萄京3522娱乐手机版库选择了放弃分布式的方案,因为在上个世纪70~80年代,大家的新萄京3522娱乐手机版库主要被用来处理企业内的各类新萄京3522娱乐手机版,面对的用户不过几千人,而新萄京3522娱乐手机版量最多也就是TB级别。用单台机器来处理事务,用个磁盘阵列处理一下磁盘容量不够的问题,基本上就能解决一切问题了。

  然而,信息化和互联网的浪潮,改变了这一切,大家突然发现,大家服务的对象发生了根本性变化,从原来的几千人,变成了现在的几亿人,新萄京3522娱乐手机版量也从TB级别到了PB级别甚至更多。存在单点的单机系统无论如何努力,都会面对系统处理能力的天花板。原来的这条路,看起来是走不下去了,大家必须想办法换一条路来走。

  然而,分布式新萄京3522娱乐手机版库所面对的强一致性难题却像一座高山,人们努力了无数个日日夜夜,但能翻越这座山的日子看来却仍然遥遥无期。

  于是,有一群人觉得,这件事看来不怎么靠谱,那彻底绕开这个问题是不是个更好的选择? 大家发现确实有那么一些场景是不需要强一致事务的,甚至连SQL都可以不要,例如日志流水的记录与分析这类场景就很明显。而去掉了事务和SQL,系统做扩展性和性能就更容易做起来,这就是NoSQL系统的起源。

  虽然NoSQL解决了性能和扩展性问题,但是这种绕开问题的方法给应用带来了很多的困扰,系统的开发成本也有很大的提升。这时候就有另外一群人,他们觉得用户需要SQL,觉得用户也需要事务,问题的关键在于大家要努力的往圣杯的方向不断地前进。在保持系统的扩展性和性能的前提下,付出尽可能小的代价来满足业务对新萄京3522娱乐手机版库的需要。这就是NewSQL这个理念的由来。

  DRDS也是一个NewSQL的系统,他与ScaleBase、VoltDB等系统类似,都希翼能够找到一条又能保持系统的高扩展性和高性能,又能尽可能的保持传统新萄京3522娱乐手机版库的ACID事务和SQL特性的分布式新萄京3522娱乐手机版库系统。

  DRDS 发展历程

  在一开始,TDDL的主要功能就是做新萄京3522娱乐手机版库切分的,一个或一组SQL请求提交到TDDL,TDDL进行规则运算后得知SQL应该被分发到哪个机器,直接将SQL转发到对应机器即可(如下图)。

  开始的时候,这种简单的路由策略是能够满足用户的需要的,大家开始的那些应用就是通过这样非常简单的方式就完成了他所有的应用请求。大家也认为,这种方案简单可靠,已经足够好用了。

  然而,当大家服务的应用从十几个增长到几百个的时候,大量的中小应用加入,大家纷纷表示,原来的方案限制太大,很多应用其实只是希翼做个读写分离,希翼能有更好的SQL兼容性。

  于是,大家做了第一次重大升级,在这次升级里,大家提出了一个重要的概念就是三层架构,Matrix对应新萄京3522娱乐手机版库切分场景,对SQL有一定限制,Group对应读写分离和高可用场景,对SQL几乎没有限制。如图所示:

  这种做法立即得到了大家的认可,TDDL所提供的读写分离、分库分表等核心功能也成为了阿里集团内新萄京3522娱乐手机版库领域的标配组件,在阿里的几乎所有应用上都有应用。最为难得的是,这些功能从上线后,到现在已经经历了多年双11的严酷考验,从未出现过严重故障(p0,p1级别故障属于严重故障)。新萄京3522娱乐手机版库体系作为整个应用系统的重中之重,能做到这件事真的是非常的不容易。

  随着核心功能的稳定,自2010年开始,大家的全部精力就开始关注于TDDL的后端运维系统的完善与改进性工作。在DBA团队的给力配合下,围绕着TDDL,大家成功的做到了在线新萄京3522娱乐手机版动态扩缩、异步索引等关键特征,同时也比较成功的构建了一整套的分布式新萄京3522娱乐手机版库服务管控体系,用户可以基本上完全自助的完成整套新萄京3522娱乐手机版库环境的搭建与初始化工作。

  大概是在2012年的时候,大家在阿里云团队的支撑下,开始尝试将TDDL这套体系输出到阿里云上,也有了个新的名字:阿里分布式新萄京3522娱乐手机版库服务(DRDS),希翼能够用大家的技术服务好更多的人。

  不过当大家满怀自信的把自己的App拿到云上的时候,却发现大家的App距离用户的要求差距很大。在内部因为有DBA的同学们帮助进行SQL review,所以SQL的复杂度都是可控的。然而,到了云上,大家看了各种渠道提过来的兼容性需求。经常是不自觉的发出这样的感叹:“啊?原来这种语法MySQL也是可以支撑的?” T_T …

  于是,大家又进行了架构升级,这次是以兼容性为核心目标的系统升级工作,希翼能够在分布式场景下支撑各类复杂的SQL,同时也将阿里这么多年来在分布式事务上的积累也都带到了DRDS里面。

  这次架构升级,大家的投入史无前例,用了三年多才将整个系统落地完成。大家先在内部以大家自己的业务作为首批用户上线,经过了内部几百个应用的严酷考验以后,大家才敢拿到云上,给到大家的最终用户使用。

  目前,大家正在将TDDL中更多的积累输出到云上,同时也在努力的优化大家的用户界面。PS:其实用户界面优化对大家这种专注于高性能后端技术的团队来说,才是最大的技术挑战啊,连我也去学了AngularJS参与了用户UI编写啊。

  DRDS 主要功能先容

  发展历史看完了,下面就由我来先容一下目前大家已经输出到云上的主要功能吧。

  分布式SQL实行引擎

  分布式SQL引擎主要的目的就是实现与单机新萄京3522娱乐手机版库SQL引擎的完全兼容。目前大家的SQL引擎能够做到与MySQL的SQL引擎全兼容,包括各类join和各类复杂函数等。他主要包含SQL解析、优化、实行和合并四个流程,如下图绿色部分:

?

  虽然SQL是兼容的,但是分布式SQL实行算法与单机SQL的实行算法却完全不同,原因也很简单,网络通信的延迟比单机内通信延迟的大得多。举个例子说明一下,大家要从一张纸A上抄写全部内容到另外一张纸B上,单机系统就好比两张纸都在同一个办公室里,而分布式新萄京3522娱乐手机版库则就像是一张纸在北京,一张纸在杭州。

  自然的,如果两张纸在同一个办公室,因为传输距离近,逐行抄写的效率是可以接受的。而如果距离是北京到杭州,用逐行抄写的方式就立即显得代价太高了,如果千辛万苦的飞去杭州,却只能写下一行新萄京3522娱乐手机版,那这么抄写明显的效率太低了~在这种情况下,还是把纸A上的信息拍个照片,把这张照片带到杭州再去抄写明显更简单一些。这就是分布式新萄京3522娱乐手机版库特别强调吞吐调优的原因,只要是涉及到跨机的所有查询,都必须尽可能的积攒一批后一起发送,以减少系统延迟提高带来的不良影响。

  按需新萄京3522娱乐手机版库集群平滑扩缩

  DRDS允许应用按需将新的单机存储加入或移出集群,DRDS则能够保证应用在迁移流程中实现不停机扩容缩容。

  在内部的新萄京3522娱乐手机版库使用实践中,这个功能的一个最重要应用场景就是双11了。在双11之前,大家会将大批的机器加入到大家的新萄京3522娱乐手机版库集群中,抗过了双11,这批机器就会下线。

  当DRDS来到云上,大家发现双11其实不仅仅只会影响阿里内部的系统。在下游的各类电商辅助性系统其实也会面对巨大压力。在双11前5天,网聚宝的熊总就找到我说,担心撑不过双11的流量,怕系统挂。于是大家就给他先容了这个自动扩容的功能怎么用,他买了一个月的新萄京3522娱乐手机版库,挂接在DRDS上。新萄京3522娱乐手机版库能力立即翻倍,轻松抗过了双11,也算是我印象比较深刻的一个案例了。

  因为大家完全无法预测在什么时间点系统会有爆发性的增长,而如果在这时候系统因为技术原因不能使用,那么就会给整个业务带来毁灭性的影响,风口一旦错过,那就追悔莫及了。我想这就是云计算特别强调可扩展能力的原因吧。

  小表广播

  小表广播也是大家在分布式新萄京3522娱乐手机版库领域内最常用的工具之一,他的核心目的其实都是一个 – 尽可能让查询只发生在单机

  让大家用一个例子来说明,小表广播的一般使用场景吧:

  上面这是两张表,如果我想知道买家id等于0的用户在商城里面买了哪些商品的话,大家一般会先将这两个表join起来,然后再用 where 平台名=”商城” and buyerID = 0 找到符合要求的新萄京3522娱乐手机版。然而这种join的方式,会导致大量的针对左表的网络IO。如果要取出的新萄京3522娱乐手机版量比较大,系统的延迟会有明显的上升。

  这时候,为了提升性能,大家就必须要减少跨机join的网络代价。大家比较推荐应用做如下处理,将左表复制到右表的每一个库上。这样,join操作就由分布式join一下变回到本地join,系统的性能就有很大的提升了。

  分布式事务套件

  在alibaba的业务体系中存在着非常多的需要事务类的场景,下单减库存,账务,都是事务场景最集中的部分。

  而大家处理事务的方法却和传统应用处理事务的方案不大一样,大家非常强调事务的最终一致性和异步化。利用这种方式,能够极大的降低分布式系统中锁持有的时间,从而极大地提升系统的性能。

  这种处理机制是大家分布式事务能够以极低成本大量运行的最核心法门。在DRDS平台内,大家将这些方案产品化为了DRDS的分布式事务解决套件。

  利用他们,能够让你以比较低的成本,实现低延迟,高吞吐的分布式事务场景。

  DRDS的未来

  阿里分布式新萄京3522娱乐手机版库服务DRDS上线至今,大家对这款产品的热情超出了大家的预期,短短的半年内已经有几千个申请。

  尽管还在公测期,但是大家就已经把关系到身家性命的宝贵新萄京3522娱乐手机版业务放到了DRDS上,我能够感受到这份沉甸甸的信赖,也不想辜负这份信赖。

  经过阿里内部几千个应用的不断历练,DRDS已经积累出了一套强大的分布式SQL实行引擎和和一整套分布式事务套件。

  我也相信,这些积累能够让用户在基本保持单机新萄京3522娱乐手机版库的使用习惯的前提下,享受到分布式新萄京3522娱乐手机版库高性能可扩展的好处。

  在平时的DRDS支撑过程中,我面对最多的问题就是,DRDS能不能够在不改变任何原有业务逻辑和代码的前提下,实现可自由伸缩和扩展呢?十分可惜的是,关系新萄京3522娱乐手机版库发展至今,还没有找到既能保留传统新萄京3522娱乐手机版库一切特性,又能实现高性能可扩展新萄京3522娱乐手机版库的方法。

  然而,虽不能至,吾心向往之!大家会以“可扩展,高性能”为产品核心,坚定地走在追寻圣杯的路上,并坚信最终大家一定能够找寻到他神圣的所在。

  顶0踩0
分享:
延伸阅读
    贵州

    贵州大新萄京3522娱乐手机版产业政策

    贵州大新萄京3522娱乐手机版产业动态

    贵州大新萄京3522娱乐手机版企业

    更多
    企业
    更多
    XML 地图 | Sitemap 地图