速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

褚霸:不要为了开源而开源

  • 2014-11-26
  • 本文字数:2878 字

    阅读完需:约 9 分钟

RDS(Relational Database Service)是一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务,具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份、恢复及优化方案,使用户能专注于应用开发和业务发展。褚霸在 OSC 源创会年终盛典上分享了阿里巴巴如何使用开源软件构建 RDS 关系型数据库服务的实践经验,会后,InfoQ 专门采访了褚霸,与他共同探讨了阿里云 RDS 背后的技术挑战并听他讲述了他与开源的故事。

InfoQ:在分布式系统中,如何保证数据的一致性是很多公司面临的挑战。阿里云 RDS 作为云数据库解决方案,是如何保证数据的一致性的?

褚霸:我们也是使用的 MySQL 的开源版本,所以在数据性一致性方面和其它公司遇到的问题实际上是一样的。我们遇到的问题,别人也会遇到。遇到问题不可怕,可怕的是没有那颗解决问题的心和解决问题的能力。首先,我们有非常强大的开源团队,他们对 MySQL 非常熟悉,有能力根据需要定制符合我们需求的数据库,这可能是最重要的,阿里巴巴在开源和基础设施方面投入大量的人力和财力,我认为这样的投入效果还是非常明显的。

其次,当我们的可用性和数据安全性有冲突的时候,我们一定会牺牲可用性去保证数据安全,这是我们的理念。我们必须有这个理念,去保障数据的安全。在这个理念基础上,我们会去做各种优化。从最基础的开始,我们需要能够检测出主备不一致,所以我们做了一整套的检测机制,比如通过主备打快照的方式保证不影响用户正常使用。该机制来保证能够及时发现数据的不一致。接下来就需要解决不一致的问题,目前业界的解决方案也有很多,比如用主库覆盖掉备库,或者自动重搭备库一遍。这些方案虽然都能解决问题,我们也有用过,但是都特别慢,我们需要在一致性和性能间做一个平衡。现在我们会单独把不一致性的数据挑出来,专门通过增量的方式去解决不一致的这些数据。

InfoQ:阿里在开源技术的研究和贡献是非常大的,能否分享一下阿里在数据库这一块,使用和参与到开源社区的情况?

褚霸:我们的产品中大量使用到了开源软件,比如我们的数据通道就是用 Erlang 系统做的,在 Erlang 使用过程中我们踩过很多坑,当然也都把解决方案回馈给了社区。我们用 Erlang 做过很多的的模块,这些模块都和底层业务监控有关,和业务无关,属于基础设施,今天我们把这些代码开源,那社区就可以在我们的基础上使用,我们踩过的坑,不要让其它人再踩了,未来我们也将会开源更多的基础模块来回馈社区。

除了代码之外,我们更多的会向社区分享我们的开源软件使用经验,因为在现在的开源世界里,大部分的代码贡献者都是草根,他们的代码质量不一定符合工业标准。有些代码在普通环境跑跑没有问题,但是在商业环境或者有严格性能要求的场景下,它不一定能用。所以我经常和团队的同学们讲,在使用开源软件前,一定要把它研究明白,把它当成一个白盒子使用。如果是黑盒子我们绝对不会用,一定要把软件研究明白,就像这个软件的代码是你写的,想改哪里就该改哪里,只有做到这一点,才能在产品中使用。因为一旦用到产品里面,实际上是没有回头路的,你必须往前走,你不能回撤。所以,我们的同学都锻炼出来了。我们有经验后,肯定需要把相关的经验、踩过的坑分享给同行者,分享给社区。比如我们每个月都会发布 MySQL 内核月报,报告最新的数据库趋势和我们线上的 BUG 如何被发现和修正的。

InfoQ:您刚才也提到了 Erlang,阿里云在这门语言的使用上应该有丰富的经验,您能解释下为什么阿里云会选择这门语言吗?

褚霸: Erlang 是爱立信开源的一门语言动态类型编程语言,最早是设计用来做交换机的。交换机有几个特点,第一个是软实时系统,打电话肯定不能有延迟。第二个是兼容性。在做交换机的时候并不知道要接哪个设备,更不知道设备对应的操作系统,所以在设计之初它就有一个好的兼容特性。第三个是稳定,从一开始 Erlang 就使用完全不同于其它语言的设计理念,在语言中又集成了一个完整的操作系统,它有自己的进程,所有的进程和我们现在讲的操作系统的进程一模一样,只不过 Erlang 的粒度更小。

Erlang 的操作系统内部有自己的调度系统,它的调度系统比操作系统的还复杂。比如说有大量的内存管理,并且都非常精细。Erlang 非常重要的一个特性就是可以做到调度公平、资源隔离,这个非常符合云计算的特点。因为云计算就是这样的,大家的资源一起分,这个理念和 Erlang 是一致的,所以用 Erlang 去做这件事就会非常的自然。还有就是 Erlang 支持热升级,它可以做到在线热升级。发现问题的时候,通过一个热升级包,就可以把最新的代码部署上去,整个进程不需要停止,用户不受影响,我们非常看中的 Erlang 的这个能力。

InfoQ:最近亚马逊推出了全新的数据库引擎 Aurora,号称比 MySQL 快 5 倍,您怎么看这件事?

褚霸:软件是绕不开硬件的,MySQL 出现的那个年代硬件条件比较差,当时服务器的内存和硬盘容量都比较小,而现在我们线上的服务器内存都比那个时候的硬盘容量还大好多倍,Aurora 就是在这样的背景下推出的。

