TDengine 3.0 三大创新详解

这篇具有很好参考价值的文章主要介绍了TDengine 3.0 三大创新详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 8 月 13 日的 TDengine 开发者大会上,涛思数据创始人陶建辉进行了题为《高性能、云原生的极简时序数据处理平台》的主题演讲。在本次演讲中,他不仅分享了时序数据库现阶段的技术痛点,还深入阐释了打造 TDengine 3.0 的原因以及实践思路。本文根据演讲内容整理而成。

在 2017 年刚开始做时序数据库(Time Series Database,TSDB)时,学物理的我想当然地认为做好数据库没有大家说的那么难,但做了 5 年后才发现,这真的不是一件很容易的事。下面我具体说说难在哪里:

  • 水平扩展性(Scalability)问题。在 TDengine 刚开发没多久时,我用一台 128 核的机器对 TDengine 进行了测试,结果性能远远没有达到预期,这件事情也让我清楚地意识到,理想的水平扩展能力很难实现。
  • 没有真正的云原生化。我个人特别坚信云是未来,数据库也一定要走向云原生(Cloud Native),但在深度研究市面上的数据库产品后,我发现大部分数据库都不是云原生,而仅仅是“云就绪”(Cloud Ready),即数据库服务提供商在转售云平台。真正的云原生数据库应该具备存算分离、计算和存储能力弹性扩张、能够在云上部署、自动化部署等特点。
  • 复杂性(Complex)问题。2016 年我看到很多人在处理一些简单的时序数据时,要把整个 Hadoop 系统搬过来,要加 HBase 层,还要把 Flink、Spark 等等全部加上,这对于研发人员来讲就是个灾难。但时至今日,这个复杂性也并没有随着时序数据库的发展得到充分的解决,只有打造一个集 Kafka、Flink、Spark、Redis 等第三方工具功能于一体的极简时序数据处理平台,这一问题才有望充分解决。
  • 数据分析能力跟不上。诸如 InfluxDB、Prometheus 等较为流行的 Time-Series Database,由于不支持 SQL,导致很多正常的数据服务、数据仓库的分析方法都用不上。结合我过往不断跨界的经验,我发现了这个问题,所以 TDengine 早就支持了 SQL,不过仍然需要优化和加强。

发现并解决上述的问题,便是我们打造 TDengine 3.0 的初衷。从去年 6 月开始,在 40 多个研发一年多的努力下,TDengine 3.0 终于在今天正式和大家见面了。

下面我们就一起看看 TDengine 3.0 是什么样子的。

云原生时序数据库

水平扩展

TDengine 3.0 三大创新详解

TDengine 的新分布式架构

打造云原生时序数据库,第一个要素就是必须是分布式架构。其实 TDengine 以前也是分布式架构,但为了实现云原生的种种特性,我们在此架构基础上引入了一个新的节点——计算节点 Qnode。

TDengine 3.0 三大创新详解

那通过云原生如何解决可扩展性问题?还是通过分片分区来解决,数据切分的方法我们没有做太多改动,TDengine 一开始就是这么做的,在时间轴上以天或周为单位对数据进行切分,同时将定量设备的数据分配给每个区(Vnode)进行处理。

跟 2.x 相比,3.0 最大的不同就是元数据的管理也变成了完全分布式的。这也是我在此前版本中吸取了一个教训而做出的改变,最开始我没想到元数据的管理如此之难。

有一次我们和涂鸦聊合作,他们要测五千万个设备的数据,TDengine 2.0 在测试中就出现了高基数问题。在 2.x 的设计中,我们的元数据统一存放在 mnode 中,这在此次测试中就成为了一个瓶颈——在进行聚合操作时,光是把五千万个设备中的标签数据拉出来就需要很长时间,聚合速度可想而知。也因此,高基数成为了我们在 3.0 版本中解决的首要问题。

现在的 TDengine 管理节点不再存储每个设备或每张表的元数据了,而是把这些元数据还有时序数据完全存储在 vnode 里,之后会用 B+ 树、一致性哈希来处理。这样一来,我们在插入一个数据到任何一个片或者一个区时都不再需要经过任何中间节点,彻底解决了高基数的问题。

经过测试,TDengine 3.0 完全能够支持 10 亿个设备、100 台服务器节点,同时整个启动时间也很快,不到一分钟整个集群就能启动。尽管此前的 2.6 也能支持五千万的设备数,但启动时间就大概要三四十分钟,设备数量多的时候不太给力。

中国智能电表至少要有十亿台,给十亿台电表做聚合操作可以说相当不容易,解决高基数问题是很重要的,TDengine 发展到 3.0 版本才算是真正把这个问题解决了。

