写点什么

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

  • 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:1511786
用户头像

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

关注

评论

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

DataPipeline CPO 陈雷:实时数据融合之法,便捷可管理

DataPipeline数见科技

数据融合

【JDD京智大咖说】AI 未来,路在何方?NLP、CV 技术的探索与展望

京东科技开发者

人工智能 CV nlp

数字货币交易所开发有哪些模式?区块链交易平台

13530558032

DataPipeline CPO 陈雷:实时数据融合之道,博观约取,价值驱动

DataPipeline数见科技

数据融合

11月阿里Spring全家桶+MQ微服务架构笔记:源码+实战

小Q

Java 学习 程序员 面试 微服务

企业工作流设计原则及多项目整合开发注意事项

Marilyn

敏捷开发 工作流 企业开发

《JAVA多线程设计模式》.pdf

田维常

多线程

号外!5G+X联创营华为云官网上线,5G 创业春天来了!

华为云开发者联盟

华为 程序员 AI 5G

DataPipeline CPO 陈雷:实时数据融合之法,稳定高容错

DataPipeline数见科技

数据融合

面试官问:如何排除GC引起的CPU飙高?我脱口而出5个步骤

田维常

cpu飙满

Scrum指南这么改,我看要完蛋!

华为云开发者联盟

Scrum 敏捷 改版

前嗅教你大数据——史上最全代理IP服务商对比

前嗅大数据

大数据 数据采集 动态代理 静态代理 代理IP

6. 自定义容器类型元素验证,类级别验证(多字段联合验证)

YourBatman

Hibernate-Validator Bean Validation 多字段联合验证

UNISKIN COO Kevin|营销数字化:数据沉淀和数据系统化运营一定要趁早!

Linkflow

营销数字化 客户数据平台 CDP

公众号高频被调整,它不是企业生产文章的机器

Linkflow

客户数据平台 CDP 私域流量

区块链数字钱包系统开发方案,区块链钱包APP源码

13530558032

合约跟单源码案例,合约跟单模式开发

13530558032

架构师训练营第九周作业

_

极客大学架构师训练营 第九周作业

接口测试学习之json

测试人生路

json 接口测试

Springboot过滤器和拦截器详解及使用场景

996小迁

Java 编程 架构 面试 springboot

深入理解h2和r2dbc-h2

程序那些事

响应式编程 R2DBC 程序那些事 响应式架构 r2dbc-h2

DataPipeline CTO 陈肃:构建批流一体数据融合平台的一致性语义保证

DataPipeline数见科技

数据融合

快进收藏吃灰!字节跳动大佬用最通俗方法讲明白了红黑树算法

小Q

Java 学习 架构 面试 算法

微信官方将打击恶意营销号:自媒体不可过度消费粉丝

石头IT视角

AI技术在音乐类产品中的应用场景

曲多多(嗨翻屋)版权音乐

人工智能 AI 音乐 音乐制作

区块链社交即时通许系统开发,区块链社交app开发价格

13530558032

万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

马丁玩编程

架构 AQS ReentrantLock JUC CLH

阿里达摩院副院长亲自所写Java架构29大核心知识体系+大厂面试真题+微服务

Java架构追梦

Java 学习 阿里巴巴 架构 面试

媲美物理机,裸金属云主机如何轻松应对11.11大促

京东科技开发者

云计算 容器 服务器 云主机

DataPipeline 王睿:业务异常实时自动化检测 — 基于人工智能的系统实战

DataPipeline数见科技

大数据

强化学习入门必看之强化学习导识

Alocasia

人工智能 学习

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