首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从TDengine的开源说起技术选型

如果一艘快艇足够承载下你的所有货物到达彼岸,那么你不需要使用一艘轮船出行。产品设计和技术选型也是一样,我们经常会说:“我需要一个能够处理百万规模并发读写操作的,低延时,高可用的系统。”...做技术选型时,我们不会单纯的说A方案比B方案好,只是在解决特定的问题上,A方案比B方案更合适,选择了A方案的同时也意味着接受A方案里那些不如B方案的地方。...最近花了一些时间去熟悉这个开源项目的文档和代码,聊聊在做IOT时序数据库这方面的技术选型时使用TDengine或者其他产品一些可能需要考虑的点。...企业版在社区版的基础上新增了高可用、横行扩展等集群功能,内置异地副本复制功能,可用性达运营商级服务等级,提供更强大的运维管理工具。...可以理解在IOT场景下对于不断产生的时间序列数据,可以接受一定程度的数据点不一致,而对于创建表/修改表这样的操作产生的数据库元数据,在集群中则务必保证各个mnode节点上的数据保持强一致性。

3.2K30

kafka发送客户端在高并发场景下如何保证不频繁GC的

最近看kafka源码,着实被它的客户端缓冲池技术优雅到了。忍不住要写篇文章赞美一下(哈哈)。 注:本文用到的源码来自kafka2.2.2版本。...背景 当我们应用程序调用kafka客户端 producer发送消息的时候,在kafka客户端内部,会把属于同一个topic分区的消息先汇总起来,形成一个batch。...真正发往kafka服务器的消息都是以batch为单位的。如下图所示: ? 这么做的好处显而易见。客户端和服务端通过网络通信,这样批量发送可以减少网络带来的性能开销,提高吞吐量。...但是在并发量比较高的时候就会频繁的进行GC。我们都知道GC的时候有个stop the world,尽管最新的GC技术这个时间已经非常短,依然有可能成为生产环境的性能瓶颈。...kafka的设计者当然能考虑到这一层。下面我们就来学习下kafka是如何对batch进行管理的。 缓冲池技术原理解析 kafka客户端使用了缓冲池的概念,预先分配好真实的内存块,放在池子里。

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在使用 SpringMVC 时,Spring 容器是如何与 Servlet 容器进行交互的?

    最近都在看小马哥的 Spring 视频教程,通过这个视频去系统梳理一下 Spring 的相关知识点,就在一个晚上,躺床上看着视频快睡着的时候,突然想到当我们在使用 SpringMVC 时,Spring...容器是如何与 Servlet 容器进行交互的?...虽然在我的博客上还有几年前写的一些 SpringMVC 相关源码分析,其中关于 Spring 容器如何与 Servlet 容器进行交互并没有交代清楚,于是趁着这个机会,再撸一次 SpringMVC 源码...因此,ContextLoaderListener 最主要的作用就是在 Tomcat 启动时,根据配置加载 Spring 容器。 ?...在将 Spring 容器初始化最后以一个元素的形式保存到 Servlet 容器之后,那么 SpringMVC 在初始化时,是如何拿到 Spring 容器的呢?

    2.9K20

    想要实现在时序场景下“远超”通用数据库,需要做到哪几点?

    在写入链路上,时序数据库在时序场景下替代的是 OLTP 数据库的位置,而后者在事务与强一致的模型下产生的读写延迟很难支撑时序数据库的高吞吐量写入。 再说查询。...以上,在明确了写入与查询需求的同时,下面我们以存储引擎为例,来看一看一个时序数据库的某一个部分应该如何设计。...当数据与元数据进行分片、多副本操作时,就自然涉及到一致性与可用性的问题。...在时序数据库中,时序数据通常是最终一致同步的,因为最终一致算法的吞吐量高延迟低、可用性也比强一致算法好,比如 InfluxDB 的集群版会用 Dynamo 这种无主风格的数据同步。...这就是 TDengine 使用自研复制算法的根本原因。当然,这些算法在复杂的分布式环境下的一致性保证又是另外的问题了,也是我们要着重解决的挑战。

    62320

    一篇文章让你全面了解TDengine

    TDengine的开源协议 TDengine目前已经在GitHub上进行了开源。...高可用性和水平扩展:通过分布式架构和一致性算法,通过多复制和集群特性,TDengine确保了高可用性和水平扩展性以支持关键任务应用程序。...(压缩效率高:利用物联网数据变化波动不大的特性、dif插值后压缩,然后二阶压缩,效率很高。) 支持高可用性,将每个物理节点划分为多个虚拟数据节点和虚拟管理节点。...虚拟数据节点和虚拟管理节点分布在不同的物理节点上实现数据集应用的高可用。 存储结构上,采用每个采集点创建一个独立的表的方式来存储。这样实现每个采集点的数据的连续存放,提升读取效率。...在创建超级表时,可以对这类表指定标签,在查询的时候通过标签来对数据库中的表进行过滤,这样即使数据库中有非常多的表,也可以实现快速的多表聚合。 安装包非常小,安装使用简单。

    1.8K10

    分布式数据库如何平衡一致性和读写延迟?

    作者 | 刘继聪 审校 | 蔡芳芳 为了提供高可用能力、避免数据丢失,在分布式数据库或存储系统中需要设立数据副本机制,而副本的引入,可以说是分布式存储中的“万恶之源”。...强一致约束下能提供哪些可用性?诸如此类,种种问题,不一而足。 此外,分布式系统中的 CAP 原理可以被表述为:在网络分区存在的情况下,强一致与可用性是不可兼得的。...显然,在分布式系统中,由于网络通信延迟的存在,多副本的严格一致是不可能的。 那是代表返回写入请求时多副本已经达到完全一致了吗?...图6 以图 6 为例,最终一致的结果,既可能是 1,又可能是 2,还可能是 3(在不存在绝对时间的系统,甚至无法定义最后写入的值是 1、2 还是 3),但所有进程再足够长的时间后的读结果都必须保持一致。...让 leader 在与客户端交互,完成读操作前发送一个 no-op 并至少得到半数回应,由于少数派分区的 leader 无法得到半数回应,因此无法提供读服务。

    53110

    如何帮助我们改造升级原有架构——基于TDengine 平台

    Data Studio 可视化工具的无缝集成 S集群、高可用、高可靠 S主流编程语言的连接器 S命令行以及监控、数据导出、数据导入等多种工具 TDengine 分布式架构的逻辑结构图如下:...三、TDengine安装与应用 安装TDengine服务 下载地址:使用安装包快速体验 TDengine | TDengine 文档 | 涛思数据 目前 TDengine 在 Windows 平台上只支持...使用客户端驱动提供的原生接口直接与服务端建立的连接的方式下文中称为“原生连接”;使用 taosAdapter 提供的 REST 接口或 WebSocket 接口与服务端建立的连接的方式下文中称为“REST...的写入性能高、并发高、查询时延极短;整体集群采用分布式架构,可靠性、稳定性、数据完整性满足项目需求。...在应用TDengine后,这六大功能模块在使用效果上也获得了显著提升,不光体现在数据的写入、查询性能上,同时也体现在高效的压缩效率上,真正实现了性能和成本平衡的最优化。

    21720

    时序数据库:TDengine整体架构

    因此 TDengine 从研发的第一天起,就按照分布式高可靠架构进行设计,是支持水平扩展的,这样任何单台或多台服务器发生硬件故障或软件错误都不影响系统的可用性和可靠性。...添加新的节点进集群时,有两个步骤,第一步:使用 TDengine CLI 连接到现有工作的数据节点,然后用命令"create dnode"将新的数据节点的 End Point 添加进去; 第二步:在新的数据节点的系统配置参数文件...比如,最新采集的数据需要经常访问,对硬盘的读取性能要求高,那么用户可以配置将这些数据存储在 SSD 盘上。超过一定期限的数据,查询需求量没有那么高,那么可以存储在相对便宜的 HDD 盘上。...TDengine 的查询处理需要客户端、vnode、mnode 节点协同完成。 1.单表查询 SQL 语句的解析和校验工作在客户端完成。...客户端在获取查询结果的时候,dnode 的查询执行队列中的工作线程会等待 vnode 执行线程执行完成,才能将查询结果返回到请求的客户端。

    2.7K10

    在同时使用Hive+Sentry,因HMS死锁导致的高并发写入工作负载时,查询速度缓慢或者停滞

    2.症状 ---- 在受影响的版本中,某些工作负载可能导致Hive Metastore(HMS)死锁。内部的自动机制可以从这种死锁中恢复。...但是,在高并发且写入较重的工作负载中,HMS从死锁中恢复比查询作业的执行时间还长,于是导致HMS的性能下降或者挂起。反过来影响HiveServer2的性能,从而影响查询性能。...和PostgreSQL上,不会打印此消息,此问题与数据库无关 以下三种情况说明具体如何影响你: 1.如果你正在使用受影响的版本并使用Hive和Sentry,请参考下面的“解决办法”章节。...如果做了上述修改后问题仍然存在,考虑升级到推荐的新版本。 6.总结 ---- 在CDH5.15发布之前,目前较新的版本推荐的是5.13.3或5.14.2。...温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

    2.1K50

    时序数据库:TDengine与其他时序数据库比对测试

    在以下测试中,使用R/R表示Records/Request ,即一次请求中的记录条数。同时,一个数据库可以支持多个客户端链接,链接数增加,系统总的写入通吐量也会相应增加。.../sqlCmd.txt Cassandra环境准备 Apache Cassandra是一个高度可扩展的高性能分布式数据库,用于处理大量商用服务器上的大量数据,提供高可用性,无单点故障。...DataStax使用maven管理源码,在Cassandra/Cassandratest/pom.xml 里DataStax客户端已经被添加入maven的库里。...客户端修改, 在测试源代码Cassandra/目录下提供了“application.conf”文件,里面修改了客户端timeout默认值,执行源代码时需要提供这个文件的路径。...在以下测试中,使用R/R表示Records/Request ,即一次请求中的记录条数。同时,一个数据库可以支持多个客户端链接,链接数增加,系统总的写入通吐量也会相应增加。

    1.5K10

    tdengine入门详解

    计算节点(qnode): 一个虚拟的逻辑单元,运行查询计算任务,也包括基于系统表来实现的 show 命令(图中 Q)。集群中可配置多个 qnode,在整个集群内部共享使用(图中 Q1,Q2,Q3)。...流计算节点(snode): 一个虚拟的逻辑单元,只运行流计算任务(图中 S)。集群中可配置多个 snode,在整个集群内部共享使用(图中 S1,S2,S3)。...一次插入多行数据时,不要把首列的时间戳的值都写 NOW。否则会导致语句中的多条记录使用相同的时间戳,于是就可能出现相互覆盖以致这些数据行无法全部被正确保存。...其原因在于,NOW 函数在执行中会被解析为所在 SQL 语句的客户端执行时间,出现在同一语句中的多个 NOW 标记也就会被替换为完全相同的时间戳取值。...vnode,彼此间执行结果不影响 这是因为多个子表可能分布在不同的 VNODE 上,客户端将 INSERT 语句完整解析后,将数据发往各个涉及的 VNODE 上,每个 VNODE 独立进行写入操作。

    1.9K11

    这位创造GitHub冠军项目的“老男人”,堪称10倍程序员本尊

    版和信客户端,相同的开发平台经历也让我们迅速的拉进了彼此的距离。...在使用TdEngine的过程中我发现了两个小问题,一是数据库用户密码明文存放,二是数据文件权限设置不合理。让我十分震惊的是,这两个问题是我下午在和陶老师聊天时提出的,当晚发布版本就把问题全部解决了。...陶老师是真的爱编程,尤其对于代码运行效率有着近乎狂热的追求,我查阅了陶老师近年来的作品,其和信客户端只有18K大小,胎心算法的实现只用了600行代码,而TDengine这样一个数据库项目竟然只需要1.5M...TdEngine代码导读 当笔者打TdEngine的代码时不由眼前一亮,其代码风格及规范性绝对堪称一流,于是我打开了久违的souce insight,,再一次开始了阅读C语言代码的美妙旅程,在这里强烈推荐各位读者也来读一下...在正式进入到代码之前我想请大家思考这样的一个,互斥体( mutex)和信号量(semaphore)的使用是如何做到多线程安全的。

    1.1K40

    时序数据库:TDengine简介

    ,这样无需 Redis 就能对时序数据进行高效处理 流式计算(Stream Processing),TDengine 不仅支持连续查询,还支持事件驱动的流式计算,这样在处理时序数据时就无需 Flink...要求容错和高可靠 √ TDengine 的集群功能,自动提供容错灾备等高可靠功能。 标准化规范 √ TDengine 使用标准的 SQL 语言提供主要功能,遵守标准化规范。...构建 TDengine目前2.0版服务器仅能在Linux系统上安装和运行,后续会支持Windows、macOS等系统。客户端可以在Windows或Linux上安装和运行。...Windows 系统 如果你使用的是 Visual Studio 2013 版本: 打开 cmd.exe,执行 vcvarsall.bat 时,为 64 位操作系统指定“x86_amd64”,为 32...简单使用 在TDengine终端中,用户可以通过SQL命令来创建/删除数据库、表等,并进行插入查询操作。

    40310

    【金猿技术展】时序数据库表结构改变处理方法 ——高效处理PB级数据,可实时监测预警业务运行状态的技术

    那通过云原生如何解决可扩展性问题? 还是通过分片分区来解决,在时间轴上以天或周为单位对数据进行切分,同时将定量设备的数据分配给每个区(Vnode)进行处理。...这样一来,在插入一个数据到任何一个片或者一个区时,TDengine 都不再需要经过任何中间节点,彻底解决了高基数的问题。...以存储性能为例,之前我们使用 ES集群时,15个节点只能支持3个月的数据存储,在接入 TDengine 之后,7 个同样配置的集群,已经支撑了 5 个月的数据存储。...——曹志强 四维图新位置服务部门数据平台负责人 在存储方面,在使用 TDengine 之后,针对生产环境的一个 6.6TB 的集群,我们粗略估计了一下前后的压缩比,大概在 6.6/0.4。...在我们原来的集群中是没有副本的,单纯就部署了 MySQL 的 5 个分库,使用了 4C 8GB 2TB 的 5 台机器,在应用 TDengine 之后,现在是 8C 32GB 2TB 的 3 台机器。

    58520

    TDengine入驻Rainbond开源应用商店

    Rianbond擅长应用自动化管理 ,两者结合起来实现1+1大于2,本文详细讲述如何整合TDengine和Rainbond,并通过整合实现高效快捷,便利简洁。...TDengine TDengine 是涛思数据面对高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方 软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系型数据库...在通过Rainbond平台进行安装TDengine之前,首先保证有一个可用的Rainbond,具体安装可以参考文档Rainbond快速安装。...[617a1b842ab3f51d91a8016b.png] 客户端连接 日常工作中真正去使用数据库的时候,其实都是远程进行访问或者写入数据,目前平台经过测试也是支持的,需要进行简单的调式即可使用,要注意的点就是需要保证...TDengine在进行连接之前只需要把默认的治理模式,serviceMesh更改为原生的service才可以。 在实例伸缩选项里面复制查询命令在终端执行即可查询,集群的详细信息。

    1K20

    EMQX Enterprise 4.4.12&4.4.13 发布:集群负载重平衡、TDengine 3.0 适配以及子表批量插入

    在本次发布中,我们带来了集群负载重平衡与节点疏散功能为运维人员提供更灵活的集群管理方式,适配了 TDengine 3.0 版本并新增分表批量插入功能,以提供更高的数据集成吞吐。...一方面,在跨版本升级、垂直或水平扩展时要求关闭 EMQX 节点,这会导致节点上所有连接几乎同时断开并重连,增加了集群过载的风险,与此同时非持久会话也将在节点关闭时丢失。...图片集群负载重平衡与节点疏散能够确保所有节点以良好的负载工作,并大大降低 EMQX 维护工作对在线客户端以及客户业务的影响,详细的使用方式请参阅 EMQX 文档,目前这一功能已经被整合至 EMQX Operator...中以为 EMQX 的 K8s 自动化部署带来更好的使用体验。...在 TDengine 3.0 中,EMQX 依赖的数据写入接口也做了相应的调整导致无法正确写入数据。

    1.4K20

    彻底开源、十倍性能的背后:TDengine 核心技术首度公开

    面对这一市场空白,来自北京的涛思数据开发了自主可控的高性能、可伸缩、高可靠、零管理的物联网大数据平台 TDengine,可广泛运用于物联网、车联网、工业互联网、IT 运维等领域。...在上述结构中,心跳负责维持管理状态,客户端需要查询 / 写入时则从管理节点获取虚拟节点的路由信息,然后找到对应的数据节点获得服务。...当数据在不同节点有多个副本时,通过主从选举的方式选出主节点。在不同节点之间的数据复制默认为异步,以显著提升复制速度。但平台也针对安全性需求较高的场景提供了同步复制选项。...TDengine 使用的压缩算法包括 DELTA-OF-DELTA、ZIG ZAG Encoding 等。...在涛思数据,开发团队以 GitHub 为 CI/CD 的核心平台,并使用 Travis 和 Appveyor 分别负责 Linux 和 Windows 版本的测试。

    1.4K20

    Dbeaver连接TDengine时序数据库

    前言 还是结合上一阶段的工作,为TPS满足合同里的要求,预研数据库切换为TDengine。所以查看数据的工具我得能连上去看,习惯了Dbeaver,所以先把Dbeaver整的能连接使用。...二、配置步骤 1.客户端安装 要连接TDengine数据库,跟其他一般数据库连接一样,必须首先得安装客户端。...git下载地址:https://github.com/taosdata/taos-connector-jdbc 下载的项目修改下Maven环境,JDK环境(我这里第一次是使用JDK17编译,没有成功,...设置方法: 在properties节点增加true 然后,把编译后的target里生成的3个文件拷贝到Dbeaver的drivers目录,这里自建一个TDengine目录,例如: 3.Dbeaver...连接 做完第4步在新建连接弹框的界面里就可以看到“TDengine”,这个取名跟你在配置jdbc驱动那里取名是一致的。

    1.9K20

    FreeSWITCH TDengine模块

    TDengine是一个时序数据库,因此所有数据必须有一个时间戳,相同的时间戳是无法插入的。这跟关系数据库天然的不同。在关系数据库中,话单使用一张表,直接将数据插入就OK了。...我们先来看一下一张典型的话单: uuid:通话的唯一ID,使用UUID格式,也可以是任意字符串(在应用中可以强制使用UUID字符串)。...本方案可以解决以下问题: 针对不同的本地用户计费 本方案有以下遗留问题: 同时有同号码的并发呼叫时,T表中时间戳可能重复 同终端并发有多个呼叫时,A/B表也可能有重复,进一步拆分?...开发计划 不管上述问题是否解决,我相信TDengine在FreeSWITCH中一定有它的用处。我们先将数据写写入,再研究遗留问题解决方案。...你将会学到: TDengine 如何写一步一步写FreeSWITCH模块 如何取话单 如何编译以及解决问题 如何做一个开源项目 如何向开源项目做贡献 如何连接两个优秀的开源项目

    1.1K40

    比Hadoop快10倍!50岁高龄程序员刚开源了10万行大数据平台代码

    随后获得明势资本、蛮子基金的天使投资,组建团队,2017年6月陶建辉正式成立自己的数据公司。 在团队的努力下,2018年8月,公司发布了TDengine的第一个商业版。...因为这两个软件,在将近30年后,还有人在天天使用。 中国科大LB膜实验室的老师同学,还有陶建辉的姐姐,打开电脑,看到的还是他的名字。这件事让陶建辉兴奋和自豪,因为他们证明了他的价值。...怎么让更多的人使用上TDengine?怎么让物联网、车联网、工业互联网等行业普遍采用的Hadoop一套大数据处理体系被尽快淘汰掉?...2008年,陶建辉创办了一家金融公司,他自己写的WindowsMobile的客户端只有18K,就能通过移动互联网免费收发短信、彩信和邮件。...团队中90后洪泽、江燚总担心文档写的不清楚,不够仔细,让大家看不明白,因此不停的改,廖博士总想着代码要如何规范,如何让产品更稳定,性能对比测试文档的文字都一丝不苟,胜亮、李晖想着怎么让配置参数更加简单、

    1.7K140
    领券