提高你的思维水平
介绍
2020年8月3日,陶思数据团队正式宣布物联网大数据平台TDengine集群版开源。为了这次开源,我们在GitHub上上传了23.9万行源代码、1198个源文件,其中包括我在疫情期间写的1万多行C代码。终于如愿以偿,再也不用担心了。我们18人的团队通过三年的努力,为全球物联网、工业互联网、车联网行业奉献了一个开源、超强性能、分布式集群功能的专业大数据平台。
2020年8月3日,陶思数据团队正式宣布物联网大数据平台TDengine集群版开源。为了这次开源,我们在GitHub上上传了23.9万行源代码、1198个源文件,其中包括我在疫情期间写的1万多行C代码。终于如愿以偿,再也不用担心了。我们18人的团队,通过三年的努力,为全球物联网、工业互联网、车联网行业奉献了一个开源的、具有超强性能和分布式集群功能的专业大数据平台。
TDengine 单机版在去年 7 月开源后,反响非常好,下载量过百万,每天有上百个代码克隆,正式上线的系统有几百个。除了中国用户,还有来自美国、德国、法国、意大利、西班牙等世界各地的开发者。这些开发者今年给我们最大的反馈就是“TDengine 性能超强,确实比 Hadoop 快很多,安装部署也很简单,但我们需要集群,需要高可靠性,需要处理大量数据的解决方案。”
TDengine 2.0系统模块图
其实TDengine从最开始就是为集群设计的,是基于硬件和软件系统不可靠,一定会失效的假设而设计的,是基于任何一台计算机都没有足够的能力处理海量数据的假设而设计的。只不过作为商业公司,我们需要考虑如何盈利。业界其他同类产品都是只开源单机版,集群功能都包含在企业版中,需要付费才能使用。所以,我们在一年前宣布开源的时候,按照惯例只开源了单机版。但我一直在想:开源就开源最核心的代码,开源市场刚需的那部分代码,把自己最漂亮最吸引人的部分展现出来,否则开发者为什么要用你的?核心痛点不解决,就会出现很多替代品,产品本身的推广就会大打折扣,开源的价值也会大打折扣。
单机版开源后的市场反馈更加坚定了我的想法:集群是刚需,是现实痛点。我想过把集群版开源。但集群作为刚需,一直是我们销售的亮点,如果开源了,怎么盈利?这个问题困扰了我很久,当我提出要在业界率先开源集群版本时,我的队友特别是销售团队直接提出了质疑和反对。
2019年底,我终于想通了,决定把集群代码开源。当时是基于以下几点:1、对于大数据平台来说,没有集群,就是一个玩具,一个演示,不会有人当回事;2、开源是基础软件行业的大势所趋,谁先真正拥抱开源,而不是假开源,谁就抢占了先机;3、只要全球有30%以上的物联网平台在使用TDengine,只要能为用户创造真正的价值,公司就一定能找到生存和成功的方法。
除了开源集群版本的呼声,我们还收到了无数来自开发者的反馈:BUG、性能问题、功能问题等等。TDengine 在 GitHub 上的 Issue 数量已经超过 2800 个。看到这么多 Issue,一方面觉得很惭愧,没想到会有这么多问题,但另一方面又很开心,说明很多开发者是真的在使用我们的产品,并且很喜欢我们的产品。我们找对了市场,我们的产品是有价值的。
于是,在2019年底,除了集群版本的开源,我们还决定对TDengine的一些模块进行重构,包括存储引擎、计算引擎、集群模块等。这两个决策都需要很大的工作量。因此,除了创业之初的将领胜良、小廖、洪泽,团队的新鲜血液博敏、李晖、易浩等同学也加入进来,参与核心代码的开发。另外,为了保证质量,大幅提升产品稳定性,我们引入了研发专家书多、肖平,让他们来构建CI/CD,负责自动化测试,写了5万多行Python程序,近千个测试用例。我是一个1968年出生的程序员,虽然年纪大了,但是我还是像往常一样奔波在第一线,重构了RPC、WAL、SYNC等模块,写了1万多行新的C代码,向GitHub提交了155多个PR。
陶寺数据团队,拍摄于2019年10月
我的合伙人也是个50多岁的程序员,20多年前他还是纳斯达克上市公司的CTO,是亚马逊和思科的资深副总裁,他撸起袖子开始写程序,还从零开始学Python,写了crash_gen.py(2800行),做并发和系统破坏性测试。这个程序让每一个研发同学都心惊胆战,因为它是专门找茬的,暴露出来的问题往往让人摸不着头脑,但一定是程序问题,刚开始连30步都跑不出来,现在终于可以无限跑了。一年多前我第一次拉拢他加入的时候,他并不太感兴趣,但我跟他讲,未来世界上90%的数据都是时序空间数据,如果大家都用TDengine来存储和查询,我们公司就算不赚钱集群软件 开源,也是人生最自豪的事情,是可以在人类信息技术史上留下印记的事情。他最终毫不犹豫地加入,和大家一起精心打磨产品,目标只有一个,做出一款有品味、能占领全球市场的产品。
今年的新冠疫情给全球经济带来了沉重打击,但我们这个小团队抽出时间静下心来重构代码,历经八个月,牺牲了所有的周末,终于推出了2.0集群版本。虽然我们没见过凌晨四点的洛杉矶,但我们经常看到凌晨四点的GitHub。如果说去年开源版本能打60分,那我会给2.0版本打80分。不仅因为集群开源,而且代码重构之后,逻辑更清晰,模块划分更合理,易于维护和扩展。更重要的是,我们开源了测试框架和近千个测试用例,并分享了完整的设计文档。我自己写的整体架构设计、数据复制模块设计等文档,都已经公开在官网,供大家浏览和指正。
做一个60分的产品不难,如果你有好的想法,会写点程序,立马就能做出来。但要做到80分,就得付出更多努力。我的目标是做一个能拿99分的产品,因为到了99分,你就无敌了,你的技术生涯就画上了一个完美的句号。但是从80分到99分,比从60分到80分,需要付出10倍以上的努力。好在我们已经有一个非常优秀的产品团队,有GGV、红杉、明势资本等机构超过2000万美元的投资。我相信,只要我们能坚持做产品、坚持专注,就一定能做到99分。
我一直觉得自己很幸运,90年代初自己去了美国留学工作,赶上了美国互联网行业的大爆发。恰逢中国经济腾飞,我又回到北京创业。如今,临近退休的年纪,却找到了一个全新的机会,而且是一个特别适合程序员的机会——开发底层软件。不但要设计整体架构,还要写代码、调试、写文档。每天和80后、90后的同学们一起奋战,乐此不疲。每当想起这些,我都会庆幸三年前的选择,也庆幸自己选择了开源这条路。如果没有这个选择,我和妻子应该会周游世界,品尝美味佳肴,陪她逛美术馆和博物馆,过着人人都羡慕的生活,但我想,那才是真正的随着时间而变老,因为这个世界已经不再需要我的存在。
集群版本开源了,可能付费用户真的会减少,但是顺其自然吧。我绝对不会像有些厂商先开源再闭源集群软件 开源,只要有人用,很多人用,就是对我和我们团队最大的回报。哪怕大家批评我,指出各种问题,我也会很开心,因为只要有问题,我们就会改进,用心去做。哪怕有一天我们连18个人的团队都养不活,我也会继续做下去,每天用心打磨产品,直到我搬不动的一天,因为这是我最大的乐趣。我把TDengine当成我人生最后的作品,是一个我可以一直打磨到老的作品。
一年前我开源的时候就说过:“一个人无论有多少钱,都很难在历史上留下痕迹,但好的艺术作品却可以流传后世供后人品味。希望我主导开发的TDengine能成为流传千古的杰作,在世间留下印记!”()。今天,我再次重写这份“初衷”,希望集群版的开源能让TDengine离流传千古的杰作更近一步。
关于作者:本文作者陶建辉,为陶思数据创始人,1994年赴美留学,1997年至今在芝加哥摩托罗拉、3Com等公司从事无线互联网研发工作。2008年初回京创办禾信,后被联发科收购。2013年初创办开心妈咪,后被太平洋网络收购。2017年5月创办陶思数据(taosdata.com),专注于物联网大数据的处理。产品TDengine开源后,连续多日位居GitHub全球趋势榜首。陶思数据已获GGV、红杉、明势资本等多家机构逾2000万美元投资。本文于2020年8月4日发布于微信公众号《爱转身的程序员》,风云知声获授权转载。