TDengine,这款定位为“专为物联网而生的大数据平台”,引爆了2019年夏天的软件圈。

2019年7月12日,涛思数据宣布将TDengine的内核(存储和计算引擎)以及社区版100%开源。

2019年7月14日,涛思数据、TDengine创始人陶建辉发表文章《比Hadoop快至少10倍的物联网大数据平台,我把它开源了》,仅个人公众号阅读量便突破10万+。

2019年8月14日,TDengine开源一整月成绩单:GitHub上star数9100+,fork 2400+,issue 300+,安装包下载数突破10万,付费版意向客户150+。

《科创人》专栏有幸约访到陶建辉,记录下这位60后程序员的成长心路。

板砖录音机还是稀罕物的年代

他用磁带存下代码

1984年2月,邓小平提出“计算机要从娃娃抓起”。不久之后,陶建辉就读的中学收到了一批电脑。陶建辉还能忆起那个下午,包括他在内的8位尖子生被召集到一间新教室中,桌子上摆着电视、录音机,还有一个奇怪的东西——总会出现在计算机行业前辈们怀旧文中的一代神机,Laser 310。

▲ Laser 310,cpu为z80,64k内存,没有操作系统,采用BIOS build-in的BASIC解释器,开机后可以直接运行BASIC语句。视频输出至小电视上,据说显示效果很伤眼睛。存储设备为磁带+板砖录音机,输入保存命令的同时按下录音按钮便是保存。

计算机有了,可没有计算机老师,孩子们只好凑钱买书自学,光一个“赋值语句”就让这些智商在线的尖子生挠头了一个多礼拜。高考在前,哪还有那么多时间学这怪东西?5位孩子打了退堂鼓,陶建辉和另两位好友却为计算机着了魔。

高一上手,到了高二略有小成,陶建辉看着班主任敲算盘统计成绩太累,小试牛刀地鼓捣了一套统分程序,敲敲键盘录入成绩,程序便自动列出排名、计算平均分。这是陶建辉编制的第一套具有实用性的程序,自此一发不可收拾。

如今看来,陶建辉在中学时期就展露出了伴其半生的特质:过人的智力、好奇心、定力、自学能力,以及“凡事上上手”的工匠品性。

有趣的是,计算机三烧友的人生轨迹十分类似:大学期间全都没有就读计算机专业(出国学天体+1、清华学生物+1、湖大学汽车+1),工作后,又全部从业于计算机行业。

两款跑了30年的程序

姐姐的财务软件,中科大的LB膜天平

“自己究竟想要的是什么?”人生里总有一部分岁月,要被磨耗于搞清楚这件事情,无非有人觉醒自困境,有人自省于顺境。

陶建辉大学没有选择计算机专业的原因有二:第一,编程太简单(谨代表陶建辉个人观点);第二,学理科将来方便出国——和当年很多年轻人一样,陶建辉也十分向往美国的生活:师从于学界顶级大师,享受全球一流的科研软硬件,毕业后谋得待遇优渥的工作,24小时的热水……

天分与努力都超乎常人的他得偿所愿:留学美国名校进修天体物理,毕业后步入摩托罗拉、3com这类全球知名企业,不仅极大提升了个人眼界与技术能力,也赚得了不菲的收入,娶妻买房,过着同龄人艳羡的生活。

可时间久了,陶建辉发现内心深处总有一个声音在不断敲打他:你的人生当不止如此。

“我在和爱人是留学那批同学里最早买房的,3000平方英尺,不算车库地下室。收入很好,能力也有提升,按理说十分充实,但心理就是念念不忘着创造出一些东西时的乐趣,打工无法带给我那种满足感。”

最初体会到这种创造的乐趣,是他大学时期制作的两款作品:

▲上图为账务系统。陶建辉一面表达着自己的欣喜得意,一面不忘感叹一句“Windows真厉害,DOS系统写的东西在20多年后的新系统下还能正常运行”。

下图为LB膜天平,界面显示着陶建辉姓名的拼音,版本号定格于1992年2月。

1993年暑假,陶建辉看到做财务工作的姐姐疲于应付枯燥又庞大的计算量,便用三周时间制作出了一款名为“建辉电脑”的多公司做帐系统。