弹性

TDengine 3.0 三大创新详解

云原生里面一个很重要的东西就是弹性,它跟水平扩展的弹性还略有不同,首先一定要把计算和存储分离,我上面说 3.0 新增了一个计算节点 Qnode,它是专门用来做计算的,但简单查询 Vnode 就可以直接操作了,如果牵扯到 group by、order by 等复杂查询,就需要在 Qnode 上进行了。

Qnode 的优点就是操作者可以动态地启动、停止,也就是说它的计算资源可以动态地进行操控,这样就实现了存算分离。同时 Vnode 也可以进行拆分或合并,保证存储也可以弹性伸缩。

如果系统不能做到真正的弹性伸缩,就一定不是云原生的,很多企业打着云原生的幌子,但实际上连云原生是什么都说不清楚。在我看来,云原生就是要充分利用云平台的优势,即计算资源、存储资源、网络资源,且要完全弹性,你想要就马上给你,不想要就马上释放,这样才能真正实现成本的节约。

韧性

云原生里还有一个重要概念叫韧性,简单来讲就是高可靠、高可用。TDengine 在设计之初就考虑到了这一点,其高可用就是用多个副本来实现,但后面发现以前的同步算法还是存在漏洞,因此 3.0 就完全采用了标准 RAFT 协议来实现数据复制,以此保证数据一致性。

除了高可用,合格的韧性还要保证系统的高可靠,保证机器即使宕机了依然还能重启,且还能继续工作,数据也不会丢失。

部署、维护

我们以前都是建议用户到 Kubernetes 上部署,但并没有出详细的自动化流程,3.0 版本给出了详细的 Kubernetes 部署文档,只需修改两个配置文件,马上就能部署整个集群,极其简单。

除了更加理解云原生,3.0 给我带来的另一个收获就是对于可观测性的理解,可观测性其实远远不只是监控,它包括了 logging、tracing、metrics,我们在 3.0 上实现了整个架构,让用户对 TDengine 所有集群的运行状态都能真正监测到,让系统维护变得更加简单。在维护上,还有关键一点就是要做到自动化,一切都要脚本化,减少人工手动操作的成本。

极简的时序数据处理平台

在 TDengine 创建之初,打造一款极简的时序数据处理平台就是我的初衷。要知道,一个通用的架构往往是要先把采集数据送到 Kafka 或者各种消息队列里,消费之后一部分数据再送到 Spark 或者 Flink 里做流计算处理,一部分数据送到数据库做直接存储,还有一部分则会传输到 Redis 做缓存,这样一个数据处理平台,里面要集成很多软件,维护起来相当困难。

要打造一款极简的时序数据处理平台,首先要解决的问题就是缓存,因为缓存对于物联网、车联网来讲都是极其关键的,TDengine 早就具备了缓存功能,这个也是很多用户特别喜欢的功能,非常方便。

TDengine 3.0 三大创新详解

TDengine 的数据订阅实现机制

对于 TDengine 3.0 来说,还有一个很大的改进是重构并优化了数据订阅功能。TDengine 是用 WAL 来做的订阅,技术人员应该都知道,WAL 本身就可以看作一个队列,完全按照数据到达顺序来追加写入。在 TDengine 3.0 中,既可以订阅一个数据库,也可以订阅一个自带标签的“超级表”,直接实现过滤,比如只想订阅功率超过多少的智能电表数据,直接就能实现。订阅完成后无需再拿到应用端去过滤,极大提升了数据传输的效率。

我们做产品的目的就是要让大家用起来简单,因此在做消息队列功能时,API 全部对标的都是 Kafka,现在不光是初始化和每条命令,连测试都完全一样。以前经常有友商会对标 TDengine,提出性能要超出 TDengine 一百倍之类的观点,但标准就是自己定义的,甚至都没有公开。但我们只采用国际通用的测试标准来测,包括消息队列,直接用 Kafka 公开的 benchmark 进行测试,我们认为这样才有说服力,才是客观的。欢迎大家体验。

TDengine 3.0 还有一个很大的改进就是继续优化了流计算功能。之前 TDengine 就已经支持一个连续查询的流计算,这种周期性的查询流计算还是很有用的,但是功能覆盖却还不够。在 IoT 场景下做数据清洗、过滤时,要做一些实时的触发,必须使用事件驱动的流计算,经过一年多的努力,TDengine 3.0 终于升级了这一流计算功能。

TDengine 3.0 三大创新详解

全新优化的流计算功能

