信息化 频道

薪酬发放的激励效应[1]


主持人:接下来有请阿里巴巴的技术经理做一个主题演讲,《大型应用设计中的数据库架构》

冯春培:去年五月份在杭州,看了一个几百人的大厅,也没有用话筒,我觉得这个也不用了。我讲东西不喜欢用文档的东西把思路框住,说得好听叫天马行空,不好叫想多哪说到哪。

我前面把自己的印象比较深的东西尽量表达出来,其实题目不是我定的,这个题目是主办方定的,谈这个问题呢,在这些比较大型的应用中我们怎么考虑架构的问题,大家在座的也大多是这样的角色,刚开始的时候,数据库应用发展的时候,大家那时候数据也少,应用也少,没有价格不价格的概念,能实现功能、收回钱来就成功了,慢慢地发展呢,积累得数据越来越大,客户对信息化系统的依赖也越来越重了,很多并发的要求、海量的查询,当然我主要讲OLTP的类型,这样发展之后呢,数据越来越重要了,于是产生了有人来管理维护数据库,不能丢,有些企业像金融企业丢了跟钱都有关系,电信那边少收点钱还没有关系。当然有人管理数据库,运用的问题就凸显出来了,于是就产生了数据库的管理维护的这些DBA很难有精力去支持前端的应用,前端应用的很多需求太多太复杂了,人的精力是有限的,于是DBA慢慢催生了两种角色,一个叫管理DBA,是侧重于后台系统的维护、备份,考虑数据安全,另外也催生了开发DBA的角色,其实很多公司也在慢慢催生这种角色,我们公司这几年一直在坚持这两个方面,开发DBA刚开始跟开发部门打交道,后来发现总是跟他们打交道效率不高,因为一旦到开发部门这儿很多需求就确定了,于是开发DBA的触角就伸到需求开发,甚至已经伸展到运营部门那里,非正式流程上的民间的组织行为就产生了,然后呢,经常跟运营部门打交道之后他们也明白我们的重要性,也会跟我们沟通,我们有个感觉说,比如说下半年,下个季度公司里面运营部门的人想干什么,我们有什么准备,于是开发的这条线就有一个好的模型出来了。

产生了这两个角色以后,慢慢地我们发现这两种角色已经满足不了我们对未来发展的期望了,为什么呢?因为某一个具体的产品DBA或者某一个开发DBA所面临的是一些很具体的需求,要解决的是一个当前的,跟当前相关的很具体的问题,它很难去考虑或者推动我今年怎么做,我明年后面会变成什么样子,因为有时候一个长期的方向跟短期的行为可能方向并不是一样的,是分离的,里面还牵扯到方方面面的因素以及成本的问题,比如你在公司里面打算干五年和打算干一年考虑是不一样的,所以要考虑价格的问题,比方对于产品级DBA来讲,要高度的是什么问题?最基本的说运用的压力越来越增加。一个小型机可能只有四颗CPU,16级内存,后来换成八颗CPU,32级内存。产品DBA还要决定一台机器承载不了的时候我应该怎么做,通过多台机器分担压力,以及可靠性问题的解决。产品DBA比较现实地在考虑这样的问题。

