登录
首页精彩阅读专访 | PingCAP黄东旭:我们诞生在中国,但玩出了世界级技术
专访 | PingCAP黄东旭:我们诞生在中国,但玩出了世界级技术
2016-09-01
收藏
PingCAP 联合创始人&CTO 黄东旭,一定是传说中的「别人家的孩子」:小学三年级开始写代码,四、五年级学 C 语言,高中时就开始用 Linux,还喜欢画画,会玩摇滚……单看履历,已然感受到了一万点伤害。


PingCAP 联合创始人&CTO  黄东旭

而在见面之后,言谈之中,你就能理解这位别「人家的孩子」之所以成为传说的原因——真正的热爱,以及对极致和完美的追求。因为从小就开始接触,编程这件事情对黄东旭来说,从不是糊口的手艺,而是一项值得付出心血和时间的事业。他在自己喜欢的领域内不曾停下脚步,直到现在,走到了PingCAP。

在加入PingCAP之前,黄东旭曾任职微软亚洲研究院、网易、豌豆荚,一直负责基础软件相关的工作。在豌豆荚,黄东旭遇到了刘奇和崔秋,三人对于分布式数据库的未来同样寄予厚望,一拍即合,便集结小伙伴创办了PingCAP。

上世纪70年代,IBM发明了关系型数据库。但是随着现在移动互联网的发展,接入设备越来越多,数据量越来越大,业务越来越复杂,传统的数据库显然已经不能满足海量数据存储的需求。虽然目前市场上也不乏分布式数据库模型,但没有品位的文艺青年不是好工程师,黄东旭觉得,不,这些方案都不是我想要的,它们不够美,鲜少能够把分布式事务与弹性扩展做到完美。

直到2012年底和2013年初,他看到Google发布的两篇论文。

这两篇论文描述了Google内部使用的一个海量关系型数据库F1/Spanner,解决了关系型数据库、弹性扩展以及全球分布的问题,并在生产中大规模使用。“如果这个能实现,对数据存储领域来说将是颠覆性的”,黄东旭为完美方案的出现而兴奋,PingCAP的TiDB在此基础上诞生了。

黄东旭解释道,TiDB是一款代表未来的新型分布式NewSQL数据库,它可以随着数据增长而无缝水平扩展,只需要通过增加更多的机器来满足业务增长需求,应用层可以不用关心存储的容量和吞吐;TiDB使用多副本的数据存储和无状态服务节点,依赖Raft分布式选举算法确保多个存储副本之间的强一致性以及完全自动的故障恢复,副本自控跨地域部署在不同的数据中心,主副本故障时自动安全切换并恢复,真正实现异地多活。用黄东旭的话说,“它自己会生长”。

除了颠覆性,TiDB的特殊还在于它的存在方式。作为开源精神的忠实拥趸,黄东旭与他的合作伙伴一开始就选择了开源的道路。他不无骄傲地说,“我们在GitHub上累计获得了5000个Star,这是一个世界顶级开源项目的水准。”开源的方式吸引了来自各个国家和领域的高手,这决定了PingCAP虽然诞生在中国,却玩出了世界级的技术高度,在世界舞台上打出了一片天地。

虽说是开源,但黄东旭并不担心这个项目的生存。足够硬的技术,并能真正解决用户的痛点,黄东旭认为这是最朴素也最有效的商业模式。这两点,PingCAP似乎都不缺。

 
记者手记

与黄东旭先生的交谈发生在八月初,但直到近日才有功夫整理出来。讲真,黄东旭先生是我第一个主动要求合影的采访嘉宾(请忽略我的迷妹本性)。与他的交流也让人感觉很特别,但特别在哪里,当时不甚了了。

上个周末,五月天的演唱会刷屏了。没去现场也知道,他们唱了一首新歌,叫做《顽固》。我对这首歌有印象,是因为它的MV,它讲述了在庸常生活中,那些「初心」的珍贵和难忘。

突然之间,我有些明白,黄东旭先生给人的那点特别的感觉,也许就是这种「初心」。他从少年时开始,对自己热爱的东西从未改变心意,并且能从中享受到乐趣,何其令人歆羡。

非常有幸,我们邀请了黄东旭先生参加这一次的CDAS2016中国数据分析师行业峰会,他将在数据库与技术实战分论坛「分布式数据库与反模式」为主题进行分享,时间为9月4日,上午9:00-12:00,第二会议厅C区,欢迎小伙伴们也能来到现场与他面对面交流。最好,你们也都能怀着初心而来。

CDA:当时为什么要创办PingCAP?

黄东旭:我在豌豆荚认识了刘奇和崔秋。当时在豌豆荚做另外一个开源软件叫Codis,也是分布式缓存的开源数据库。我们一直觉得的关系型数据库这块没有一个好的解决方案。

一直以来,大家正在用的数据库没有弹性扩展功能,在海量数据的体量下还能保持像SQL ACID Transaction事务模型这样的比较理想的数据库。当时也很苦恼,整个大数据的软件栈就缺这个东西。现在整个开源社区也好,还是商业的方案,都没有太好的。

