=====================================================
随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估。我们的系统所需要支持的用户数,很可能在短短的一个月内突然爆发式地增长几千倍,数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB。如果在这爆发的关键时刻,系统不稳定或无法访问,那么对于业务将会是毁灭性的打击。
伴随着这种对于系统性能、成本以及扩展性的新需要,以HBase、MongoDB为代表的NoSQL数据库和以阿里DRDS、VoltDB、ScaleBase为代表的分布式NewSQL数据库如雨后春笋般不断涌现出来。
本文将会介绍阿里DRDS的技术理念、发展历程、技术特性等内容。
DRDS设计理念
从20世纪70年代关系数据库创立开始,其实大家在数据库上的追求就从未发生过变化:更快的存取数据,可以按需扩缩以承载更大的访问量和更大的数据量,开发容易,硬件成本低,我们可以把这叫做数据库领域的圣杯。
为了支撑更大的访问量和数据量,我们必然需要分布式数据库系统,然而分布式系统又必然会面对强一致性所带来的延迟提高的问题,因为网络通信本身比单机内通信代价高很多,这种通信的代价就会直接增加系统单次提交的延迟。延迟提高会导致数据库锁持有时间变长,使得高冲突条件下分布式事务的性能不升反降(这个具体可以了解一下Amdahl定律),甚至性能距离单机数据库都还有明显的差距。
从上面的说明,我们可以发现,问题的关键并不是分布式事务做不出来,而是做出来了却因为性能太差而没有什么卵用。数据库领域的高手们努力了40年,但至今仍然没有人能够很好地解决这个问题,Google Spanner的开发负责人就经常在他的Blog上谈论延迟的问题,相信也是饱受这个问题的困扰。
面对这个难题,传统的关系数据库选择了放弃分布式的方案,因为在20世纪70~80年代,我们的数据库主要被用来处理企业内的各类数据,面对的用户不过几千人,而数据量最多也就是TB级别。用单台机器来处理事务,用个磁盘阵列处理一下磁盘容量不够的问题,基本上就能解决一切问题了。
然而,信息化和互联网的浪潮改变了这一切,我们突然发现,我们服务的对象发生了根本性变化,从原来的几千人,变成了现在的几亿人,数据量也从TB级别到了PB级别甚至更多。存在单点的单机系统无论如何努力,都会面对系统处理能力的天花板。原来的这条路,看起来是走不下去了,我们必须想办法换一条路来走。
可是,分布式数据库所面对的强一致性难题却像一座高山,人们努力了无数个日日夜夜,但能翻越这座山的日子看来仍然遥遥无期。
于是,有一群人认为,强一致性这件事看来不怎么靠谱,那彻底绕开这个问题是不是个更好的选择?他们发现确实有那么一些场景是不需要强一致事务的,甚至连SQL都可以不要,最典型的就是日志流水的记录与分析这类场景。而去掉了事务和SQL,接口简单了,性能就更容易得到提升,扩展性也更容易实现,这就是NoSQL系统的起源。
虽然NoSQL解决了性能和扩展性问题,但这种绕开问题的方法给用户带来了很多困扰,系统的开发成本也大大提升。这时候就有另外一群人,他们觉得用户需要SQL,觉得用户也需要事务,问题的关键在于我们要努力地往圣杯的方向不断前进。在保持系统的扩展性和性能的前提下,付出尽可能小的代价来满足业务对数据库的需要。这就是NewSQL这个理念的由来。
DRDS也是一个NewSQL的系统,它与ScaleBase、VoltDB等系统类似,都希望能够找到一条既能保持系统的高扩展性和高性能,又能尽可能保持传统数据库的ACID事务和SQL特性的分布式数据库系统。
DRDS发展历程
在一开始,TDDL的主要功能就是做数据库切分,一个或一组SQL请求提交到TDDL,TDDL进行规则运算后得知SQL应该被分发到哪个机器,直接将SQL转发到对应机器即可(如图1)。
图1 TDDL数据库切分
开始的时候,这种简单的路由策略能够满足用户的需要,我们开始的那些应用,就是通过这样非常简单的方式完成了他所有的应用请求。我们也认为,这种方案简单可靠,已经足够好用了。
然而,当我们服务的应用从十几个增长到几百个的时候,大量的中小应用加入,大家纷纷表示,原来的方案限制太大,很多应用其实只是希望做个读写分离,希望能有更好的SQL兼容性。
于是,我们做了第一次重大升级,在这次升级里,我们提出了一个重要的概念就是三层架构,Matrix对应数据库切分场景,对SQL有一定限制,Group对应读写分离和高可用场景,对SQL几乎没有限制。如图2所示。
图2 数据库升级为三层架构
这种做法立刻得到了大家的认可,TDDL所提供的读写分离、分库分表等核心功能,也成为了阿里集团内数据库领域的标配组件,在阿里的几乎所有应用上都有应用。最为难得的是,这些功能从上线后,到现在已经经历了多年双11的严酷考验,从未出现过严重故障(p0、p1级别故障属于严重故障)。数据库体系作为整个应用系统的重中之重,能做到这件事,真是非常不容易。
随着核心功能的稳定,自2010年开始,我们集中全部精力开始关注TDDL后端运维系统的完善与改进性工作。在DBA团队的给力配合下,围绕着TDDL,我们成功做到了在线数据动态扩缩、异步索引等关键特征,同时也比较成功地构建了一整套分布式数据库服务管控体系,用户基本上可以完全自助地完成整套数据库环境的搭建与初始化工作。
大概是2012年,我们在阿里云团队的支持下,开始尝试将TDDL这套体系输出到阿里云上,也有了个新的名字:阿里分布式数据库服务(DRDS),希望能够用我们的技术服务好更多的人。
不过当我们满怀自信地把自己的软件拿到云上的时候,却发现我们的软件距离用户的要求差距很大。在内部因为有DBA的同学们帮助进行SQL review,所以SQL的复杂度都是可控的。然而到了云上,看了各种渠道提过来的兼容性需求,我们经常是不自觉地发出这样的感叹:“啊?原来这种语法MySQL也是可以支持的?”
于是,我们又进行了架构升级,这次是以兼容性为核心目标的系统升级工作,希望能够在分布式场景下支持各类复杂的SQL,同时也将阿里这么多年来在分布式事务上的积累都带到了DRDS里面。
这次架构升级,我们的投入史无前例,用了三年多才将整个系统落地完成。我们先在内部以我们自己的业务作为首批用户上线,经过了内部几百个应用的严酷考验以后,我们才敢拿到云上,给到我们的最终用户使用。
目前,我们正在将TDDL中更多的积累输出到云上,同时也努力优化我们的用户界面。PS:其实用户界面优化对我们这种专注于高性能后端技术的团队来说,才是最大的技术挑战,连我也去学了AngularJS,参与了用户UI编。
DRDS主要功能介绍
发展历史看完了,下面就由我来介绍一下目前我们已经输出到云上的主要功能。
【分布式SQL执行引擎】
分布式SQL引擎主要的目的,就是实现与单机数据库SQL引擎的完全兼容。目前我们的SQL引擎能够做到与MySQL的SQL引擎全兼容,包括各类join和各类复杂函数等。他主要包含SQL解析、优化、执行和合并四个流程,如图3中绿色部分。
图3 SQL引擎实现的主要流程
虽然SQL是兼容的,但是分布式SQL执行算法与单机SQL的执行算法却完全不同,原因也很简单,网络通信的延迟比单机内通信的延迟大得多。举个例子说明一下,我们有份文件要从一张纸A上誊写到另外一张纸B上,单机系统就好比两张纸都在同一个办公室里,而分布式数据库则就像是一张纸在北京,一张纸在杭州。
自然地,如果两张纸在同一个办公室,因为传输距离近,逐行誊写的效率是可以接受的。而如果距离是北京到杭州,用逐行誊写的方式,就立刻显得代价太高了,我们总不能看一行,就打个“飞的”去杭州写下来吧。在这种情况下,还是把纸A上的信息拍个照片,【一整批的】带到杭州去处理,明显更简单一些。这就是分布式数据库特别强调吞吐调优的原因,只要是涉及到跨机的所有查询,都必须尽可能的积攒一批后一起发送,以减少系统延迟提高带来的不良影响。
【按需数据库集群平滑扩缩】
DRDS允许应用按需将新的单机存储加入或移出集群,DRDS则能够保证应用在迁移流程中实现不停机扩容缩容。
图4 DRDS按需进行平滑扩缩
在内部的数据库使用实践中,这个功能的一个最重要应用场景就是双11了。在双11之前,我们会将大批的机器加入到我们的数据库集群中,抗过了双11,这批机器就会下线。
当DRDS来到云上,我们发现双11其实不仅仅只影响阿里内部的系统。在下游的各类电商辅助性系统其实也面对巨大压力。在双11前5天,网聚宝的熊总就找到我说,担心撑不过双11的流量,怕系统挂。于是我们就给他介绍了这个自动扩容的功能怎么用,他买了一个月的数据库,挂接在DRDS上。数据库能力立刻翻倍,轻松抗过了双11,也算是我印象比较深刻的一个案例了。
因为我们完全无法预测在什么时间点系统会有爆发性的增长,而如果在这时候系统因为技术原因不能使用,就会给整个业务带来毁灭性的影响,风口一旦错过,就追悔莫及了。我想这就是云计算特别强调可扩展能力的原因吧。
【小表广播】
小表广播也是我们在分布式数据库领域内最常用的工具之一,他的核心目的其实都是一个——尽可能让查询只发生在单机。
让我们用一个例子来说明,小表广播的一般使用场景。
图5 小表广播场景
图5中,如果我想知道买家id等于0的用户在商城里面买了哪些商品,我们一般会先将这两个表join起来,然后再用where平台名=”商城” and buyerID = 0找到符合要求的数据。然而这种join的方式,会导致大量的针对左表的网络I/O。如果要取出的数据量比较大,系统延迟会明显上升。
这时候,为了提升性能,我们就必须要减少跨机join的网络代价。我们比较推荐应用做如下处理,将左表复制到右表的每一个库上。这样,join *** 作就由分布式join一下变回到本地join,系统的性能就有很大的提升了,如图6所示。
图6
【分布式事务套件】
在阿里巴巴的业务体系中存在非常多需要事务类的场景,下单减库存,账务,都是事务场景最集中的部分。
而我们处理事务的方法却和传统应用处理事务的方案不大一样,我们非常强调事务的最终一致性和异步化。利用这种方式,能够极大地降低分布式系统中锁持有的时间,从而极大地提升系统性能。
图7 DRDS分布式事务解决套件
这种处理机制,是我们分布式事务能够以极低成本大量运行的最核心法门。在DRDS平台内,我们将这些方案产品化,为了DRDS的分布式事务解决套件。
利用他们,能够让你以比较低的成本,实现低延迟,高吞吐的分布式事务场景。
DRDS的未来
阿里分布式数据库服务DRDS上线至今,大家对这款产品的热情超出了我们的预期,短短半年内已经有几千个申请。
尽管还在公测期,但是大家就已经把关系到身家性命的宝贵在线数据业务放到了DRDS上,我能够感受到这份沉甸甸的信赖,也不想辜负这份信赖。
经过阿里内部几千个应用的不断历练,DRDS已经积累出一套强大的分布式SQL执行引擎和和一整套分布式事务套件。
我也相信,这些积累能够让用户在基本保持单机数据库的使用习惯的前提下,享受到分布式数据库高性能可扩展的好处。
在平时的DRDS支持过程中,我面对最多的问题就是,DRDS能不能够在不改变任何原有业务逻辑和代码的前提下,实现可自由伸缩和扩展呢?十分可惜的是,关系数据库发展至今,还没有找到既能保留传统数据库一切特性,又能实现高性能可扩展数据库的方法。
然而,虽不能至,吾心向往之!我们会以“可扩展,高性能”为产品核心,坚定地走在追寻圣杯的路上,并坚信最终我们一定能够找寻到它神圣的所在。
作者简介:王晶昱,花名沈询,阿里巴巴资深技术专家。目前主要负责阿里的分布式数据库DRDS(TDDL)和阿里的分布式消息服务ONS(RocketMQ/Notify)两个系统。
马化腾:主要创办人,首席执行官
马化腾,腾讯公司主要创办人之一,董事会主席、执行董事兼首席执行官,全面负责本集团的策略规划、定位和管理。1998年创立本集团前,马先生曾在中国电信服务和产品供应商深圳润迅通讯发展有限公司主管互联网传呼系统的研究开发工作。马先生于1993年取得深圳大学理学士学位,主修计算机及应用。马先生在电信及互联网行业拥有逾十八年经验。
刘炽平:总裁
刘炽平, 腾讯公司总裁。2005年加盟腾讯,出任本公司首席战略投资官,负责公司战略、投资、并购和投资者关系;于2006年升任总裁,协助董事会主席兼首席执行官监督公司日常管理和运营。2007年,被任命为执行董事。加入腾讯之前,刘先生为高盛亚洲投资银行部的执行董事及电信、媒体与科技行业组的首席运营官,并曾在麦肯锡公司从事管理咨询工作。他在首次公开招股发售、兼并与收购以及管理咨询等方面有超过十一年的经验。刘炽平先生拥有美国密歇根大学电子工程学士学位,斯坦福大学电子工程硕士学位以及西北大学凯洛格管理学院工商管理硕士学位。
张志东:主要创办人,首席技术官
张志东,腾讯公司主要创办人之一,身兼执行董事和首席技术官,全面负责本集团专有技术的开发工作,包括基本即时通信平台和大型网上应用系统的开发。1998年创立本集团前,张先生在深圳黎明网络有限公司任职,主要负责软件和网络应用系统的研究开发工作。张先生于1993年取得深圳大学理学士学位,主修计算机及应用,并于1996年取得华南理工大学计算机应用及系统架构硕士学位。张先生在电信及互联网行业拥有逾十五年经验。
许晨晔:主要创办人,首席信息官
许晨晔,腾讯公司主要创办人之一,首席信息官,全面负责网站财产和社区、客户关系及公共关系的策略规划和发展工作。1998年创立本集团之前,许先生在深圳数据通信局任职,累积丰富软件系统设计、网络管理和市场推广及销售管理经验。许先生于1993年取得深圳大学理学士学位,主修计算机及应用,并于1996年取得南京大学计算机应用硕士学位。
陈一丹:主要创办人,首席行政官
陈一丹,腾讯公司主要创办人之一,首席行政官,全面负责集团行政、法律、人力资源和公益慈善基金事宜。陈先生亦负责集团的管理机制、知识产权、政府关系。1998年创立本集团之前,陈先生在深圳出入境检验检疫局工作数年。陈先生于1993年取得深圳大学理学士学位,主修应用化学,并于1996年取得南京大学经济法硕士学位。
熊明华:联席首席技术官,兼高级执行副总裁
熊明华,腾讯公司联席首席技术官兼高级执行副总裁。2005年加入腾讯公司,熊先生负责公司整体平台产品的战略规划、新产品创新、核心技术研发和卓越工程管理。熊先生负责管理公司核心平台产品团队,包括即时通信和电子邮箱;同时也负责公司搜索引擎和广告平台的产品研发和业务策略与运营。加入腾讯之前, 熊先生在微软公司任职九年,主要负责网络浏览器,视窗系统和MSN的产品管理工作,并创建了MSN中国开发中心。 较早前,熊先生曾任职于IBM互联网部门。熊先生于1987年取得中国国防科技大学信息系统工程学士学位,并于1990年在北京的中国国防科技信息中心获得信息搜索硕士学位。
网大为:高级执行副总裁
网大为,腾讯公司高级执行副总裁。2001年加入腾讯,主要负责引进国际合作伙伴推动腾讯的海外业务,和中国大陆境外的服务。加入腾讯之前,网大为先生曾任MIH中国业务发展副总裁,负责中国的互联网策略和合并与收购工作。任职中国MIH之前,网大为先生曾担任中国电信和资讯科技业的管理顾问。
刘胜义:高级执行副总裁,兼网络媒体业务系统总裁
刘胜义,腾讯公司高级执行副总裁兼网络媒体业务系统总裁。2006年加盟腾讯,负责公司的网络媒体系统,主力拓展公司的网络媒体业务以及相关的广告业务,并负责优化公司及重点产品的品牌策略。刘胜义在数字媒体与媒体传播领域经验丰富,在知名国际广告公司的工作经验超过20年,其中近16年出任多家跨国公司的中国CEO职位。 2007年,刘先生在国际知名网络广告大会ad:tech主办单位担任中国区的顾问;2007年底,正式成为中国广告协会副会长,并获任上海师范大学荣誉客座教授;2008年,荣获中国广告协会颁发的“中国广告30年突出贡献奖”;2010年,受聘为厦门大学新闻传播学院兼职教授。2010年,刘先生获得了第三届中国互联网广告大会颁发的“2009-2010年度 中国互联网广告十大人物”殊荣。2011年,刘胜义先生被纽约《广告时代》评选为2010年21位全球营销业最有影响力的人之一。 加盟腾讯之前,他曾担任阳狮 (Publicis)中国的执行合伙人,天联(BBDO)中国的首席执行官,以及在上海担任电通扬雅(Dentsu Young &Rubicam)和麦肯集团(McCann-Erickson)在京港两地的高管职位。刘先生在广告行业著述甚丰,经常在行业会议上发表演说,并曾于2003年担任上海4A委员会主席。 刘先生拥有美国新泽西州立拉杰斯大学的EMBA学位,在2007年完成了哈佛商学院的高级市场管理课程,并于2010年完成了哈佛商学院的高级管理课程(AMP)。
任宇昕:高级执行副总裁,兼互动娱乐业务系统总裁
任宇昕,腾讯公司高级执行副总裁兼互动娱乐业务系统总裁。2000年加入腾讯,曾任公司增值开发部总经理,互动娱乐事业部总经理,自2005年9月起全面负责互动娱乐业务系统的游戏开发、运营、市场、渠道销售等工作。加盟腾讯前,任先生在华为技术有限公司工作。任先生于1998年毕业于电子科技大学计算机科学与工程专业,并于2008获得中欧国际工商学院的EMBA学位。
吴宵光:高级执行副总裁,兼互联网业务系统总裁
吴宵光,腾讯公司高级执行副总裁兼互联网业务系统总裁。1998年加盟腾讯,带领着腾讯核心产品即时通信软件QQ客户端的研发和产品规划工作,并先后担任QQ 研发团队项目经理、即时通信产品部总经理,互联网事业部总经理。目前,全面负责公司社区、社区增值业务以及电子商务业务等各项互联网服务。吴先生拥有丰富的互联网产品研发、产品规划、产品运营和营销方面的经验。吴宵光先生1996年毕业于南京大学获得天气动力学学士学位,并于2008获得中欧国际工商学院的EMBA学位。
刘成敏:高级执行副总裁,兼无线业务系统总裁
刘成敏,腾讯公司高级执行副总裁兼无线业务系统总裁。2003年加入腾讯,曾任电信事业部总经理、移动通信部总经理。自2005年10月起负责无线业务的开发和运营以及公司区域市场的管理工作。加入腾讯之前,刘先生就职于华为公司,在华为国内营销部工作。刘先生毕业于哈尔滨工业大学,获得机械学硕士学位。
李海翔:高级执行副总裁
李海翔,腾讯公司高级执行副总裁。1999年加入腾讯,自2005年12月起负责规划、建设和管理相关运营支持平台,包括技术架构、信息安全、帐务结算、商业智能、渠道接入、基础IT、应用运维以及客户服务等平台, 以提升公司的运营管理水平。自2010年起担任公司搜索业务线负责人。2008年被《IT经理世界》评为年度中国杰出CIO。加入腾讯之前,李先生曾服务于一家系统集成公司,负责金融和网络应用软件的研发。李先生毕业于华南理工大学,获得计算机软件学士学位,并于2007获得中欧国际工商学院的EMBA学位。
汤道生:高级副总裁
汤道生,腾讯公司高级副总裁。2005年加入腾讯,自2008年10月起负责互联网业务系统的产品平台与研发管理工作。加入腾讯之前,汤先生曾在Oracle软件公司,负责数据库研发和测试工作;在Oracle Applications参与ERP的研发和测试工作;曾经在UC Extension教授Oracle DBA课程。汤先生还曾在Sendmail软件公司,管理研发团队开发大型邮件系统,反垃圾邮件过滤系统等,服务多国的网络运营商,后期也参与新产品策划工作,开拓新市场。汤先生于1991年在美国密西根大学(University of Michigan, Ann Arbor)获得计算机工程学士学位,并于1997年在史丹福大学(Stanford University)获得电子工程硕士学位。
卢山:高级副总裁
卢山,腾讯公司高级副总裁。2000年加入腾讯,历任即时通信产品部总经理,平台研发系统副总裁。自2008年3月起担任运营平台系统副总裁,负责运营平台系统的管理工作。加盟腾讯前,卢先生在黎明网络有限公司工作。卢先生于1998年毕业于中国科学技术大学计算机科学与技术系。
郭凯天:高级副总裁
郭凯天,腾讯公司高级副总裁。2002年加入腾讯,自2007年9月起负责公司行政、法务、采购、基金会、政策发展等部门的相关管理工作,以及各分公司、办事处的职能管理工作。郭先生1996年毕业于中南财经政法大学,获得经济法学士学位。
罗硕瀚:高级副总裁,兼副首席财务官
腾讯公司高级副总裁兼副首席财务官。2004年加入腾讯,担任财务总监职务, 并于2008年出任集团副总裁兼副首席财务官。 此前,罗先生先后在普华永道会计师事务所的香港、广州、深圳三地的分所担任审计业务高级经理,拥有超过12年会计师事务所专业经验。罗先生获颁澳洲资深执业会计师资格,香港会计师公会资深会员和皇家特许管理会计师公会会员。罗先生拥有西澳洲Curtin University of Technology商学学士学位及美国西北大学凯洛格管理学院和香港科技大学EMBA学位。
奚丹:高级副总裁
奚丹,腾讯公司高级副总裁。2002年加入腾讯,自2008年5月起全面负责公司人才发展与管理领域的各项管理职能。奚先生1996年毕业于深圳大学计算机专业,并于2005年取得清华大学MBA学位。奚先生在IT和互联网行业拥有14年以上人力资源管理工作经验。
曾李青:主要创办人,终身荣誉顾问
曾李青,腾讯公司主要创始人之一,在2007年6月起获任终身荣誉顾问。于1999年创办本集团之后,曾先生在1999年-2007年期间出任首席运营官,负责本集团业务范围及产品种类,同时管理全国各市场推广工作。加入腾讯之前,曾先生在深圳市数据通信局工作,熟悉中国互联网及电信行业。
这个是针对巫妖王开了以后的说明.众所周知,小德的攻击是跟手上武器的DPS是没有关系的,只跟武器上面的属性有关,暴雪不准备设计让小德出现像TBC一样的专属武器,也就是说,不会出现森林之王法杖之类的东西(就是增加德鲁伊熊豹枭兽形态功强说明的武器).而作为补偿,将武器的部分DPS转化成功强给小德.
这样,大家都会平等的去竞争一个武器,也就是说小德要和LR,武器站等去抢饭碗了,也增加了武器的通用性.不会出现如果出了一把武器,只能小德拿的情况.而多玩数据库正是针对这个暴雪的动向(在美服和台服的数据),提前做出的说明.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)