现在 SSD 很廉价,整个圈子对数据的安全性以及数据库的性能要求也更高了,Aurora 的设计理念其实和 MySQL 的设计理念是不一样的,它是基于现有的技术而设计的,时代在变,未来肯定也是这样的一个趋势(实际上刚刚发布不久的 MySQL 5.7.5 相比于 5.6 也有了大幅提升),所以我觉得这并不惊讶,阿里云也在向这方面努力,我们也在往前走,但是最重要的还是踏踏实实静下心来做。

InfoQ:您怎么看国内的开源趋势?您对开源社区有什么样的建议?

褚霸:我很早就开始玩开源,也是看到最近几年开源在国内的飞速发展。1999 年的时候,在整个社区中,只有你会写一个 TCP 服务器,再开源出来,那就很牛了。如何再能做下优化,能够处理超过 1024 个连接,那就更牛了,这是那时候的水平,那个年代学的基本都是国外的科研技术。而今天,我们能够处理的连接数可能已经翻了 100 倍。我是在中国社区长大的,一路走来也看到国内社区也在茁壮成长,特别是最近几年,中国人贡献的项目越来越多,国产开源项目也越来越多,这个从开源中国发布的数据可以看到。

开源是大的趋势,在某些方面开源软件已经主导创新,开源无处不在。我相信这个观念深入人心,趋势一定是不可逆的。我相信,开源会走得越来越快,而且今天任何一家公司,你不可能绕过开源技术而闭门造车。

国内有很多开源项目,但是项目的质量并不高。我们去招聘的时候,很多人会把自己 GitHub 地址帖上去。我们上去一看,这个项目是两三年前做的,已经不再维护,并且还只是个简单的练习项目。所以说,做开源的初衷很重要,你是为了什么去做这个项目?为了面试?为了吹牛?个人认为开源最大的一个驱动力是解决真实的问题,而不是为了开源而开源。开源项目需要沉淀,需要静下心来持续跟进,把项目做深、做精。

采访嘉宾

余锋(花名褚霸)是阿里巴巴核心系统技术专家,有超过 15 年的网络和底层系统开发经验,专注于高性能分布式服务器的研究和实现, 擅长构建大规模集群存储服务器。2012 年 7 月 23 日,阿里巴巴宣布推淘宝等七大事业群,被马云称作“七剑”,组成集团 CBBS 大市场,余锋是在其中负责 RDS 数据库的资深专家。

2014-11-26 01:1511504
用户头像

发布了 219 篇内容, 共 139.4 次阅读, 收获喜欢 191 次。

关注

评论

发布
暂无评论
发现更多内容

你的团队属于部落的哪个阶段?

Yanel 说敏捷产品

敏捷 敏捷开发 敏捷精髓

【解析+示例】2种方法,通过SpreadJS在前端实现甘特图

葡萄城技术团队

大前端 甘特图 SpreadJS 表格控件

用Go替代Python在生产环境中进行数据分析

良少

人工智能 大数据 数据分析 pandas Go 语言

工具集系列|值得收藏的几个免费在线学习国外网站

一尘观世界

学习 工具 网站 提升

良好的工作习惯——及时存档、备份

小匚

工作效率

认识数据产品经理(二 数据产品经理的稀缺性)

马踏飞机747

大数据 互联网 数据分析 产品经理

Python程序性能分析和火焰图

ElvinYang

从技术层面理解对于区块链技术的10.24集体学习讲话

Tux Hu

区块链 智能合约 以太坊 加密货币 去中心化网络

每个人都应该知道的性能参数

ElvinYang

ITerm2 + Oh my ZSH + Powerlevel10k

JDoe

配置

也谈程序员的核心竞争力

我心依然

学习 程序员 竞争力 独立思考 清晰表达

医院陪护5天的四点感受

赵新龙

身心健康 医院

危机过后,「表格文档协同」需要具备什么能力?

葡萄城技术团队

大前端 开发者工具 Excel

Java 为什么需要包装类

Rayjun

Java

Linux学习-2020.05.11

Flychen

NIO 看破也说破(三)—— 不同的IO模型

小眼睛聊技术

Java 学习 深度思考 程序员 架构

Try-Catch包裹的代码异常后,竟然导致了产线事务回滚!

牧码哥

Java spring 事务

目光聚集之处,金钱必将追随

Tom

学习 个人成长 思考 读书

ShedLock:一个轻量级的定时任务协调组件

kk

定时任务 shedlock

回"疫"录(12):一“罩”难求

小天同学

疫情 回忆录 现实纪录 纪实

功不唐捐

Janenesome

读书笔记 思考 坚持

错过了初恋,别错过WebFlux

稻草鸟人

stream Spring5 WebFlux Reactive

如何让团队产生“多米诺骨牌”效应?

Yanel 说敏捷产品

项目管理 敏捷 敏捷开发 敏捷精髓

追光逐影:读《我们这一代》

北风

如何高效阅读

ElvinYang

接口限流算法有哪些,看完这篇又能和面试官互扯了~

不才陈某

Java 分布式 后端

DDD 实践手册(6. Bounded Context - 限界上下文)

Joshua

企业架构 设计模式 领域驱动设计 DDD 架构模式

游戏夜读 | 如何制作互动剧?

game1night

Git clone过慢问题

JDoe

git

带你吃透原型设计

Yanel 说敏捷产品

产品 产品经理 产品设计 产品开发 产品推荐

你真的懂"看板文化"么?

Yanel 说敏捷产品

敏捷 敏捷开发 敏捷精髓

褚霸:不要为了开源而开源_数据库_小盖_InfoQ精选文章