共计 2826 个字符,预计需要花费 8 分钟才能阅读完成。
上周六(8 月 13 日),涛思数据举办了成立 5 年来的首次 TDengine 开发者大会,近 400 名开发者和客户齐聚。大会的重要议程之一是发布 TDengine 3.0 版,并将其核心代码全部开源。37 万行产品源代码、23 万行测试代码以及 181 份共 13.6 万字的完整文档,已在 GitHub 上公开,供全球开发者下载、查看与体验。
TDengine 是一款时序数据库,3.0 版本成功解决了业界困扰已久的高基数问题,能够支持 10 亿个设备采集的数据,集群规模可超 100 个节点。除强大的水平扩展能力外,3.0 实现了存储计算分离,计算与存储资源可弹性伸缩,采用 RAFT 协议保证数据一致性,确保系统高可用,使其成为真正的云原生数据库。3.0 重构了计算引擎,更出色地支持标准 SQL 查询及时序数据特有查询,让时序数据分析高效且简单。3.0 还优化重构了缓存、消息队列、流式计算的实现,成为极简时序数据处理平台,大幅降低系统设计复杂度及运营维护成本。
自 2016 年底写下第一行代码,TDengine 已走过 5 年,历经 1.0、2.0 版本,发展至如今的 3.0。作为从 1984 年就开始写程序的持续创业者,虽享受技术创新过程,但三家公司的创业经历让其深知,产品关键在于挖掘并满足“用户需求”。
中国企业类、基础类软件成长的怪圈
中国企业软件、基础软件发展深陷怪圈。以中美软件对比为例,20 年前中国软件不如美国,如今大众类软件如微信、飞书等已超越美国同类产品。这并非因中国程序员更聪明或能力更强,而是中国用户群大、竞争激烈,用户需求推动产品快速迭代升级。然而,企业类软件、基础软件领域,中国与欧美相比仍较落后。并非中国程序员不想或能力不足,而是企业类软件普通企业无买单能力,有能力的多为政府、国企和军工,其定制化需求多,导致企业类软件公司沦为做集成、做项目的公司,难开发全球通用的标准化产品,难以规模化。比如用友财务系统,虽有 30 年研发历史,但仍问题诸多,核心原因是用户数不够,迭代升级慢。
中美程序员技能差别不大,关键是要给中国程序员真正的需求和问题,他们定能解决。TDengine 创始团队四位程序员中,除廖博士外,其他人起初无研发数据库经验,但 5 年后在时序数据领域成为专家。好产品源于用户需求,只有获取足够多客户需求及用户反馈,才能不断打磨迭代产品。支持 10 亿设备数据采集看似困难,实则可解决。因此,无法短期内获取大量用户和场景,成为企业类和基础类软件正确快速发展的最大障碍。庆幸的是,开源成为破局利器。
开源打破怪圈,带来巨变
2019 年 7 月 12 日 TDengine 单机版开源,10 多万行 C 语言代码上传至 GitHub,受到开发者社区热烈欢迎,不到四个月 GitHub star 达一万,多次位居全球趋势排行榜首位,获众多赞美。但同时也收到专业批评,如多线程处理有瑕疵、模块结构不清、耦合过重、多维度聚合分析在某些场景低效、乱序数据处理效率低等,还被指出未建立标准 CI/CD 流程,难以保证质量。
秉持开放心态,TDengine 团队于 2019 年 12 月启动 2.0 开发,8 位程序员日夜奋战解决技术问题。2020 年 8 月 TDengine 2.0 正式发布并开源集群功能,再次获全球开发者关注。但赞美之余,又发现新问题,如集群有时不工作、数据同步设计有漏洞、SQL 支持不彻底、未真正解决“High Cardinality”问题、系统重启时间长等。
2021 年 6 月决定启动 3.0 开发,不仅要解决现有问题,实现标准 SQL,融合数据库、流式计算、缓存、消息队列,打造实用的极简时序数据处理平台,还要设计真正的云原生时序数据库。此次组织了 40 人的全职研发团队,TDengine 第一个演示版本由一人耗时两个月开发,1.6 版本由 4 个程序员完成,2.0 版本由 8 个程序员努力,3.0 版本则凝聚了 40 个程序员的汗水。
从开源至今,GitHub 上 TDengine 的 issue 超一万,用户微信群近 20 个且每日活跃。开源为 TDengine 找来高质量的设计评审、代码评审、系统测试,大大加速产品迭代升级。若无开源,TDengine 不可能在三年间有 13.9 万安装实例,不可能在多地收获客户,产品的问题及需求也难被发现,更无法快速迭代升级,即便团队成员能力再强,也难与欧美大公司竞争。
用户才是技术进步的推动力
2016 年底设想 TDengine 应用于汽车、能源和 IT 运维行业,开源后其适用场景几乎覆盖所有行业,包括物流、智能制造、金融、煤矿、建筑工地、石油、石化、钢铁厂、卷烟厂、啤酒厂、农业、畜牧业等,众多行业巨头如蔚来、理想、零跑汽车,西门子、顺丰、中通、大疆、OPPO、京东、TCL、玉溪卷烟厂、中天钢铁、同花顺等都在使用。
通过海量用户,了解到诸多意想不到的需求。如起初未考虑时序数据乱序问题,与车企交流后才意识到并打补丁解决,导致运行效率低、代码丑陋;未想过一个设备能采集几千个物理量,与风电企业交流后修改设计支持 4096 列;未料到物联网上报数据有空值且比例大,遂修改设计;推出连续查询后,根据制造业和车联网企业客户需求,增加 session 窗口与 state 窗口功能;意识到光有时间窗口驱动的流式计算不够,还需支持事件驱动的流式计算以降低用户数据平台复杂度和成本;根据能源、制造等行业用户需求,抽象出 TDengine 独有的数据订阅功能。
若无开源和海量用户,听到的只是少数付费客户声音,其需求可能不代表行业真实需求。TDengine 推出的极简时序数据处理平台、特殊分析函数、宽表支持、多达 128 个标签(包括 JSON 格式标签)、Schemaless 写入等,都是倾听众多开发者用户声音后的成果。深刻意识到用户是技术进步的推动力,是成功产品背后的英雄。因此在 TDengine 开发者大会上,首先邀请用户代表分享使用故事。
你的反馈,我们前行的勇气
中国基础软件发展并与全球巨头竞争是 IT 人梦想,将 TDengine 打造成全球第一的时序数据库是创业目标。要实现此目标,需认真倾听用户反馈,提升产品品质服务用户。中国企业类软件仅占全球 10% 市场,TDengine 必须全球化,要有英文文档、英文技术社区,吸纳更多用户,发现更多场景和问题,加速产品迭代升级。
选择将核心代码全部开源,无论付费用户还是开源社区用户,无论身处何地,登录 GitHub 对 TDengine 的任何互动,如 star、fork、提 issue、吐槽、报告问题等,都是最大支持,是产品迭代升级的动力。过去因用户支持鞭策迭代到 3.0,未来只要大家继续下载、体验、测试并使用,就能解决问题,不惧国际巨头竞争,将 TDengine 性能和用户体验做到极致,使其成为时序数据处理的事实标准、全球第一的时序数据库。特别欣赏丘吉尔的话“Success is not final, failure is not fatal, it’s the courage to continue that counts”。TDengine 开源仅三年,未来路长且困难重重,但唯有坚持才能实现梦想。