更长远一点还要考虑到,除了数据库的层面的选择,还有主机、存储,这几年大家都在流行几个概念,虚拟化主机、虚拟化存储,操作系统级别的,大家都在炒这些概念,但是这些概念落到实出,大家的期望是任何一个节点出问题了能持续地提供服务,还要解决数据库扩展的问题,承载更大的压力。开发DBA这边同样会跟产品DBA配合,他要考虑什么问题,我们的数据量越来越大,应用越来越复杂,比如说淘宝的压力也越来越大,压力一两年可能翻一倍,或者一年翻两倍,你怎么应对,单纯靠扩展主机的性能或者一两个节点,从一个节点增加到三四个节点可能还是不能满足要求,数据库要拆分,怎么拆分法,流行的叫水平分割和垂直分割的问题,垂直分割比如说把大运用拆成都独立的小运用。这高垂直拆,但是垂直拆的时候单个业务可能有非常大的量,可能有几亿条数据,访问量每天非常频繁,现实的需求在我们很多具体的环境中冲突特别强烈,你按照这个业务拆也已经满足不了要求了,就要考虑水平的分法,数据按照用户分还是怎么分,集群里面,拆分了以后,水平分割之后的数据库,它实际上是由一组数据库构成的,每个单点还要考虑安全性的问题,它也不是承担某一个具体应用的人所能决定的,往往变化,甚至在某一个具体的公司里面,在技术上基本上是一个变革,架构上的彻彻底底的变革,国外亚马逊等在一两年前就已经完成了变革,国内现在正在思考这个问题,比如说移动,包括我们公司,也在考虑这些东西怎么个分法,怎么解决扩展性的问题,这个问题其实就要站在一个相当高的高度看,因为普通的角色产品DBA和开发DBA很难承载这个东西,因为这不是数据库的问题了,应用要配合做很多的改造,你必须获得技术部门非常强有力的支持,投入很大的资源,这个事情一做可能要一年两年甚至三年才能完成改造,这就不是我们普通的角色定义能完成得了的,于是我们在想,同样,开发那边有架构设计的,我们DBA这边也要配套地催生做DB架构的角色来跟运用开发的架构遥相呼应,大家一起讨论未来两年我们要做成什么样子,最近半年我们要做什么事情,下半年做什么事情。做这个计划。这个情况的产生呢,基本上跟我们今天要谈论的已经是保持一致了,都到同一个方向上来了。

数据库说起来很简单,如果画张图就是一个垂直分割,下面水平分割,每一个具体的时限。如果没有很大规模的话,可能还是牵扯到把有些应用拆分到其他的地方,但是这样的一些动作会导致我们数据库之间会不会产生数据同步,比如说你垂直分割的时候分到什么力度,太粗了满足不了,太细了维护成本太高。当然对于某个具体的点承载不了的时候,有的人也会考虑读写分离,一个写四个读。用这样的读写分离的方式来解决可靠性的问题,一个点坏了我并不在意,不像我们以前一样提心吊胆,07年我管了十几二十套数据库,可靠性要控制在一个层面上,到底是多少,我不知道各位有没有做过统计,比如说07年我的数据库117分钟故障,当然是分布到很多数据库上,这117分钟是影响应用的,做了很好的分离之后可能就不那么严重了,坏了一个没关系,我移到别的地方去就可以了,画图很容易,道理几分钟我就明白了,但是一旦做起来其实里边有非常多的问题,主机和存储的搭配,操作系统版本的选择,新功能要不要用啊,里头有很细的问题,管理数据库的人有很多的问题,淘宝现在一个表加一个列,也要有一个人凌晨四点钟才能做这个事情,在大规模的运用上有很多的问题。

那么做数据库的架构层面的设计和实施,你要能站在上面描绘这个蓝图,也要能贯彻实施,做成一个具体的东西,然后管理、维护、匹配都得跟上,这一整套下来才能使得我们的应用,那个时候比如说我们DBA项目组就可以跟老板说,我支持你可扩展、保障地的可用性,没问题。这是我的终极目标,我不希望说像以前一样总是听到各个业务部门回应我说,我们这个数据库什么时候就不行了,撑不住了,你跟我说到底能够支撑到什么时候,由于业务发展,有时候具有爆炸性,不像传统行业一样,我就非常难以回答,这也是我的一个痛,所以说我也是希望未来的某一天,也许一年、两年,那个时候我可以跟大家交流时候说,我们的数据库非常好,可扩展、可靠性非常好。我也希望大家欧这个概念,现在也许你的系统还比较小,但是总有一天越来越多的企业会提出这样的要求,当这个机遇降临的时候,你就可以勇敢地站起来,承担责任,体现你的价值。

主持人:他从一个用户角度说在数据库管理和架构中遇到的问题,解决的问题还有正在解决的问题。

提问:现有的数据库压力下面,比如我一月份是某种压力,在现有的压力下面,过了一个月以后的话,这个压力肯定会上来,如何评估过一个月后的压力到底有多大?