此前一年,他就读于中国科技大学期间,为材料系高分子LB膜实验室制作了LB膜天平。陶建辉用了整整一个学期时间搞定了这款硬软件一体化的作品,个中酸楚一言难尽,成就感却也是满满。有两个让他毕生难忘的细节:一是进到实验室的第一天,一眼看到一台配有VGA显示器的286,当即决定赖住不走;二是,何平笙、李春娥两位老师30年前向学生们灌输的理念:一流的科研成果一定是自己研制的仪器做出来的。

▲2015年春节,陶建辉邀请何平笙、李春娥二位恩师同游柬埔寨。

“这就是今天总说的自主创新精神,这句话一直提醒着我,要靠自己的底层建设奠基自己的上层体系。”

若干年后,陶建辉决心创建涛思数据、集平生所学死磕定位于面向物联网的底层数据系统,精神动因源自于此。

和信起跑太早

快乐妈咪需求周期太短

陶建辉先后三次创业生涯,从未落败。做产品,他自信满满地喊出“我是最好的产品经理”;做营销,他成了著名营销大咖,五湖四海地被人邀请着上课。

2008年初,陶建辉归国,在北京敲出3000行代码创建了和信。在2019年开着上帝视角审视和信,会钦佩于陶建辉对移动社交的前瞻性之准:不仅在技术层面实现了一个高效、省电、省流量的移动互联网推送引擎,还实现了一系列业界领先的超前功能:同步通讯录,近似于公众号的个性手机报,PC手机双端同步即时沟通等等。

可惜VC施加了过多的盈利压力,让他最终不得不抱憾将和信出售予联发科——就在联发科完成收购后不久,whatsapp横空出世。

小憩片刻,陶建辉嗅到智能硬件春天来临,果断切入母婴这一细分市场,创建快乐妈咪,先后推出妈咪胎语仪(用于监测胎儿的心跳)、智能母婴安全秤以及胎动键等多款硬件新品,并推出了母婴健康平台。

快乐妈咪创业期间,陶建辉也偶尔参与产品环节,比如曾经潇洒地展露了一手天体物理学功底:采用分析宇宙大尺度结构的方法,写就600+行代码,搞定了技术团队始终无法解决的胎心计算问题。但他绝大部分的精力,放在了此前并未涉猎的营销领域。

天赋这东西确实存在,大部分人勤勤恳恳专注本业,磨着岁月攒经验、点技能,方能小有所成;而另一些人,稍微一努力,就凭空拔出一棵满技能的天赋树。

“面试了一些做营销的,左看右看都不满意,索性自己来。”看了看书、分析下经典案例,梳理了一套自己对于中国互联网营销的方法论……准备环节平平无奇,但一出手就风生水起。

66周年国庆,全国范围内寻求摄影机构合作,征集66位孕妇前往美国时代广场,将中国国庆气氛带到美国去。征集活动影响覆盖全国,快乐妈咪一炮而红——将有限的活动经费赋予强大的价值感,撬动了海量免费的线下渠道资源。

▲快乐妈咪为孕妇拍摄写真照,在美国时代广场刊登。

不久,2万套硬件设备免费赠送,由用户提供自己的照片、快乐妈咪为其制作成个性海报并转发,便能获赠。上万名精准种子用户海啸般转发,做出了一轮经典的SNS营销案例——在互联网社交渠道获客成本较低的红利期,敏锐察觉到人际传播的能量价值,引爆品牌。

TDengine:Leave a dent in the world

人过留痕

快乐妈咪被收购之后,陶建辉沉寂了一段时间。朋友们都在等他的续集:这位能量十足的陶电脑肯定还要折腾点什么。

他们猜对了,陶建辉又一次立了山头,可这一次与以往大有不同:没有上山下乡的调研,没有唠到半夜的走访,他就像是闭关冥想又顿悟而出的老僧,不再追求精算的生计,而是要引燃毕生信念,锻造一款传世的艺术品:一个人,连续两个月时间,每天12个小时,一万八千行代码,写出了一个高效的时序数据存储引擎,并自证其数据模型能将数据插入、查询速度提高十倍以上。

明势资本、蛮子基金天使投资到位,团队组建,2017年6月涛思数据成立,2018年8月TDengine商业版发布,2019年7月开源……

除了吸取经验教训,下决心狠控规模、力保资金健康之外,这一次重回战场,他的心态与之前大不相同:不关注营销数据,不顾虑盈利可能,不盲扩规模,甚至在宣布开源前,他都没有知会任何一位投资人。但他走出的每一步,都透着那种宏大信念接引下特有的力量感。