后来我们看到Google的两篇论文 Spanner /F1,这两篇论文描述了Google内部使用的一个海量关系型数据库。可以说,Google算是第一个解决了关系型数据库、弹性扩展加上全球分布的问题,并在生产中大规模使用,开创了整个NewSQL领域。我们看到这个论文很激动,终于有人做出了这个模型,我们觉得自己也能搞定。

这个东西门槛非常高,很困难,但如果能做出来,能颠覆现有的关系型数据库市场。但我们也不畏惧这样的复杂问题,决定去专注做一个面向未来的新型数据库,而且是完全开放源代码,所有东西都开放。

我们比较重视分享,我们的核心技术,包括Milestone、Roadmap、Document都是开放在Github上。现在公司涉及了两个项目,TiDB和TiKV两个加起来在Github上共有5000多个star,应该是这个领域里世界最顶级的项目了。

我们的项目在国外比在国内还更有名一些,它是从最底层的设计上就颠覆了原来所有的模型,代表了很前沿的东西。我们希望把我们的理念和源代码以及设计都让大家看见,什么才是代表未来的方向,这也是我们为什么要选择开源。

现在国内大部分厂商还处在听、看、用这样的阶段,还没有办法根据自己的需求和想法去引领一个社区。很多数据分析师习惯去找现成的产品,很少自己或者drive一拨人去立一个项目,写出一个东西在社区内推广。但这个趋势在慢慢变好,在北上广这些IT公司技术能力越来越强,对于基础软件的想法和掌控能力越来越好,硅谷和中国的差距在慢慢缩小,中国也开始产生一些世界顶级的开源商。

最近几年中国出来的顶级项目背后基本上都有一个我们这样真正以开源项目为核心产品的团队。这种公司在美国很多,比如Docker、MAsource、OpenStack等等,在美国已经不是稀奇事。

CDA:与其他数据库模型相比,PingCAP要做的东西有什么本质上的区别?

黄东旭:上世纪70年代,IBM发明了关系型数据库,大家都在用。但是随着现在移动互联网的发展,接入设备越来越多,数据量越来越大,业务量越来越复杂。单机型的数据库的问题在于,同类业务数据的存储量就是一台机器,相当于一个杯子不停灌水,迟早会溢出来,数据就存不下了。这个问题是最近10年才出现。

后来就有一些比较笨的办法——多弄几个水杯。但业务其实是一种业务,这就需要有很复杂的逻辑去控制请求一部分数据存这里,一部分数据存那里,错了就不行。再去扩展的时候,还需要把一部分数据从原来的机器挪到新的机器,这个过程非常复杂,劳民伤财。一般大公司都会有一个专门DBA团队专门做这个,特别像是在双十一 、6·18这种大促的时候,数据库的压力非常大,可能要提前两三个月做数据库容量的扩展。

理想的情况是什么呢?可能还是一个杯子,这个大杯子由许多小杯子组成,我不停地往里灌水,但杯子自己会变大。相当于一个小孩子,你喂他吃东西,他自己会长大,这叫弹性扩展。

关系型数据库的弹性扩展是很难做的,原始的关系模型在70年代就发表了,他可能压根就没想到数据库会跑到这么多台机器上。直到2010年左右,Google终于搞出了一个新的模型,在内部推行。Google可以说世界上数据量最大的公司,一直在与这个问题做斗争。Google在全球有这么多业务,但它只有一个数据库叫Spanner,上千条业务线只用访问这一个数据库。全球五大洲都有他的数据中心,这些数据分布在全球各个数据中心,大概有上10万台的物理节点。

这个数据库的设计是第一个将关系型数据库的理论与弹性扩展的逻辑结合在一起的模型,它在2012年底到2013年初发布的两篇论文。但是Google没有办法真正开源,因为太庞大了,而且Google做的东西都是叠罗汉式的开发,如果要开放自己的数据库,就必须把基础设施都开放出来。

但Google作为一个希望能够引领行业的公司,还是决定把这个模型share出来。这种事情Google也不是第一次干,比如Hadoop其实就是Google在2003-2006年间3篇论文的实现。我们认为2012、2013年的这两篇论文跟当年的Hadoop同样重要,甚至意义更大。

这个系统有什么好处呢?现在大多数已有的方案都是在小水杯上插管,水满了之后通过管子流向其它的杯子,或者是在业务层做划分,A业务访问这儿,B业务访问那儿,但都没有真正直面问题解决问题。现在很多人把数据库和数据仓库的概念割裂开来,也就是说大数据平台是大数据平台,业务数据库是业务数据库,它们之间需要离线倒腾数据,然后再做分析,那为什么不能变成一个巨大的Database呢?

我们与传统的方案最大的区别就在于,看上去与单机数据库一样,但它可以弹性扩展,容量不够了,可以直接往集群里启动一台新的机器更进去。我们也不对硬件做任何假设,不管是什么机器,只管往集群里丢。

