作者:邹大斌(至顶网副总编,公众号“云上企业”作者)
过去很长一段时间以来,业界对中国企业在开源软件领域的印象是下载多贡献少,但是以阿里为代表的中国互联网企业正在改变这一格局。
最近几年,中国涌现了大批开源技术人员,他们在开源社区非常活跃,尤其是在云和数据库等新兴技术领域,国内企业的话语权和影响力不断得到提升,在代码贡献量和代码质量上都有了质的飞跃。中国的软件开发人员和中国企业在开源社区开始屡获奖项就是一个有力的例证。
在不久前举办的Percona Live开源数据库大会上,MySQL社区委员会宣布将2019年的“MySQL社区个人贡献奖”颁给来自中国的阿里云智能数据库产品事业部高级技术专家翟卫祥(花名:印风)。
Percona Live是由知名的数据库服务提供商Percona公司主办的开源数据库大会,也是MySQL领域规模最大的会议,与会者会一起分享如何使用或者修改MySQL——这一世界上最受欢迎的开源数据库来适配自己的业务。
阿里云智能数据库产品事业部
高级技术专家翟卫祥(右一)及其奖杯
获奖者印风从2012年起就开始活跃在MySQL社区,到今年获奖,他已经累计提交了100多个Bug report和优化建议报告,很多还带有补丁代码。除了参与MySQL社区工作,印风还在云栖社区大概有200多篇关于MySQL功能及内核的文章,在MySQL领域算是名人。
MySQL社区委员会给出的获奖理由是其对MySQL社区做出了长期贡献,可以说是名副其实。
该奖也是继阿里云2018年获得“MySQL社区公司贡献奖”之后再次得到MySQL社区的认可。多年来阿里云持续不断地为MySQL社区贡献思想、修补各种Bug,不断地帮助官方和社区改进和丰富MySQL,截至目前,阿里已经为MySQL贡献了300多份Bug Report。
特别是,2016年阿里云将改进优化后的MySQL分支——AliSQL和配套工具对外开源,同时还与MariaDB合作,极大地丰富了MySQL开源生态。可以说,今天的阿里云已经成为MySQL生态里的一支非常重要的技术力量。
逼出来的AliSQL
在阿里巴巴的成长过程中,有一段历史不得不提,这就是用分布式架构替代传统集中式架构。这是一段波澜壮阔的历史,阿里走得相当坚决,在这个过程中AliSQL的成功起到了关键性的作用。
当时IBM的小型机、Oracle的数据库、EMC的存储是企业IT系统的标配,它们代表了稳定、可靠,但是价格昂贵。
那些年,随着阿里巴巴业务(当时主要有B2B网站、淘宝、支付宝)的快速扩张,每年新采购设备费用和旧系统的维护费越来越大,更为重要的是,这些设备和系统就像一个个黑盒子,一旦出现故障必须等待厂商的技术人员来解决。阿里在十年前就开始去用开放、性价比更高的通用设备来取代这些封闭、昂贵的专用设备。
而在这一过程中,最难替代的就是传统数据库,更换数据库不仅意味着要面临数据迁移时损坏和丢失的风险,还意味着上层软件代码重写。2009年,阿里Oracle RAC集群节点数达到了创记录的20个,成为亚洲第一,这样的数据量换到哪个数据库能抗得住?
事实上,当时市场上并没有哪个数据库能完全满足阿里的要求,开源数据库MySQL是阿里最后不得已的选择。MySQL是使用最广泛的开源数据库,还有重要的一点是可以拿到源代码,这样阿里可以按照自己的应用场景对代码进行了修改、优化和完善。
这一过程虽然历经坎坷和波折,但阿里最终基于MySQL数据库研发出了AliSQL。到2011年7月,淘宝商品库完成了从商用数据库到AliSQL的大迁移, 2012年全淘宝最后一台小型机宣布下线,阿里的开放技术路线之路取得初步成功。2013年支付宝最后一台小型机下线,这也是阿里巴巴全集团最后一台小型机下线,阿里历时三年多的技术路线变革之路终于告一段落。
走出阿里,AliSQL开源
当初,为了实现MySQL替代商用数据库的目标,阿里的数据库技术人员不得不埋头一行行认真研究MySQL的源代码,为了满足业务需求他们不得不重写、修改以及新增了不少功能,特别是针对电商应用场景的部分,这使得它们对MySQL有着更为深入的了解。
工作期间,阿里的数据库技术人员开始参与到开源社区的工作,提交一些Bug报告、修复代码。进入2012年,从Oracle向AliSQL的迁移差不多完成。在这个迁移过程中,阿里数据库技术人员们积累了非常宝贵的经验,他们开始活跃在MySQL社区,把这些经验分享到社区。
此次在Percona Live大会上获得MySQL个人贡献奖的印风就经历了这个过程。2011年从武大硕士毕业走出校门的印风拿到了阿里淘宝的Offer,他要负责的正是AliSQL最核心的部分——InnoDB存储引擎,这让他有更多机会认真深入研究MySQL数据库。
印风告诉笔者,和他很多同事一样,他非常喜欢研究MySQL的新代码,并愿意在MySQL分享自己的经验。“做技术的人都知道,获得别人的认可远比获得金钱更不容易。”印风表示。
当时,阿里整个公司也大力倡导技术人员积极参与开源社区的工作,在公司内部技术人员也以在开源社区贡献代码为荣。公司的鼓励、工作内容相符、再加上技术人员个人兴趣,阿里的数据库技术人员为MySQL社区提交了不少的新增功能和补丁,在MySQL社区影响力逐渐提升。
到2016年,阿里决定把这些功能进行整理,提取了其中有价值的功能,把源代码对外开放,包括AliSQL及其配套的备份等工具,并宣布启动MySQL新分支AliSQL数据库开源项目。
这个开源的AliSQL基于官方MySQL版本,但加入了阿里自己的补丁。除了一些内部接口和需要依赖阿里其他系统实现的部分外,它与阿里内部使用的AliSQL完全一样。在2010~2016年期间,阿里的技术人员先后对AliSQL进行了100多项优化,包括Bug修复、功能增强、性能突破和可运维性的增强等。这些修改都体现在开源AliSQL中,在Github上可以下载。
今天,在Github上AliSQL项目已经拥有3400多个Star,由此可见对于阿里的AliSQL社区里认可度非常高。
“AliSQL 的发展凝结了众多技术人员的心血。我们希望将过去几年沉淀的技术积累回馈到社区,让更多的个人和企业共享我们在MySQL上的经验。”印风说。
为什么需要一个MySQL的分支版本而不是直接用官方版本。印风说,这是因为阿里的应用场景有很大的特殊性,阿里做的是电商服务,每年的“双11”数据库会面临很大压力,阿里必须加入一些功能和手段让它更稳定。比如“秒杀”,不多的商品很多人抢购,给数据库带来非常大的压力,还有像金融交易性场景需要更强的数据保护。
另一方面,阿里对外提供云服务,需要为云管理提供适配,包括为了实例的高可用需要加入一些功能。还有,为了配置文件更安全加入了透明的数据加密,以及对备份软件的加密等,这些都针对云环境进行专门设计的。
总体来说,与MySQL官方版本相比,AliSQL中增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。比如,由于针对电商秒杀场景AliSQL进行了专门优化,在通用基准测试场景下,AliSQL版本比MySQL官方版本有着 70% 的性能提升。在秒杀场景下,数据库性能提升近100倍。
始于社区,回馈社区
阿里技术架构完成了巨大的升级,AliSQL功不可没。当年的那场技术路线变革的成功,正是以AliSQL的成功为前提的。此后阿里巴巴集团核心业务都彻底告别了商用数据库,完全在AliSQL上运行。而在这个过程,为了更好地满足业务的需求,阿里技术人员一直在不断进行优化AliSQL,丰富其功能。
如今,AliSQL已经与阿里云其他数据库的研发整合,同时,坚持开源也是阿里云的既定战略,无论是在MySQL社区还在AliSQL分支上阿里云都会持续投入。印风透露,在MySQL社区里,今年阿里云将会进一步完善和丰富闪回(Flashback)的功能、推出双同步(Double-Sync Replicaition)复制、以及基于Raft协议的MySQL复制功能等。
而在AliSQL上,将遵循稳定性、通用性优先的原则逐步合并补丁、新增功能。其中一个重要工作就是与MySQL 8.0保持同步,将AliSQL升级到8.0,包括备份工具也会同步升级。同时,AliSQL 8.0中还会加入更多面向云的运维工具和RDS相关补丁,以及为电商场景进行更多优化。据悉,目前阿里云已经上线的RDS for MySQL 8.0使用的就是完全兼容 MySQL 8.0 的AliSQL 8.0 分支。
而在拥抱开源的过程中,阿里云也从中收获了丰富的回报。比如,AliSQL的开源对于阿里云生态系统起到重要的支撑作用。其次,开源帮助阿里云获取了优质的免费代码贡献,完善其产品。第三,积极参与开源也大大加速了阿里云数据库产品技术的更新。
在持续的8年的发展中,由AliSQL衍生和发展出来今天阿里云一系列相关产品和服务,包括关系型数据库PolarDB、NoSQL数据库、分析数据库及相关工具等,组成了完整的生态矩阵。
AliSQL从MySQL社区来,如今它又被返回到社区,这也是正是对开源精神“人人为我,我为人人”的一个最好解读。实际上,阿里也一直是全球开源社区的积极参与者。比如,阿里是MySQL另一分支MariaDB的白金会员。
为了推广开源,阿里还推出了数据库内核月报,帮助数据库技术人员分享最新的开源技术,每个月10篇文章,都是关于数据库内核的最新信息(月报地址: http://mysql.taobao.org/monthly/)。
另外,阿里云也是Cloud Foundry基金会的黄金会员,在2017年阿里云以白金会员身份加入了云原生计算基金会(CNCF),还以黄金会员身份加入了Linux基金会。
我们可以看到,阿里云积极参与和丰富MySQL等开源生态,同时,也从开源社区持续收获了品牌认可度、市场影响力和潜在用户。互惠互利、共赢才是长久的合作之道。阿里云与MySQL等开源社区的这种良好互动关系和成功的合作模式为中国企业参与开源提供了很好的范例,值得参考和借鉴。
相关阅读
点击“阅读原文”
了解RDS for MySQL 8.0的更多信息
阿里巴巴数据库技术
微信:alibabadba
分享数据库前沿
解构实战干货
长按二维码关注