离哲谈ADS产品化

个人简介 占超群,阿里巴巴集团数据平台部高级技术专家,实时分析数据库云产品ADS(Garuda)创始人,低调的华丽践行者。 有多年数据分析平台的研发经验,先后担任多个大数据商业项目架构师,爱好跟分布式数据库相关技术以及大数据商业应用。

全球架构师峰会(International Architect Summit,下简称ArchSummit)是由InfoQ中文站主办的一次全球性架构师峰会。ArchSummit专门针对架构师人群,讲述与架构和架构师相关的各方面趋势、技术和案例。这也是继QCon之后,InfoQ中文站主办的又一次高端技术盛会。

   

1. 各位网友大家好,我是InfoQ的阿明,非常感谢网友继续关注我们的视频节目,我现在正在全球架构师的大会的现场,也非常有幸能够邀请到来自阿里的专家离哲先生,离哲先和网友招呼一下。

占超群:大家好,我是离哲,在阿里三年来一直从事实时计算的平台的开发,在阿里云上提供服务的名称叫做ADS,就是分析数据库服务,同时也做过多个大型的以数据为核心的商业项目。

   

2. 目前网友也非常关注,阿里提供的ADS服务是什么样的情况,因为目前,我们看了各个云产品的厂商提供的产品,阿里是做的很前面的,请给网友分享一下这个情况。

占超群:ADS主要提供的是一个高并发,低延时的海量数据的实时分析服务,这个市场目前来看,相对来说在云端还是比较空白的,在传统企业比较多,比如说像Teradata,Cognos,也提供类似的服务,但是这些服务会有一些成本和规模化的问题。ADS是我们借助阿里多年来在大规模的分布式计算上的基础技术,以及目前的几百PB的数据上的业务的磨炼,上面长出来的一个产品。在阿里用了接近三年,然后我们在今年11月份开始对外提供服务,它可以让用户很容易的把数据分析零成本上手,很容易地把数据导进来,做毫秒级的分析,然后接入到它的业务中去,把数据分析变成一个业务。

   

3. 实时分析这个数据产品,我觉得在研发的过程当中,应该是经历了一些比较多的变化,这个产品在我看来也是比较复杂的,那么在产品化的过程中,遇到了哪些大的挑战,你的团队怎么去解决这些问题的呢?

占超群:只能是说这个名字听起来比较复杂,但是产品本身用起来还是比较简单的,这个简单背后是不简单,我们也花了很大的精力去解决一些问题,让用户用起来比较简单。举几个例子,第一个例子就是,最开始我们提供HTTP服务,如果增加一个功能,就增加一个接口,用户用起来成本很高,后来我们花了三个人,做了将近两个多月,做的MySQL协议的实现,让用户无论是通过NodeJS,PHP,或者任何语言过来,都可以零成本上手,因为MySQL相对来说大家都是比较熟的,我们就模拟一个MySQL的协议,大家看起来像MySQL数据库,用户用起来成本就比较低廉,不用去感知背后到底是单机,还是分布式,还是到底做了哪些优化,或者说索引,这些东西都是我们自动把它做掉的。这个我们也会专门分享一下,我们的产品化之痛,我们为了做产品做了一些什么改进,这是第一点。第二点,我们的元数据上也做了很多事情,以前大家做产品是不关心数据的元数据的,我们在这方面也是做了很大的努力和改进。很多产品用户是没法去深度的了解整个系统的使用的,并且,对系统来说是个黑盒,也不知道性能报告是什么样子,用户可以做哪些优化,降低成本,还有就是运行状态,CPU内存占用情况,我们通过一个标准的MySQL的接口,提供了一个虚拟的DB,帮助用户去做元数据的查询,用户可以非常灵活的用SQL去描述整个系统的运行情况,可以自己做一些应对策略。这样用户第一个来说就很方便上手,第二个可以深度去优化,这块就讲两个点,接下来,下午的话,我们会深度剖析一下我们产品上做的一些事情。

   

4. 另外一点,就是大家对在线密集计算这种产品关注比较多,只不过业界专家聊的这个话题可能比较少,想请你跟网友分享一下,我们这边是怎么去做的,怎么去实现的。