TDengine 3.0 所支持的流计算功能是非常典型的,如上面的架构图所示,数据源要先进入 Input Queue,再进入流计算的 Task,再输出到另外一个列。而且流计算可以嵌套,一层一层形成一个数据的 pipeline。从方便用户使用的角度出发,TDengine 的流计算语法就是 SQL,里面做了 windows 等扩展,可以在数据写入时触发,也可以在窗口结束触发。

此外, TDengine 3.0 对 UDF 的支持也进行了优化。3.0 对 UDF 进行了重新实现,加上时间驱动的流计算,我觉得至少在时序数据的场景下,TDengine 已经能够完全代替 Spark 和 Flink。

TDengine 3.0 三大创新详解

极简的时序数据处理平台

但在此我需要再重申一下,我们优化 TDengine 的缓存、消息队列、流计算等功能,并不是想代替 Flink、Spark、Kafka 这类通用型的消息队列软件、流计算软件,只是想简化这款基于时序数据场景做的数据库软件,更加便于大家使用,通过降低系统复杂度来真正降低运维和存储成本,这也是我们搭建极简时序数据处理平台的原因。

便捷的数据分析

TDengine 3.0 三大创新详解

重新构建查询引擎

TDengine 3.0 还有一个较大的改变就是重新设计了计算引擎,现在像 Planner、优化器、执行器等都具备了。对于数据来说,查询是非常重要的,数据存储好之后,用户最重要的就是要从中挖掘数据价值,TDengine 对 SQL 的支持已经做的很好了。

但是 SQL 这个概念也很复杂,我们不可能像 Oracle 一样支持那么多详细的复杂查询,3.0 的查询对标的是 Hive,Hive 能做的所有的分析 TDengine 已经都能做了。此外,TDengine 也有很多针对时序数据的特有函数,比如说移动平均、时间加权平均等等。

重构查询引擎的 TDengine 3.0 已经成为了一个很好的查询工具,再辅以下面的这些手段,足以让查询变得更有效:

  • 超级表适合做多维度分析
  • 计算与存储分离
  • 数据分片、分区
  • 流处理
  • 历史数据和实时数据统一分析
  • 来自控制台的临时查询
  • Python Pandas,数据框支持
  • 可以与 Grafana 和 Google Data Studio 等可视化工具无缝集成

TDengine 3.0 的最后一个更新功能叫作 taosX,它充分利用了 TDengine 的数据订阅功能来解决增量备份、异地容灾,即把一个集群的数据复制到另外一个地方去,以实现边云协同。众所周知,边云协同在物联网里面很重要,如果说工厂的数据想要同步到集团,就需要一个边云的盒子一层接一层做同步,而这个需求,在 TDengine 中就靠 taosX 解决了。

此外除了技术上的种种进步外,今天我还要给大家同步一个好消息。为了方便工业场景下大量的 Windows 客户,TDengine 3.0 的 Windows 版本也正式发布了,包括客户端和服务器。同时,大概在 10 月 1 日,TDengine 的 Mac 版本也将正式对外发布,大家敬请期待。

TDengine 3.0 三大创新详解