因为坚信正确,所以坚定不移。

投入TDengine的三年岁月,他构建起了一种以产品进度为节点的生活模式,微博和朋友圈的画风如下:

  • 某年某月某日,参加某个活动,听讲期间顺手修复个bug。

  • 某年某月某日,周日上午在公司灵感迸发,优化减少了一个配置。

  • ……

TDengine的火爆景象此文不再赘述,但陶建辉那句Leave a dent in the world,即便在无数次采访中被提过,依然要再次书下一笔。

“如果30年后,还有人在用TDengine,哪怕只是其中一个模块,其中一个函数,那就是对我的最大肯定,更希望30年后,自己还能对TDengine继续贡献代码,证明我还未老去。”

嗯……老去?

有一群DIY望远镜的孩子

1985年,长沙,几位热爱天文的少年手搭手给彼此鼓劲:接下来的一年里,哥几个要做出一台观测哈雷彗星的牛顿反射式望远镜。

找图纸,买采访,凑工具……搞不懂打磨镜片的阴影测绘法?问!

///region producer生产 - confirm模式
2
3 public RabbitTemplate getRabbitTemplate(RabbitTemplate.ConfirmCallback confirmCallback) {
4 return this.getRabbitTemplate(this.connectionFactory(), confirmCallback);
5 }
6
7 public RabbitTemplate getRabbitTemplate(www.hongyaoyuL.cn CachingConnectionFactory connectionFactory, RabbitTemplate.ConfirmCallback confirmCallback) {
8 RabbitTemplate template www.fengmingpt.com= new RabbitTemplate(connectionFactory);
9 //product开启confirm模式
10 connectionFactory.setPublisherConfirms(www.jintianxuesha.com true);
11 //设置confirm回调处理
12 template.setConfirmCallback(confirmCallback);
13 return template;
14 }
15 ///endregion
复制代码
这里通过RabbitTemplate.ConfirmCallback函数编程来传递我们自定义的回调方法,如下收集confirm返回的结果信息:

1 RabbitUtil rabbitUtil =www.yasenyuLe.com new RabbitUtil(this.getFirstNode().getLink());
2 RabbitTemplate template = rabbitUtil.getRabbitTemplate((a, b, c) -> {
3 System.out.println("firstNodeTpl -www.tongyayuLe.cn ConfirmCallback的Id:" + a.getId(www.jiuhaoyulept.com) + ";状态:" + b + ";信息:" + c);
4 });

不知道紫金山天文台的杨世杰研究员收到信的时候,是微笑于孩子们的热情,还挠头于孩子们的莽劲。

一整年,目标明确,行动有序。

“究竟有没有看到彗星?”问题到了嘴边又咽了下去。

物联网大时代必将到来,一如彗星终将光临,即便蔽于乌云之后,可它们就在那。

2019年的夏天,谈到TDengine的未来,陶建辉底气十足。

33年前在秋夜仰望星空的他,大约也是如此:眼神清澈,面容坚定。

走出半生,仍是少年。

▲陶建辉爱人陈颍的精彩手绘,内容为一家三口满世界走访天文台。全家人都是狂热的天文爱好者,心怀宇宙自然眼界过人。

