首页 > 其他分享 >一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

时间:2023-09-18 18:04:01浏览次数:50  
标签:订阅 功能 name TDengine 时序 Kafka 数据

TDengine 3.0 中,我们对流式计算、数据订阅功能都进行了再升级,帮助用户极大简化了数据架构的复杂程度,降低整体运维成本。TDengine 提供的类似消息队列产品的数据订阅、消费接口,本质上是为了帮助应用实时获取写入 TDengine 的数据,或者以事件到达顺序处理数据,与其他消息队列相比,它提供了更大的灵活性,同时有效地降低了传输的数据量与应用的复杂度。

在本篇文章中,TDengine 研发人员详细揭秘了 TDengine 数据订阅的流程和具体实现,给到有需要的人参考。此前我们还在《关于 TDengine 3.0 数据订阅,你需要知道这些》一文中汇总了部分重要的语法规则,如果你正在研究 TDengine 数据订阅功能,可以结合来看。

数据订阅的分类

TDengine 支持多种订阅类型,包括子查询结果订阅、超级表订阅以及整个数据库订阅。超级表订阅和库订阅支持参数 with meta,添加此参数后,订阅的结果将包含数据的 meta 信息,一般用于数据同步迁移。具体语法如下:

  • 列订阅
CREATE TOPIC topic_name as subquery;
  • 库订阅
CREATE TOPIC topic_name as database db_name [with meta];
  • 超级表订阅
CREATE TOPIC topic_name as stable stb_name [with meta];

与 Kafka 对比

一直以来,TDengine 做产品的初衷就是简单易用,因此在做数据订阅功能时,API 全部对标的都是 Kafka。如果有人深入研究过 TDengine 的模型,就会发现它的架构模型和 Kafka 的很多设计都是相对应的,Topic 和 Kafka 相似,Vnode 跟 Kafka 中的 Partition 也很接近,子表的表名跟 Kafka 中的 Event Key 对应,因此这个架构设计天然地就带有消息队列的特点,也正是基于此,TDengine 做数据订阅功能才能如此得心应手。

TDengine 的数据订阅功能与 Kafka 相比,基本概念都是一致的,只是具体实现方式可能有所不同,实现路径如下所示: ::: hljs-center

1280X1280.JPEG

:::

在时序数据场景下,TDengine 降低了用户对 Kafka 的依赖,其 Vnode 可以允许不同的消费者同时消费数据,用户只需要订阅自己关注的这部分数据,比如说你只想关注电流里面超限的数据,那你使用 TDengine 进行订阅时的数据传输总量是非常小的,但用 Kafka 进行数据订阅时很可能需要从服务器拉取全部的数据,然后还要在客户端中进行数据筛选,这时两者的性能就完全不在一个量级上了。

TDengine 数据订阅关键参数说明

::: hljs-center

微信图片_20230913150057.png

:::

消费示例代码

::: hljs-center

1280X1280 (1).JPEG

:::

TDengine 数据订阅的流程

Client 端的功能

  • 提交 commit
  • 获取 endpoint
  • 心跳 保活
  • 消费数据 ::: hljs-center

1b85c84e-2aaa-4821-9e4a-49fe2c88a892.jpg

:::

client 端在单消费线程里处理逻辑非常简单,无需对资源做并发控制。

Server 端的功能

  • 消费分配控制(rebalance)(c1 表示 comsumer ID,g1 表示 group ID) ::: hljs-center

ffe4b328-80bc-4265-89b2-04886db278a7.jpg

:::

该功能通过 timer 控制,每 2s 检测一次是否需要 rebalance,rebalance 后,consumer 需要获取到新的 EP,才可正常消费,否则 consumer ID 将出现不匹配的情况,会重试。

  • 消费状态控制 6854e002-73fd-498c-80b0-7190884413c1.jpg
  • 消费进度控制 1b91f8f4-9d0a-4f7c-a509-12d75a266ead.jpg

结语

TDengine 的数据订阅、流式计算功能优势也体现在企业的具体实践上,以西门子的数字化解决方案改造项目为例,TDengine 帮助其 SIMICAS® OEM 2.0 版本移除了 Flink、Kafka 以及 Redis,大大简化了系统架构,节约了运维成本;在狮桥集团的网货平台与金融 GPS 系统数据架构改造中,部署了 TDengine 之后,直接下线了一整套的末次位置 Redis 集群、轨迹查询的 Hbase 集群也被集体下掉。

