【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

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

关注

评论

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

AI英雄出少年!奔赴星辰,他们正在创造黄金时代

百度大脑

AI

存算解耦的多模型数据管理平台介绍:以星环科技TDH8.0为例

星环科技

人工智能 大数据 云平台 数据管理平台 存算解耦

技术探索系列 - 轻松带你掌握JMM(2)

洛神灬殇

JVM JMM 5月日更

新书见面 | 《云原生时代的微服务架构实践》

Damon

微服务 云原生 5月日更

“区块链+疫情预警”!这个科研团队研发了传染病预警系统

CECBC

疫情

深入浅出 LVS 负载均衡系列(二):DR、TUN 模型原理

UCloud技术

负载均衡

rocketmq优雅停机往事

捉虫大师

如何做好用户画像?

石云升

创业 用户模型 5月日更

华仔架构训练营作业(模块三)

不听不听王八念晶

第一个鸿蒙应用

释缘

鸿蒙 HarmonyOS

STM32低功耗模式下GPIO如何配置最节能?

不脱发的程序猿

嵌入式 stm32 单片机 低功耗模式

Nginx-代理服务器

进击的梦清

nginx Docker Linux Docker-compose 代理

架构实战营 -- 模块三

永佳

架构实战营

Nginx 常用配置清单

Java小咖秀

nginx Web 反向代理 HTTP

在线体验四大名著情景(地图、游戏)

不脱发的程序猿

开源 程序人生 四大名著

PHP文件包含小总结

Thrash

安全

基于OpenPAI细化部署 Hadoop 集群

Damon

hadoop 5月日更

从5大挑战带你了解多模态机器学习

华为云开发者联盟

机器学习 多模态机器学习 多模态 异构数据

第三次作业

Geek_9cf7b5

架构实战营模块三作业

竹林七贤

NumPy之:使用genfromtxt导入数据

程序那些事

Python 数据分析 Numpy 程序那些事

区块链+农业,如何升级农业价值链

CECBC

农业

架构实战营模块3作业

Vic

架构实战营

轶事

言未卜

中国式美好假期:用AI地图,抢先体验未来出行

脑极体

求求你别再用 MySQL offset 和 limit 分页了

xcbeyond

MySQL 5月日更

看了小姐姐的Spring SPI 总结,双非渣硕的我差点跳起来,被征服了

牛哄哄的java大师

Java

双向循环链表:鸿蒙轻内核中数据的“驿站”

华为云开发者联盟

鸿蒙 数据结构 结构体 OpenHarmony 双向循环链表

私域流量这件事,古代就有了……

白洞计划

数据架构:数据冷热分离实践思考

程序员架构进阶

数据架构 架构设计 28天写作 5月日更 冷热分离

数仓ETL系统:给强大的“心脏”配上“超级流水线”

华为云开发者联盟

数据库 数据仓库 GaussDB(DWS) ETL系统 MPPDB

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