TDengine陶建辉 自带聚光灯&BGM的半百少年的更多相关文章

  1. 万字详解 TDengine 2.0 数据复制模块设计

    ​导读:TDengine分布式集群功能已经开源,集群功能中最重要的一个模块是数据复制(replication),现将该模块的设计分享出来,供大家参考.欢迎大家对着设计文档和GitHub上的源代码一起看 ...

  2. 万字详解TDengine 2.0整体架构设计思路

    ​导读:涛思数据8月3日将TDengine 的集群功能开源,TDengine具有超强的性能和功能,为什么能做到?它到底有哪些技术创新?今将TDengine的整体设计文档分享出来. 1: 数据模型 物联 ...

  3. OtterTune来了,DBA怎么办

    https://blog.csdn.net/xiangzhihong8/article/details/72887476 最近AI的新闻特别多,席卷了围棋圈之后,成为了技术圈和媒体热捧的话题. 今天又 ...

  4. 【科创人·独家】MegaEase左耳朵耗子陈皓复盘创业:第一年盈利被当骗子,线下广阔天地大有可为

    [科创人·独家]MegaEase左耳朵耗子陈皓复盘创业:第一年盈利被当骗子,线下广阔天地大有可为 原创: babayage CTO科创圈  与上百位科技创业者共同关注科创人的成长心路. 文末有彩蛋:& ...

  5. 60秒定位问题,十倍程序员的Debug日常

    作者:陶建辉 这是我在 2020 年 5 月写的一篇内部博客,当时是希望研发和技术支持同学能够帮助用户快速定位 Bug,解决问题.2020 年 12 月我又迭代了一版,并还针对此进行了内部的培训.这段 ...

  6. 带货直播源码开发采用MySQL有什么优越性

    MySQL是世界上最流行的开源关系数据库,带货直播源码使用MySQL,可实现分钟级别的数据库部署和弹性扩展,不仅经济实惠,而且稳定可靠,易于运维.云数据库 MySQL 提供备份恢复.监控.容灾.快速扩 ...

  7. CCCC L2-007. 家庭房产 建图 XJB模拟

    https://www.patest.cn/contests/gplt/L2-007 题解:一开始是想直接并查集,一个家就是一个集合,对每个集合维护一个人数num1一个房产数num2 一个房产面积ar ...

  8. Gradle用户指南(3)-构建Java项目

    1.构建基本的Java项目 为了使用 Java 插件,添加下面代码到构建文件: build.gradle apply plugin: 'java' 这个就是 定义一个 Java 项目的全部.它会将 J ...

  9. Terrocotta - 基于JVM的Java应用集群解决方案

    前言 越来越多的企业关键应用都必须采用集群技术,实现负载均衡(Load Balancing).容错(Fault Tolerance)和灾难恢复(Failover).以达到系统可用性(High Avai ...

随机推荐

  1. BZOJ 1369: [Baltic2003]Gem(树形dp)

    传送门 解题思路 直接按奇偶层染色是错的,\(WA\)了好几次,所以要树形\(dp\),感觉最多\(log\)种颜色,不太会证. 代码 #include<iostream> #includ ...

  2. (60)c# com com+ dcom

    一.创建COM组件 1.创建项目 2.设置使程序集可见 AssemblyInfo.cs中flase改为ture 或者 项目属性 设置可见 3.Guid生成器 在开始程序下能够找到Guid生成器 每次都 ...

  3. jmeter添加自定义扩展函数之图片base64

    原文连接:---------https://www.cnblogs.com/qiaoyeye/p/7218770.html----------- 打开eclipse,新建maven工程,在pom中引用 ...

  4. Python 进阶_OOP 面向对象编程_self 的实例绑定

    目录 目录 self 和绑定 调用非绑定的方法 self 和绑定 在 Python 中 self 变量是特殊的, 其用于在实例方法中引用该方法所绑定的实例, 换句话说就是 Python 在实例化对象时 ...

  5. 用 Flask 来写个轻博客 (22) — 实现博客文章的添加和编辑页面

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 新建表单 新建视图函数 新建模板 在博客文章页面添加 New 和 Ed ...

  6. Java学习之线程通信(多线程(Lock))--生产者消费者

    SDK1.5版本以后对synchronized的升级,其思想是:将同步和锁封装成对象,其对象中包含操作锁的动作. 代码: //1.导入包 import java.util.concurrent.loc ...

  7. vim可视模式

    参考: http://xw2423.byr.edu.cn/blog/archives/232 http://www.pythonclub.org/linux/vim/visual-mode Vim的多 ...

  8. 用webdriver模仿浏览器 爬取豆瓣python书单

    用webdriver模仿浏览器 爬取豆瓣python书单 其中运用到os 模块 作用是生成文件夹 存储爬取的信息 etree 用于xpath解析内容 详细代码如下 可用我的上一篇博客存取到excel当 ...

  9. 在学react时候找不到static/js/bundle.js

    看如图上面bundle.js,我在项目中和配置文件中都没有找到这个JS文件,然后我就觉得很诧异,然后各种查找,终于找到一篇文章,在此记录一下 第一步:npm run start            ...

  10. Docker 在 centos 7上升级

    Docker 在 centos 7上升级 狂暴的蚂蚁 关注 2017.05.22 10:49* 字数 194 阅读 3253评论 0喜欢 1 引子 如果有旧的Docker 先删除 旧Docker版本上 ...