占超群:其实这个问题是个非常好的问题,我们在内部,基本上也可以说是个血泪史,从去年的年初我们开始支持集团的业务,以前是一个业务八个集群,后来年初的时候,我们就开始合并集群,所有业务在一个集群上跑,但是在线业务它有个特点就是,它的高峰是不可预知的,它可能一下子瞬间来几千个QBS和几千个并发,这个是没办法提前先分配一块资源,等到高峰的时候再增加资源的,增加资源是来不及了,一增加可能大片超时。因为互联网业务大家都知道,响应时间的要求是很高的,所以这个时候我们就要想个办法,在给每个用户,每个业务分配资源的时候,保持弹性,但是也能快速的归还,就是毫秒级的把资源增加或减少,并且实现毫秒级的抢占。这个对我们来说,也是一直在探索,直到今年的5月份,我们有一个产品在集团内部开始严格的测试,能做到毫秒级的把资源进行扩容和缩容,这样在在线服务的峰值,或者低谷的时候,我们就可以通过削峰填谷,把资源利用率给提升起来。这是多租户的第一点,就是你又要做到好的隔离,让每个用户有干净的资源,但是你又让他少付钱,然后资源利用率还高,这天然是一个矛盾的东西,这是多租户的第一个痛点。第二个来说,多租户还有个痛点是分布式系统,我们对外提供的服务的响应时间一定得是稳定的。不能说,服务器挂一台,或者网络有问题,跟用户承诺的延时就由两百毫秒变成两秒,这个用户是不能接受的。这个在多租户的SLA上用户是有很大的concern和质疑的,所以这块我们也做了很多努力,包括也申请了一些专利,做了一些长尾的容忍,让每个租户看起来它的资源是非常稳定的,并且资源是固定的,用起来用户是没有感觉的。但是为了让多租户没感觉,我们在背后做了很大的努力和尝试,这几年一直在探索,包括接下来我们还会持续的去探索。多租户跟资源利用率和稳定性,和SLA天然就是矛盾的,我们为了解决这个矛盾,一直不停的像做一个三角形一样,不停的做tradeoff。

   

5. 另外一方面,我觉得网友也是非常关注的就是阿里云在产品设计和架构设计之间怎么去调整这个关系的?分享一下你的感受?

占超群:这块因为我做产品的时间才一年半,我现在是产品架构都做,带了一个团队。我只能说几点,总体来说,可以理解为就像带着镣铐跳舞,无论在时间,资源,资源包括团队资源,项目资源,还有服务器资源,它一直是不平等的状态。这时候只能在有限的条件下,我们去做最大的努力,这是大的原则。然后在里面,我们分开从产品角度和架构设计角度看,它们也是有矛盾的,产品角度要求你做得足够简单,给用户的体验足够好,用户不用去了解后面那些原理。但是这对我们架构师来说就是非常难的,包括刚才讲的那个MySQL协议,为了让用户看起来很容易上手,很容易接进去,最后我们花了至少90个人天在做这个事情。第二个事情就是刚才强调的多租户,从产品角度看,用户开了一个服务,那么他的资源就是稳定的,无论什么问题都需要解决,但是架构上还要去考虑,解决是没问题,但是成本就接受不了。第三点就是从索引层面来看,比如用户的学习成本要做得足够低,可能很多用户不了解,为什么要建索引?为什么要配压缩?配什么压缩算法,它的压缩比是什么样的?压缩原理是什么样的。用户是不可能理解这些东西的,那么产品就说,要让用户勾勾点点,就能把表建好,自动去分析它的索引,查询,把租户的空间弄好。而在架构上,就要去做腾挪,比如说为了不让用户了解索引,压缩这个东西,就要用空间换时间,离线全索引,然后进入用户的查询动态去调整索引,压缩算法做成链式的,如果A压缩算法不行,再用B,B不行,再用C,一个链式下去不让用户去感知。然后在成本上,我们让用户感知不到我们做的这些事情,但是成本上做得比较节省,否则这个架构就是一个不可持续的。举个例子,如果一个用户,我们给他开了资源,然后给他好多台服务器,再来一个用户又给他多少台服务器,那么很快我们的资源就没了,从产品上来看他是没感觉,但是从架构上来看是不可复制的。这就是分布式系统一个天然的问题,能做到scalable,但是资源复用率要上去,举个例子,有一万台服务器,如果每台服务器资源利用率才10%,用户的感觉是最好的,因为他的平均利用率可能是10%,峰值能做到90%,但是如果一万台服务器利用率提升到30%,那一下子可以节省很多钱,这个是按亿计的,所以这个时候我们就不停的去腾挪,在用户体验和功能还有成本上不停的去做tradeoff,不停的去腾挪。

你可能感兴趣的:(离哲谈ADS产品化)