目前 TDengine 3.0 的代码已经在 GitHub(https://github.com/taosdata/TDengine) 上公开,大家可以完全参照我们的 readme 文件来编译,也可以到 TDengine 的官网去下载。如果你是一个开发者,觉得 TDengine 这个项目有意思,可以选择加入我们的开发者社区,学习源代码,甚至是贡献代码。如果你是一个物联网或者工业互联网应用的开发者,那欢迎你把 TDengine 应用起来,你可以加入我们的用户群,我们很乐意回答你的问题。如果你是个 DBA,那欢迎你马上下载,去体验我刚才讲的各种功能。

中国的开源软件特别需要大家的支持和使用,我经常跟销售团队起争论,比如在决定哪些功能必须放在企业版时,我就表示所有的核心功能都必须同步在开源版本上,而绝不能只放在企业版里。为什么?因为想要做好开源就一定要给用户带来价值,我希望有越来越多的人能够成为 TDengine 的布道者。

结语

TDengine 3.0 三大创新详解

我特别喜欢丘吉尔的这段名言,翻译成中文就是“成功不是终点,失败不是终结,唯有你继续前行的勇气最为关键”。从创建 TDengine 到现在,我们已经走过了 5 个年头,开源也已经走过了 3 年,在这个过程中取得了一些小小的成功,但是我们前面的路还很漫长,我已经做好了再战 5 年、10 年的准备。希望我在七八十岁的时候还能继续写代码,和大家一起讨论问题,度过真正有价值的一生。文章来源地址https://www.toymoban.com/news/detail-413586.html

到了这里,关于TDengine 3.0 三大创新详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全球首个开发者村启动开村,产业聚力松山湖,共创大湾区创新高地

    摘要: 由东莞松山湖管委会、东莞市工业和信息化局与华为云共同主办的松山湖开发者生态创新峰会暨华为开发者大赛中国区启动仪式举行。 打造一流创新生态,与全球开发者共赢。4月26日,由东莞松山湖管委会、东莞市工业和信息化局与华为云共同主办的松山湖开发者生

    2024年02月01日
    浏览(46)
  • 2023云栖大会开幕:全球数万开发者参会,展现AI时代的云计算创新

    10月31日,2023云栖大会在杭州开幕,大会吸引全球数万开发者参会。阿里巴巴集团董事会主席蔡崇信在致辞中表示,今年云栖大会主题回归“计算,为了无法计算的价值”,这也是2015年云栖大会的主题,当时云计算支撑的移动互联网创新如雨后春笋,今天希望在AI时代继续支

    2024年02月06日
    浏览(50)
  • 开源软件允许任何人自由查看、修改和使用源代码,这激发了更多的开发者参与到软件的创新和改进中来

    开源软件的影响力主要体现在以下几个方面: 促进技术创新:开源软件允许任何人自由查看、修改和使用源代码,这激发了更多的开发者参与到软件的创新和改进中来。很多新的想法和技术都得到了开发和推广,从而推动了整个技术领域的发展。 提升软件质量:开源软件通

    2024年02月20日
    浏览(46)
  • Redis详解:.NET Core开发者的面试与应用指南

    本指南为.NET Core开发者提供了Redis的全面解析,包括其作为内存数据库的优势、数据类型、持久化策略、高可用性架构等。同时,介绍了如何使用StackExchange.Redis、FreeRedis和NewLife.Redis等.NET客户端库进行Redis操作,并提供了面试中可能遇到的Redis相关问题的解答,是.NET Core开发者和求职者的宝贵资源。

    2024年04月08日
    浏览(47)
  • 谷歌浏览器F12开发者工具NETWORK的用法详解

    谷歌浏览器开发者工具中的Network是前端,程序等相关开发者经常用到的,那么你都知道他们每个功能的意义吗?相信读了这篇文章,将会对你的工作带来事倍功半的效果   因本人经常有360极速浏览器,谷歌内核,所以本文以360极速浏览器的开发者工具Network为例,基本和谷歌的Network一

    2024年02月09日
    浏览(75)
  • 4方面详解微信小程序和H5的区别,开发者采用哪种开发比较好?

    与传统App相比,开发时间更短、所需投入更低的移动应用一定是小程序和H5应用,企业在开发移动端的时候选择开发小程序还是H5好呢?对比两者的区别,来决定开发者采用哪种开发比较好。 01、 运行环境不同 小程序: 就是依赖于微信或其他APP上的一个应用, 只能在应用内

    2024年02月03日
    浏览(46)
  • 如何成为一名高效的前端开发者(10X开发者)

    如今,每个人都想成为我们所说的“10倍开发者”。然而,这个术语经常被误解和高估。 本质上,一个高效或者10倍开发者,在我看来,是指那些能够充分利用所有可用工具的人,通过让这些工具处理冗余和重复的任务,使他们能够专注于复杂和创造性的工作。以下是一些成

    2024年02月05日
    浏览(71)
  • 小米手机开发者选项在哪?小米手机怎么打开开发者选项

    小米手机开发者选项在哪?小米手机的开发者选项是什么?开发者选项是小米手机中的隐藏功能,为什么我们会问起这个呢?因为普通的设置我们都很容易就能找到,但开发者模式是需要用特殊的操作才能将其唤醒。下面就让我们看看怎么将这个隐藏设置给唤醒吧! 第1步:

    2024年02月10日
    浏览(47)
  • 极路由怎么申请开发者权限?极路由开发者模式的详细教程

    极路由最新固件已经开通了root权限,供有经验的同学自助开发插件。鉴于部分同学依然不知道如何申请开发者权限,懒蛇写这篇教程简单讲一下申请过程。 1、浏览器输入192.168.199.1,进入极路由管理页面,点击进入云平台。 2、云平台选择“路由器信息” 3、滚动到页面底部

    2024年02月08日
    浏览(61)
  • 开发者的瑞士军刀!一款适用于开发者的工具集合!

    大家好,我是 Java陈序员 。 俗话说“工欲善其事必先利其器”,有一个好的工具可以事半功倍。 编程开发亦是如此。 今天,给大家介绍一款离线的 Windows 应用程序,该应用涵盖常见的开发工具集合,旨在提高工作效率! 关注微信公众号:【Java陈序员】,获取 开源项目分享

    2024年01月22日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包