【IT168 评论】5 月 10 日,在DTCC 2018第九届中国数据库大会上,青云QingCloud宣布开源其基于MySQL研发的新一代分布式关系型数据库RadonDB,并以 100% 开源的方式托管在 GitHub 。开发者可以自由的提交 issue 和 PR。 项目网址:radondb.io 代码地址:https://github.com/radondb
对于青云RadonDB,其实圈内人士应该并不陌生,它是青云在去年12月发布的一款基于MySQL研发的新一代分布式关系型数据库。笔者在去年也曾发布过一篇文章《青云发布RadonDB 云计算跨界搞数据库已经成为必然》,从架构设计、功能特性、实现原理、性能等多个角度,超详细的介绍青云RadonDB 。
不过,上次笔者并没有机会采访到RadonDB数据库背后的设计者,QingCloud 数据库高级技术专家张雁飞,借着此次DTCC大会的机会,笔者与张雁飞,就RadonDB研发背景、研发过程,以及为何选择在DTCC上开源,RadonDB的核心竞争力等问题进行了深度沟通。
为了让读者更全面细致地了解这场对话,以下附上QingCloud 数据库高级技术专家张雁飞的对话实录:
从今天大会现场的反馈看,RadonDB开源是成功的。青云把开源选在DTCC上,是出于怎样的考虑?
张雁飞:首先,DTCC是数据库这个细分领域里最专业的大会,嘉宾都是来自各个行业的专家,我今天还在大会上遇到以前阿里巴巴、腾讯的同事,参会听众的质量很高,都是一线的实践者。这是我们选择在DTCC大会上发布开源的一个主要目的;其次, RadonDB是新一代分布式数据库,选择这个场合发布,大家会更感兴趣,通俗的讲,就是对口味;最后,大会的主要受众是DBA,是数据库的直接使用者,所以选择DTCC。
作为设计和研发者,能否给我们讲一讲RadonDB的研发背景和研发过程。
张雁飞:RadonDB的研发总时间大概经历了一年,初期是我一个人,后来团队慢慢扩大。众所周知,市面上开源的分布数据库很少,从稳定性、安全性、健壮性以及高可用这个层面考虑,很少有能够拿过来直接用的,虽然也有一些可用的,但使用门槛较高。
DBA以前比较熟练使用MySQL单机,但是在接触到一些新的开源分布式数据库时,就需要一个不同以往的学习过程,而且学习门槛可能会比较高。我们看到这点,同时,因为我们的MySQL用户占了大部分,为了让我们的用户可以很方便的使用分布式数据库,所以RadonDB对MySQL语法没有任何改造,数据迁移过来就可以直接使用,对DBA和我们的用户来说,不仅使用方便而且没有学习成本,这是我们打造这个产品第一个目的。
另外一个目的,我们想把RadonDB打造好,以便让更多的人参与进来,包括对MySQL感兴趣的人群,可以来开源社区作出贡献并一起玩,所以今天我们决定将RadonDB开源。RadonDB里使用了一些目前比较先进的技术,是DBA过去想过但没有实现的技术,而如今RadonDB已经实现了。因此,希望大家能基于开源的RadonDB,做一些自己的产品化,从中得到真正的帮助。这是第二个目的,主要是基于以上两个目的,促使我们研发了RadonDB。
我看到,青云最近组织了一场RadonDB体验日活动,邀请专家现场体验,有些专家体验过后觉得RadonDB就是一个中间件,那么,RadonDB到底中间件还是数据库?
张雁飞:其实在大会演讲前20分钟,我在某个微信交流群里,也看到大家有类似疑问。大概意思也就是,RadonDB不就是中间件吗?其实这是一个误解,首先,为什么定义RadonDB为新一代分布式数据库?如果只是中间件,我们不敢把它定义为新一代。它的新颖之处在于,RadonDB是把NewSQL、Google Spanner等实践思想拿过来,跟MySQL结合,而在市面上开源的产品里从来没有人这样做过。关于开源分布式数据库的研发,大家的做法一般是重新研发一套,并没有一个是真正基础于MySQL来做的。
第一个层面:高可用存储层。RadonDB基于MySQL开发,并融合了NewSQL的思想,比如我们把Raft选主机制跟MySQL融合起来,这样我们MySQL集群的存储层就具备高可用。如果一个主在运行中挂掉,通过Raft协议会自动显示一个新的主。另外,我们基于MySQL的原生机制,可并行复制的功能,在选主之后可以让数据快速的回放,提供即时的数据回放服务。
我们在刚过去的体验日上现场演示了一把,大家对于这项功能都很震惊,因为以前没有遇到过。现场,我们在高压情况下操作数据库,启用64个线程并发的去写数据,过程中我们把主KILL掉,现场演示写数据受不受影响,影响的时间会有多长,这种服务启动后新主有没有切换成功。整个流程下来大家的感受都是非常震惊,其实整个操作过程也就是三秒时间。我认为,现场没有人敢这么操作数据库。
Radon DB是NewSQL与MySQL的优势结合,让彼此威力相互发挥。单独的NewSQL很难做到并行复制,因为并行复制本身非常复杂,但是MySQL做到了,我们将Raft和MySQL结合起来,打造高可用集群。
第二个层面,SQL层。目前阶段,我们借助MySQL的威力完成了分布式事务。后面我们会持续改进,把MySQL红利尽量发挥出来,让威力更大,这也是新的地方。
简单总结,RadonDB是MySQL和NewSQL相结合,充分发挥两者的优势,打造出的新产品。传统中间件的定义,只是一个中间件,是一个路由分发,并没有高可用的性能,所以RadonDB不是中间件。因为RadonDB是由两部分组成,Radon和Xenon,分别负责SQL层和高可用,是一个完整的产品。
今天大会上,您介绍RadonDB能够通过自动分片的支持,让DBA在分库分表上面的使用门槛大大降低,除此之外,RadonDB还解决了DBA、运维一直以来面临的哪些棘手的问题?
张雁飞:其实在分布式数据库领域里,DBA和运维比较担心的有两个方面:
第一个是分片,规则怎么定的。比如:分布式数据库需要DBA去配制分片规则,操作既复杂也麻烦,这是让DBA很头疼的事情。配好分片规则并生效后,DBA还需要验证数据起没起作用,整个过程需要在上线前多次演练,来保证上线以后是否好用,但在所有繁琐操作后,DBA还是会很担心结果是否如愿。
第二个是扩容,提到扩容的准确性和安全性,DBA可能就胆战心惊了。因为数据从一个机器转移到另一个机器,数据的准确性难以保证。基本每次上线前都需要经过周密的准备,也难以确保扩容不会出现问题。但是现在RadonDB自动把这两件事做了,自动扩容和自动分库分表,这让运维变得更简单。我们的两个目的,最终都是为了解放DBA和运维人员。
这几年,分布式数据库很火,除了国外产品外,国内也有不少,比如;蚂蚁金服的OceanBase,PingCAP的TIDB,未来在市场上,我觉得不管青云愿不愿意,都不可避免与之产生竞争,那RadonDB将如何与竞品竞争?您觉得RadonDB核心竞争优势是什么?
张雁飞:首先,有这么多竞争产品的出现,这对用户来说是利好的,因为大家多了一个产品选择。然而,其他家的开源数据库都不是基于MySQL的研发路线,可能从上面的SQL层,到下面的存储层,都是企业自己重新研发的,再与高可用融合起来,就变得非常复杂。因为我本身以前是做数据库内核的,对这个领域比较了解,要实现一个类似于MySQL的存储层,企业的投入会非常大。所以对于完全自研的竞品,他们其实会花费非常多的时间和成本,持续的投入改进。
所以我们在存储层选择了MySQL,我们选择MySQL好处是什么呢? 可以借助一整个开源社区的力量,为MySQL的性能做保障。MySQL最近几年,社区非常活跃,从5.7到现在的8.0,目前已经GA,跟以前已经不太一样。现在,Oracle也看到了问题所在,如果封闭不努力,就会被其他的竞品追上。所以,这就等同于我们背后有这样强大的社区力量支持,MySQL只要一更新,我们就实时的更新过来,存储更稳定。我们如果发现需求,也会提醒官方修改,这样才是真正的互利共赢,这是基于MySQL一个好处。假设我们不基于MySQL,再造个笼子自己研发存储,估计到现在可能还没有研发完存储,更别说整个产品了。
RadonDB充分发掘了新一代英特尔至强可扩展处理器的能力,特别是其集成的全新英特尔AVX-512带来的更为强悍的运算能力,进一步优化了自身的数据库性能。RadonDB也将采用3D XPoint技术的英特尔傲腾固态盘作为分布式数据库缓存,进一步提升吞吐量和更低的访问延迟,给用户带来非常好的体验。
基于MySQL还有一个好处,它不止有存储,还有良好的计算能力。而在NewSQL里面,存储是单方面的功能,另外的计算能力是必须又投入一波人做计算。RadonDB是将传统的MySQL和NewSQL的功能融合起来,实现两者的优势功能,但整体的技术路线完全不同。
但是今天从交流来看,很多对分布式数据库感兴趣的专家对这个方案很感兴趣,这就是MySQL和NewSQL融合带来的竞争优势。MySQL有很好的用户基础,包括应用场景也更丰富,在社区力量支撑下,我们可以更专注上层SQL和高可用,相对其他研发路线RadonDB的使用门槛更低。
下面这个问题来自于社区一个网友,他们发现RadonDB里有一个高可用独立工具MySQL Plus,想问,这个工具那里能够下载到?
张雁飞:MySQL Plus是基于高可用工具的产品,随着RadonDB的开源,MySQL Plus也随之开源,在开源官网可以找到下载。
亚马逊AWS的CEO说,数据库是云计算的下一个战场,青云作为一个云计算厂商,您作为一个数据库领域专家,怎么看待这个问题?
张雁飞:其实,我们青云2014年就推出了数据库服务,比如Redis、MongoDB。推出这些数据库服务不是因为厂商想布局什么,而是切实根据用户需要而诞生,因为从云厂商的角度,用户在云环境中不仅需要云主机,还需要周边配套的生态,比如说优先级较高考虑的数据库。所以我们很早就开始提供数据库服务。
如果一个云计算厂商没有数据库服务,只卖主机,我估计前途堪忧了。目前来看,数据库服务是用户量比较大,需求比较迫切的服务。