眼下主要负责数据库的稳定性这一块。双十一这一天。我主要是负责协调整个数据库团队和保障整个数据库在“双十一”过程中的稳定性不受不论什么影响。
我大概算了一下。淘宝眼下全部的数据库服务器加起来可能已经超过800台。
那在这么一个规模底下,淘宝的数据库团队这么多年也是随着淘宝的业务发展一起成长起来的。但淘宝数据库眼下核心的数据库还在小型机和高端的存储上面,还有非常多的数据库如今是用的是MySQL,我们逐步在从Oracle到MySQL这个方向在转移,所以我们MySQL PC server硬件也是非常多的了。?
从07年開始淘宝的业务量保持每年自然翻一番的增长,数据库质量感觉到非常大的压力。那么前端业务量增长一倍。在数据库上有可能增长是好几倍,它有一个放大效应在里边。当时我们第一步可以想到非常自然的架构,就是把三个数据库拆成很多其它的数据库,或每个数据库支持一个比較单一的业务。比方用户、商品和交易,都会分成独立的数据库,然后放到独立的小型计算中去,这是我们08年做的非常大的事情就是垂直拆分,然后08年的业务我们就顶住了。
当时我们就预估09年、10年会有更大的压力增长,这个时候我们应该怎么办?当时我们从业界能看到非常多的经验分享,包含eBay、亚马逊这些国外的大公司。他们的经验分享里面,水平拆分是我们数据库涨到一定程度后的架构选择。我们从Oracle到MySQL转移,主要是用水平拆分,这是我们未来的一个弱点。那水平拆分后机器、数据库的数量都会多非常多,那Oracle它本身的成本也是我们考虑的一个重要因素,所以当时从成本考虑的话,那个时候我们自然会选择用MySQL数据库。
据我们了解在整个从小型机到PC
server的迁移,包含从Oracle到MySQL数据库的迁移,你们在做这个事情的时候。都做过好几个月的压力測试。你讲讲这个背景和故事。
每一台PC server即使有四个9的可用性。但假设我们整个系统合在一起。可能它最后的两个9的可用性都达不到。
这就须要我们从软件层、架构层要做非常多的改进。可以要让单点的一些失效对总体的系统不造成不论什么影响,由于我们和架构部门、开发部门一起做了非常多事情,才干保证我们的集群稳定上线。
当天晚上睡觉的时候心里就有点在打鼓:才零点就这个样子了,明天下午明天晚上最高峰的时候我们应该怎么渡过?所以第二天早上八点多的时候我们一进到指挥部里面就看到全部的指标, 包含CDN的指标、各个业务线的指标、数据库的指标都是噌噌的往上涨,这时心里面事实上是非常忐忑不安的。
可是我们比較放心的是这三大核心系统,商品、用户和交易,在我们今年全部的水平扩展项目做完了以后,比方说商品功能做完了以后。从我们的机械压測里面它是有十倍的流量的,所以当天百分之中的一个百,百分之两百的流量基本上对数据库没有造成太大的影响,所以当时还是非常开心的看到这个指标高速的往上涨,希望交易可以通过10个亿、20个亿,我认为都是可以承受的。
所以我们明年是要把很多其它这样的Scale up可以看到天花板的数据库全部要拆分成水平库存这样的数据库。
那眼下我们用的是32台PC server来搭建的一个机群,价格也就是300万~500万的级别。相对来说我们做完这个事情以后。攻克了两三千万的硬件成本。
都须要我们和架构部门一起来考虑的;第二个比較大的经验就是眼下我们在做的。深入研究MySQL的源码。我们从研究和压力測试的过程中。发现MySQL它本身代码的一些缺陷。可能在高并发大压力下会有非常多隐藏的Bug。
在我们近期的这次測试其中。我们还发现了Facebook公布的FlashCache二级缓存的软件。当时我们是測出它一个非常大的Bug:并发压力非常大的情况下,它会导致MySQL成为一个僵尸进程。
我们发现了以后。非常快反馈给Face book,然后Face book非常快就修复了这个问题,这也是我们对使用开源软件带来更大的一个信心,就是开源可以在全球得到很多其它的支持,大家都可以从原代码层面来解决更深层次的一个问题。
但如今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出来。
原文:https://www.cnblogs.com/mqxnongmin/p/10529825.html