如果你也面临着性能和成本难以两全的数据处理难题,亟需升级数据架构,欢迎添加小T vx:tdengine,和更专业的解决方案架构师点对点沟通。

关于 TDengine

TDengine 核心是一款高性能、集群开源、云原生的时序数据库Time Series DatabaseTSDB),专为物联网、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网、工业大数据平台。当前 TDengine 主要提供两大版本,分别是支持私有化部署的 TDengine Enterprise 以及全托管的物联网、工业互联网云服务平台 TDengine Cloud,两者在开源时序数据库 TDengine OSS 的功能基础上有更多加强,用户可根据自身业务体量和需求进行版本选择。

标签:订阅,功能,name,TDengine,时序,Kafka,数据
From: https://blog.51cto.com/tdengine/7513782

相关文章

  • 1.5万字长文:从 C# 入门 Kafka
    目录1,搭建Kafka环境安装docker-compose单节点Kafka的部署Kafka集群的部署2,Kafka概念基本概念关于Kafka脚本工具主题管理使用C#创建分区分区与复制生产者消费者修改配置3,Kafka.NET基础生产者批量生产使用Tasks.WhenAll如何进行性能测试消费4,生产者连接BrokerK......
  • Kafka监控&故障恢复
    监控Kafka集群Kafka集群的监控是确保其正常运行和性能优化的关键步骤。下面列出了一些常用的方法和工具来监控Kafka集群:JMX监控:Kafka提供了JMX(JavaManagementExtensions)接口,可以通过JMX来监控和管理Kafka集群。您可以使用JConsole、JavaMissionControl等工具连接到KafkaBroker......
  • kafka基础
    认识Kafaka最初的定义:消息队列系统0.10.0版本的定义:分布式流处理平台,发布-订阅消息队列,存储功能、流处理框架3.x后的定义:分布式流平台,数据管道/集成、流分析kafka的优势吞吐量高、性能好伸缩性好高容错、高可靠与大数据生态精密结合kafka的作用高并发环境下的缓冲、......
  • kafka
    kafka的partiton在实际的消息生产消费过程中是如何使用的。安装zookeeper安装jdk安装~#zookeeper默认端口2181数据缓存位置:zoo.cfg=>dataDir=xxx1.启动方式./zkServer.shstop./zkServer.shstart./zkServer.shstatus2.连接方式bin/zkCli.sh#指定端口bin/zkCli.s......
  • Windows下安装TDengine_tdengine windows安装
     ERRORfailedtoinitdnodesinceunsupportedplatform,https://www.taosdata.com/assets-download/3.0/TDengine-server-3.1.1.0-Windows-x64.exehttps://www.taosdata.com/assets-download/3.0/TDengine-client-3.1.1.0-Windows-x64.exe 【TDengine】1、Windows下安装TD......
  • Kafka的零拷贝技术Zero-Copy
    传统的拷贝过程流程步骤:(1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存;(2)应用程序将数据从内核空间读入用户空间缓冲区;(3)应用程序将读到数据写回内核空间并放入socket缓冲区;(4)操作系统将数据从socket缓冲区复制到网卡接口,此时数据才能通过网络发送。此过程涉及到4次上......
  • kafka
    Kafka学习笔记_day01适用场景:大数据场景消息队列模式点对点模式消费者主动拉取数据,消息收到以后清除消息发布/订阅模式可以存在多个Topic主题消费者消费完数据以后,不删除数据每个消费者相互独立,都可以消费到数据基础架构内部将一个Topic(主题)分为了多个partition(分区),并配合分区......
  • KafKa概述
    概述KafKa就是一个消息队列:作用概况为:解耦、异步、削峰https://juejin.cn/post/6996826368512098317使用消息队列的好处解耦(类似Spring的IOC)允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。可恢复性系统的一部分组件失效时,不会影响到整个......
  • TDengine 3.1.1.0 来啦!更新如下
    自3.0版本发布以来,在研发人员和社区用户的不断努力下,TDengine 做了大量更新,产品稳定性和易用性也在不断提升。近日,TDengine3.1.1.0成功发布,本文将向大家简单介绍一下该版本涉及的重大更新。写在前面伴随2023年9月官网改版,TDengine正式升级为高性能、分布式的物联网、......
  • 时序数据库有哪些
    时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业、气象行业、地理信息等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据......