冯春培:比如说你这个系统刚上学一个月,要告诉第二个月多大是没有办法的,我们的经验,我们对所有的应用,如果一旦上线有一段时间,这个系统的IO,主机的CPU,数据库每秒钟有多少逻辑图,我们都有长期的趋势图,每个人对这个曲线都非常熟悉,对我们来讲我发现一个低点或者高点发生了我们就会去调查那个时刻有什么任务也好,我们的曲线是什么样子的,比如我们很明显地知道,我们负载,前半年稳定在1.5到2,现在在2.5到3,你的业务方如果能给你提供一些帮助,比如说用户的增长量,你们最近要不要搞大型的推广活动,很多是相关的,我们是非常关心我们公司什么时候要搞个大型的推广,搞什么免费的活动,这对我们有很大的压力,我们基本上业务方要做的时候都会找后台去沟通,我们预计下个月做什么东西,你们有没有很好地准备。我们根据它业务增长的目标。

比如我们现在淘宝这种应用,一个动态的PV,一个点击,一百万个点击里面有多少比例是动态的PV,这个东西长期下来是可以得出来的,每个动态的PV会产生多少逻辑图,多少IO是可以统计出来的,经过历史统计可以修正一些参数,然后去运用。我们团队的人我会问你数据库有多少IO,你比较了然地回答出来。如果你比较熟悉了,你就会很好地解决。

主持人:前一段有一个案例是奥运会的售票,一到时间马上网站就崩溃了,我想这是模型不太好。

提问:我提个问题,可能跟技术不太相关的,您在公司里面的名望或者地位,还有阿里巴巴对数据库的重视程度也好,他们对数据库非常重视,在中国普通的现象是什么呢,公司领导并不重视数据库的前期工作,我想您是不是也经过这样的阶段,刚开始领导并不听你说的。非得等公司遇到一些比较大的困难,甚至花了很大的代价才重视这个的吗?

冯春培:我明白你的意思,我去阿里巴巴的时候,去之前是第三个,前面两个明天疲于奔命,我去时大家都不认识我,除了这个圈子的人比较熟悉之外,做架构的根本就不知道你,我去也是花了很多的力气,我看到了所有的问题,去跟很多部门沟通,协调解决这些问题,我希望某些部门配合我做一些变化,做完了之后呢,那我就会说,这个变化我用一个具体数据说,我做这个事情达到什么目标,有什么效果,把这个东西弄出来,要让他们部门知道,还要知道领导知道,知道他干这件事情给大家带来多大的价值和收益。这个事情慢慢地去贯彻,多打交道以后对方也觉得跟你们配合有点意思,能有一个东西来说话,慢慢地逐步提高影响力。

不能等说系统承载不了了,你一来一下把它弄好了,这种概率很少。由此比如我们现在招人,我们非常强调跟其他部门的合作、沟通,配合,我们要求非常高,所以很多的工作模式和习惯,制度流程都已经很成型了,我们现在便一个应届毕业生进来三个月,保证可以接受我们的业务,当然我们希望他更有潜力。

我们经历了几年的时候才形成了影响力。

主持人:要么你改变世界,要么世界改变你,要改变企业的行为和模式,那么你创立一种制度使得企业运转更好。

提问:我的问题很简单,因为淘宝、阿里巴巴机器负载是几到几。

冯春培:这是操作系统上表现出来的,这个在CPU等待队列里面排队的数量。

卢东明:我其实有一点感受,我觉得很多我们现在接触的国内大型的用户,刚才非常同意春培的观点,做DBA的要想证明一些什么事情,或者改变公司的做法,把它量化,不要定性地说,数据库慢了,或者数据库很忙,然后项目很紧等等,要量化,跟你领导汇报的时候把它量化出来,数据库负载到了什么程度。

冯春培:你还可以说逻辑度降低了多少,百分比是多少,虽然领导不明白这个意思,但是他能看到这个变化。

卢东明:另外我也注意到很多国内企业有时候和我接触的国外企业一个很大的差别是什么呢,没有一个Q-A系统,没有一个良性循环的机制,从开发系统,到QA系统,到上线系统,我不知道你们在座的公司里面会说今天这个点不行了没问题,大家想一想Google这种公司,还几百个机子没事,它是通过整个体系结构上,通过技术上的方案,彻底地解决了这个问题。
0
相关文章