`
lxy2330
  • 浏览: 468591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

江枫谈淘宝“双十一”事件中的数据库架构优化

 
阅读更多

概要
本采访是淘宝双十一事件深度报道的一部分,被采访者是淘宝技术保障部的江枫,主要负责淘宝数据库的稳定性。“双十一”期间负责协调数据库团队提供稳定性保障。就淘宝“双十一”事件,我们邀请江枫介绍了淘宝数据库的架构和硬件组成和近几年的演变过程,以及在事件前和当天,为保证数据库正常运行采取了哪些措施。

个人简介
江枫,本名宁海元,淘宝系统DBA/MySQL DBA团队负责人,双11期间主要负责数据库的稳定性。从2003年开始超过7年的DBA经验,于2007年加入淘宝,伴随淘宝业务的发展,和淘宝DBA团队一起成长,从集中式到分布式,从小型机存储到PC Server,从Oracle到MySQL,专注于构建高可用高可扩展的数据库系统。

关于会议




江枫先给我们介绍一下自己,和你在这次淘宝“双十一”事件中所扮演的角色?




那给我们详细的谈一下淘宝网现在整个数据库整体的一个架构,包括它硬件的组成。

淘宝的数据库发展到今天,已经是一个非常复杂的系统。我大概算了一下,淘宝目前所有的数据库服务器加起来可能已经超过800台。那在这么一个规模底下,淘宝的数据库团队这么多年也是随着淘宝的业务发展一起成长起来的,但淘宝数据库目前核心的数据库还在小型机和高端的存储上面,还有很多的数据库现在是用的是MySQL,我们逐步在从Oracle到MySQL这个方向在转移,所以我们MySQL PC server硬件也是非常多的了。


我们也了解到,现在淘宝的整个的数据库团队在逐渐的把一些数据库从Oracle迁移到MySQL,然后呢,把一些服务器由小型机转到PC server,那你们整个转变的动机是什么?

主要是因为业务压力给了我们最大的动力。07年我来到淘宝的时候,当时只有三个主要的数据库,全部在小型机和存储上面。以当时的压力来看,它跑起来是非常顺利的,而且大家也知道小型机它从Unix操作系统到硬件,稳定性都会比PC server其实要高很多,当时的情况下淘宝用小型机是一个非常自然的选择。
从07年开始淘宝的业务量保持每年自然翻一番的增长,数据库质量感觉到非常大的压力。那么前端业务量增长一倍,在数据库上有可能增长是好几倍,它有一个放大效应在里边。当时我们第一步能够想到很自然的架构,就是把三个数据库拆成更多的数据库,或每一个数据库支持一个比较单一的业务。比如用户、商品和交易,都会分成独立的数据库,然后放到独立的小型计算中去,这是我们08年做的很大的事情就是垂直拆分,然后08年的业务我们就顶住了。
当时我们就预估09年、10年会有更大的压力增长,这个时候我们应该怎么办?当时我们从业界能看到很多的经验分享,包括eBay、亚马逊这些国外的大公司,他们的经验分享里面,水平拆分是我们数据库涨到一定程度后的架构选择。我们从Oracle到MySQL转移,主要是用水平拆分,这是我们未来的一个弱点,那水平拆分后机器、数据库的数量都会多很多,那Oracle它本身的成本也是我们考虑的一个重要因素,所以当时从成本考虑的话,那个时候我们自然会选择用MySQL数据库。


给我们再简单总结一下这几年,淘宝整个数据库的演变过程?

刚才说到08年我们做完垂直拆分以后,09年到今年我们主要做的工作其实就是水平拆分。今年在十月份之前我们全部完成了淘宝最核心的三个系统:交易数据库、商品数据库和用户数据库的水平拆分。所以到“双十一”之前,在我们内部采访中,我一直跟采访人员说,当时数据库情绪稳定。基本上我们没有做什么事情,只是在不停的看报表,看数据,然后很开心的看到交易曲线以超过45度的趋势往上涨。


那前期还是做了非常完善的准备。据我们了解在整个从小型机到PC server的迁移,包括从Oracle到MySQL数据库的迁移,你们在做这个事情的时候,都做过好几个月的压力测试。你讲讲这个背景和故事。

是这样的,今年我们年初决定,我们商品库从小型机迁到PC server上面去,这是淘宝压力最大的一个数据库,当时是用四台小型机加两个高端存储来支撑的。要把这么大一个数据库进行迁移,我们心里面也是没有底的,因为不知道要多少台PC server能够支撑,需要什么样的配置来支撑这个压力?当时我们能够想到一个很直观的想法就是模拟线上完全一样的压力,甚至加上几倍的压力来测它的极限值。
我们和开发团队、我们的性能测试团队,加上DBA团队和ops团队,成立了一个非常大的项目组,然后做了接近两个月的性能测试,在整个测试过程中发现了非常多的问题,包括我们给Oracle、MySQL等厂商都提交了很多Bug,有些Bug也得到厂商回应,进行修复。


那整体的转变的过程到现在进行到了什么样的程度?包括你在整个转变的过程中遇到哪些问题?

我们现在最核心的用户数据库今年已经彻底完成了从小型机、存储和Oracle切入到PC server加MySQL的架构。
我们内部有一个提法叫做去O、去I、去E,其实就是我们要从高端硬件Scale up模式到低端硬件的Scal out水平扩展的模式,这是淘宝内部最大最核心的系统,今年已经顺利完成了全部区的水平扩展。其他几个系统,比如说交易和商品已经完成了一部分,完成了水平拆分的一部分,但是没有达到我们希望的进度,这可能是明年我们需要做的事情。


在转型过程中主要遇到哪些问题?

让我们觉得比较大的问题就是我们从可靠的小型机迁移到大规模,大数据量的PC server上来,从架构上就对我们就是一个非常大的挑战。大家都知道,每一个PC server的稳定性肯定和单台小型机会有一定的差距,再加上我们一个机群有可能是32台或者64台PC server。每一台PC server即使有四个9的可用性,但如果我们整个系统合在一起,可能它最后的两个9的可用性都达不到。这就需要我们从软件层、架构层要做非常多的改进,能够要让单点的一些失效对整体的系统不造成任何影响,因为我们和架构部门、开发部门一起做了很多事情,才能保证我们的集群稳定上线。


其实“双十一”这个时间应该说是对过去的技术转变的检验,现在回头来看,这个检验的结果怎么样?

当时是有点提心吊胆的,之后又觉得相对来说今年我们做的很多事情还是非常成功的。但是现在再回头仔细想想还是有点后怕,“双十一”那天的凌晨零点不是有一次Ipad的秒杀吗,当天晚上我们都在线上观察数据,在零点的一瞬间,就看到所有数据库指标已经达到了以前正常时候最高峰的指标,有些甚至还超过了。
当天晚上睡觉的时候心里就有点在打鼓:才零点就这个样子了,明天下午明天晚上最高峰的时候我们应该怎么渡过?所以第二天早上八点多的时候我们一进到指挥部里面就看到所有的指标, 包括CDN的指标、各个业务线的指标、数据库的指标都是噌噌的往上涨,这时心里面其实是很忐忑不安的。
但是我们比较放心的是这三大核心系统,商品、用户和交易,在我们今年所有的水平扩展项目做完了以后,比如说商品功能做完了以后,从我们的机械压测里面它是有十倍的流量的,所以当天百分之一百,百分之两百的流量基本上对数据库没有造成太大的影响,所以当时还是很开心的看到这个指标快速的往上涨,希望交易能够通过10个亿、20个亿,我觉得都是能够承受的。


那对于整个数据库架构的演进下一步有什么打算?

下一步其实就是刚刚说的我们有几个核心系统还没有完全的做到这个水平扩展,加上“双十一”那天我们还是有一个小惊险:我们有一个数据库,跟交易核心有一点点联系的,但它还是放在小型机上面,当时已经提前为它准备了百分之一百的余量,就是说它可以承担平时最高压力的两倍。
但是那天已经达到平时最高压力的1.8倍左右的时候,把我们吓出了一身冷汗。如果当时淘宝的交易最高峰的流量再增长20%的话,有可能数据库就会到瓶颈了。所以我们明年是要把更多这种Scale up能够看到天花板的数据库全部要拆分成水平库存这种数据库。


那你刚才所提到的去Oracle,去小型机,去高端存储,这个“三去”的整体思路给淘宝网带来了哪些经济上的效应?

当时我们知道小型机和存储的价格是非常昂贵的,还是拿我们刚才说压力最大的商品数据库举个例子,当初我们数据库是用了四台高端的小型机,两套高端的存储,成本加起来起码都是三千万以上。那目前我们用的是32台PC server来搭建的一个机群,价格也就是300万~500万的级别。相对来说我们做完这个事情以后,解决了两三千万的硬件成本。


这样来讲,整体的经济效益还是非常不错的。但是其实刚才我们在前期沟通的时候也提到,你要从Oracle转到MySQL,包括从小型机转到PC server,其实里面还是会遇到蛮多问题的,包括它的不稳定性等等,那对于这一方面你有没有什么经验可谈?

在这一方面,我觉得有两个很重要的因素。第一个是我们需要和我们的开发前端应用架构部门能够紧密的合作,能够让我们的应用融入刚才说的整个机群的单点失效和容灾的问题。都需要我们和架构部门一起来考虑的;第二个比较大的经验就是目前我们在做的,深入研究MySQL的源代码。我们从研究和压力测试的过程中,发现MySQL它本身代码的一些缺陷,可能在高并发大压力下会有很多隐藏的Bug。
在我们最近的这次测试当中,我们还发现了Facebook发布的FlashCache二级缓存的软件,当时我们是测出它一个非常大的Bug:并发压力非常大的情况下,它会导致MySQL成为一个僵尸进程。我们发现了以后,很快反馈给Face book,然后Face book很快就修复了这个问题,这也是我们对使用开源软件带来更大的一个信心,就是开源能够在全球得到更多的支持,大家都能够从原代码层面来解决更深层次的一个问题。


我想这也可能是淘宝技术团队现在那么开放,那么注重开源的动力之一。那如果说想对MySQL的一些核心代码做编译,就需要对人才的储备,包括各方面资源整合的要求还是蛮大的,那你在这方面有没有什么感触?

说到人才这个话题,08年的时候,淘宝当时准备大规模的往MySQL方向上转,我们内部也是有一些置疑的声音。他们说淘宝DDA团队以前都是在Oracle方面比较专精,在业界来说,淘宝的DDA团队在Oracle方面更加有名气一些。所以我们内部有置疑的声音。就是说你们有MySQL专家吗,MySQL出问题了以后能很快的解决吗?所以从08年到现在,我们慢慢的一路走过来,内部培养了很多的MySQL的人才,包括这几年我们的应届生的成长,再加上我们从外部招到一些专家,我们对MySQL的理解已经越来越深。
刚才说到,我们已经能够给MySQL打Patch,已经能够给MySQL report这些Bug。到现在为止,我觉得MySQL的成长已经达到了非常高的一个程度,我们对MySQL已经越来越有信心,但是未来淘宝的MySQL肯定是要做得越来越大的,淘宝还有很多小型机上面扩展不太容易的系统需要迁移到可扩展的机群上面来,但我们也希望业界能够有更多的MySQL伙伴加入我们,和我们一起来做这么一件非常有意义的事情。


我想能够加入到淘宝的技术团队,去经历那么多有大交易量的技术实践还是非常宝贵的。另外一个问题就是虽然说现在我们用的越来越多的是MySQL,但是现在大家也知道MySQL已经被Oracle收购了,那对像淘宝这样的团队有什么影响呢?

大家都知道MySQL其实是基于GPL的协议来开源的软件,那淘宝在使用过程中,前期是已经考虑到一些风险。所以我们所有的MySQL都是自己来做编译做优化的,而且我想MySQL被Oracle收购了以后,现在看起来Oracle应该是给MySQL在开发这方面是提供了更大的帮助,像之前在Sun的时候,MySQL的版本相对来说是比较混乱的,包括我们现在在用的5.0和5.1的正式版本,最近还有包括开发方面就还有两个,一个6.0,一个5.4,这些特性会互相交织在一起,让我们选择的时候也有点不知道到底选哪个版本会更好一点。但现在Oracle收购MySQL以后,他把5.4跟6.0这些版本已经合成了一个比较规范的5.5的版本,并且为它制订了很好的一个milestone15:31,未来要怎么发展这个里程碑,M1、M2、M3、M4这种发展方向,而到现在为止这个5.5已经发展到5.6、5.7的版本,而且已经是IC版本了,很快就要GA了,那我想这对于MySQL来说应该是一个好消息。我们可以用到更多更稳定的新特性, 5.5版本里有几个新的特性是我们非常关注的,比如Google已经达到英文15:57这个pach,所以我们觉得对我们未来的这个MySQL这个系统非常有用的一个功能。那我们也等着Oracle的5.5这个版本能够尽快的GA出来。
分享到:
评论

相关推荐

    苏州江枫园别墅CAD图纸

    以下是《苏州江枫园别墅CAD图纸》简单预览,如果需要完整的CAD图纸学习参考,请点击下载。...……………………该文档为苏州江枫园别墅CAD图纸,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看

    无线客户端数据实战.pdf

    1. 作者介绍:文档中提到的江枫(宁海元),是淘宝无线事业部无线数据团队的负责人,具有十年DBA(数据库管理员)经验,并且是《高性能MySQL》第三版的译者之一。他在2003年毕业,2007年加入淘宝。 2. 无线数据分析...

    初中语文 古诗文赏析 柳永《卜算子慢 江枫渐老》原文、译文及赏析(通用).doc

    柳永的《卜算子慢·江枫渐老》是一首描绘暮秋景色,表达离愁别绪的词。这首词以深秋的江景为背景,抒发了词人作为“楚客”在外漂泊的孤独与思乡之情。 开篇“江枫渐老,汀蕙半凋,满目败红衰翠”,通过描绘江边枫叶...

    卜算子慢.江枫渐老_卜算子慢江枫渐老,阅读附答案.docx

    抱歉,我似乎误解了您的需求。您提供的信息与IT知识无关,而是关于诗词的解读和赏析。如果需要关于IT行业的详细知识,例如编程语言、软件开发、网络技术、数据分析等,请提供相关的文件信息,我将很乐意为您生成相关...

    Oracle RAC 11g 集群

    Oracle RAC 11g 集群是一种高可用性和高性能的数据库解决方案,它允许多台服务器共享同一个数据库实例,从而实现数据的并发访问和负载均衡。本指南主要讲解了在Oracle Enterprise Linux上以较低成本搭建Oracle RAC ...

    基于java的一个简单的点餐系统Menu.rar

    本篇文章将深入探讨一个基于Java的简单点餐系统,包括其架构、功能以及实现的关键技术。 首先,我们要明确的是,这个点餐系统是用Java语言编写的,Java以其跨平台的特性、丰富的类库和强大的面向对象能力,成为开发...

    企业经营思路的调整和创新―――苏州江枫丝绸有限公司改革之路剖析 (2008年)

    苏州江枫丝绸有限公司的经营思路调整与创新之路 苏州江枫丝绸有限公司的历史可以追溯到上世纪50年代,当时的新苏丝织厂是苏州四大绸厂之一,以有梭织机生产真丝绸闻名。随着中国经济体制的转变和市场经济的发展,该...

    永磁同步电机控制讲解

    在永磁同步电机的运行过程中,定子绕组中的电流会在空间上分解为两个分量:**d轴电流**(Id)和**q轴电流**(Iq)。其中,d轴电流主要影响转子的磁场强度,而q轴电流则负责产生驱动电机旋转所需的电磁转矩。具体来说...

    克东事业编招聘2020年考试真题及答案解析版(1).docx

    **题目**:“秦伦被江枫的画所吸引”、“江枫拜德南为师学画”、“江枫与女儿一起举办画展”、“秦伦与江枫结婚”、“德南教江枫的女儿开始学画”。根据以上事件,请选择正确的顺序。 **选项**:A. 2-1-4-5-3 B. 2-1...

    自然语言处理分词_古诗词库moon.txt

    在“月落乌啼霜满天,江枫渔火对愁眠”中,“月落”、“乌啼”、“霜满天”、“江枫”、“渔火”、“对愁眠”共同描绘出一幅深秋夜晚的江边景象。分词系统要能够准确分词,以便读者可以感受到这幅画面的凄美和宁静。...

    20D对E_F需求规格说明书反馈单1

    需求规格说明书是软件开发过程中的重要文档,它详细定义了系统的功能、行为和预期的性能。以下是基于给定文件的【标题】、【描述】、【标签】和【部分内容】中提取的相关知识点: 1. **目录结构**:文档的目录结构...

    游览过苏州园林的人大概都知道著名的寒山寺里有一块石PPT学习教案.pptx

    这篇文档实际上是对古诗《枫桥夜泊》中某些解读的驳斥,主要涉及的是对古诗词理解的正确性和文学研究方法的探讨。驳论文的形式被用来分析并反驳关于"乌啼"、"江枫"和"愁眠"的新解。 1. **“乌啼”新解的反驳**:新...

    E组对B组软件问题汇总1

    该项目由B组提交,于2020年5月20日由E组的吕江枫和郭维泽进行评审。以下是针对该项目所发现的问题及其详细解析: 1. **问题一:运行脚本的选择** - 描述:在未选择特定脚本的情况下,直接点击运行,系统提示“请...

    旌阳2020年事业编招聘考试真题及答案解析整理版(1).docx

    3. 文化艺术:题目中的(3)涉及个人艺术成长路径,如江枫的学习和创作经历,体现了艺术家的培养过程以及师徒传承在艺术界的重要性。 4. 社会保障体系:社会保障包括对失业、灾民、军人退休等各类人群的保障措施,这...

    「高中语文现代文阅读-不朽的失眠」.pdf

    在这样的夜晚,他体验到了从未有过的孤独与绝望,而这种情感被作者巧妙地融入到对环境的描绘之中,如江枫的冷光、乌鸦的嘶哑叫声、霜冻的草木与疏落的星光,共同构建了一个充满哀愁的场景。 文中多次运用对比手法,...

    学习王崧舟的枫桥夜泊.pdf

    5. 诗词结构与情感表达:《枫桥夜泊》中,“月落”、“江枫”、“渔火”、“乌啼”和“寒山寺钟声”构成了一幅秋夜江景,表达了诗人孤寂、忧虑的情感。教师引导学生从画面、声音和触感出发,体会诗人的情感状态。 6...

    数据算法++Hadoop+Spark大数据处理技巧

    - 数据获取:从各种数据源(如日志文件、数据库或网络)获取原始数据。 - 数据预处理:清洗数据,处理缺失值、异常值和重复值。 - 数据存储:利用HDFS将数据存储在分布式系统中。 - 并行处理:使用MapReduce或...

    plsql13安装.zip

    总结了如何在window10中安装plsql13 64位 1:安装plsqldev1304x64 D:\Program Files\PLSQL Developer 13中 2:把instantclient-basic-windows.x64-19.6.0.0.0dbru.zip 和 instantclient-sqlplus-windows.x64-19.6....

Global site tag (gtag.js) - Google Analytics