还有一个比较核心的功能是,刚刚提到Google的数据库是遍布在全球各个数据中心的,这个好处是什么呢?你从来没听过Google因为某个机房光纤被挖断就停止工作了,异地多活,砍掉一个,其他的也不会受影响,仍然正常运转。而且,过一段时间它会发现数据中心的小伙伴不见了,会再去跟其他的数据中心或者部署了这个数据节点的机器修复数据,重新长出来。

目前我们应该是唯一一个能够做到异地多活的数据库。它的内部就像是细胞,它会做有丝分裂,一个分裂成两个,两个分裂成4个,细胞是这个系统的最小单位,它会均匀地分布在各个机器上。你可以感觉到这个系统是活着的,我们作为数据库的开发者,并不清楚数据在数据库中怎样流动、分布、分裂,这由这个数据库自己决定,好像有一个大脑指挥。

CDA:开源和商业化之间矛盾吗?怎么解决这个问题?

黄东旭:开源不等于不做商业化,开源不分国界,技术也不分国界,我们的理想并不是只做一个中国的开源项目。其实,如果不知道我们公司在北京,多数人不会认为这是个中国的项目,社区内参与的人来自多个国家各种行业,所以这更像一个国际化的项目,我们只想做全球最顶尖的技术。

至于商业路径,我们的想法是不能说只做中国市场,而是反过来,要世界上打出名气,确实能让大家知道这个东西的质量非常高,代表未来,大家都在follow你,再回过头来进入中国,这个路径可能会更顺畅一些。毕竟我们现在IT行业的水平跟硅谷还是有点距离,大家还处于学习的阶段。

另一方面,开源不等于免费,我们的数据库内核是开源的,但商业公司并不会因为开源而不付费,那他可能就得不到support。对开源项目来说,用的人越多,就越能够成为事实标准,比如说你有100个用户,其中三五个大客户愿意为你付费,就很牛了。

我们也设计了一些商业选件,比如监控工具、管理工具、安全插件等。数据库的问题是很多企业的痛点,尤其是在传统行业中,他没有互联网公司那么强大的架构能力和扩展能力。所以他们一直在跟互联网取经,但目前很多方案都非常复杂,很难一下子吸收,所以我们是直接把最先进的东西打包在一起,与原来的操作没有多大区别,但可以直接获得最先进的大数据扩展能力。

所以商业的问题,首先要真正有两把刷子,第二真正解决了用户的痛点,这就够了。这是最朴素也最有效的商业模式。

CDA:您一直强调开源精神,那么什么才是真正的开源精神?

黄东旭:Opensource最核心的精神就是分享和沟通。沟通很重要。现在很多国内的开源项目只是开放源代码而已,其实源代码只是整个opensource精神内涵中很小的一部分。开源不仅仅是码代码,而是大家自发地聚集在一起做一件有意义有意思的事情,这个过程中各种各样的问题都是需要沟通的,但现在国内很少有人在认真地做这件事情。在我看来社区比源代码更重要。

第二,我们是希望能够在国内树立一个做开源项目的标杆,让大家知道世界级的开源项目该怎么做。现在国内已经有很多人和大公司已经在扭转观念,不能再闭门造车,特别是基础软件,闭门造车是很困难的,你需要大量的用户做测试、反馈,所以开源是一种更好的软件分发的方式。不能藏着掖着,心态开放,得有自信去引领整个社区,大家齐心协力把这个东西做好。开源社区里有一条不成文的规则就是,当一个问题得到完美解决的时候,不会再有第二个人尝试,所以先发者是有优势的。所以我并不太担心这个东西开源出去之后就被人拿走了,我们最宝贵的资源不是那些代码,而是这些社区的管理者以及我们之间的沟通配合。

CDA:你想给想要进入这个领域的人什么建议?

黄东旭:我们这个领域算是大数据中的一个细分,属于基础设施,分布式系统的开发更偏向于编程相关的工程能力。其实我们公司很多人刚加入的时候,相关的经验也不多,只不过他们都非常热爱这项工作。

在我看来编程能力反而不是什么硬的门槛,只要智商正常,大家都能搞。兴趣和激情是更重要的东西,不害怕接受挑战。很多人还没开始做,就有一种畏惧心理。你要对这项工作有兴趣和决心。我和我们的CEO很热爱这项工作,也长期关注这个领域,可以带着大家一起做。

在这个行业里面,工业界是走在学术界前面很多的,如果你是一个在校大学生,眼界要放开阔一点,开源社区中做出来的东西或者像Google这类大公司发布的论文远比你在实验室里做的东西先进的多。如果有志于这个行业,可以尽早地让自己在大公司里实现,接触当下真正在用的思想和理念。对于从业者来说,如果有兴趣,不要畏惧困难,真正参与到社区里来。


想参加CDAS2016中国数据分析师行业峰会,请点:

http://cdas.cda.cn/?utm_source=cda.cn&utm_medium=cpc&utm_campaign=syhd


数据分析咨询请扫描二维码

客服在线
立即咨询