前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日吞吐万亿,腾讯云时序数据库 CTSDB 解密

日吞吐万亿,腾讯云时序数据库 CTSDB 解密

原创
作者头像
Techeek
发布于 2018-03-21 03:37:53
发布于 2018-03-21 03:37:53
27.3K11
举报
文章被收录于专栏:云计算云计算

一、背景

随着移动互联网、物联网大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联网公司的监控数据等。实际上,这些按照时间顺序记录系统、设备状态变化的数据都是时序数据(Time Series),它普遍存在于互联网、物联网、IT基础设施中。

得益于软硬件技术的快速发展,处理如此庞大的时序数据集的成本在持续降低,更多公司开始持续收集、分析数据,用于异常处理、趋势预测、精准营销、风险控制等场景,希望利用数据的潜在价值,提高公司盈利能力和竞争力。这里举两个例子:

1.下图为某共享单车在旧金山某热门区域的车辆借还情况。通过分析该区域车辆的历史借还数据,单车公司可优化热点时间段的车辆补给。

2. 下图为某互联网服务的出入流量历史记录。从图中可以明显看到入流量(蓝色线)在某时间段有毛刺,服务提供商可基于此段时间排查服务有无异常。可以进一步基于流量监控做告警,使运维人员能够及时处理线上问题。

二、传统时序数据解决方案存在大量问题

传统的时序数据解决方案及问题如下:

1. MySQL关系型数据库

  • 写入吞吐低:单机写入吞吐低,很难满足时序数据千万级的写入压力;
  • 存储成本大:对于时序数据压缩不佳,需占用大量机器资源;
  • 维护成本高:单机系统,需要在上层人工的分库分表,维护成本高;
  • 查询性能差:适用于交易处理,海量数据的聚合分析性能差。

2. HadoopSpark等批处理系统

  • 数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;
  • 查询性能差:不能很好的利用索引,依赖批处理任务,查询耗时一般在分钟级以上。

3. HBase

  • 多维分析能力差:HBase可以较好的满足写入压力,但对于非RowKey前缀的查询性能较差;
  • 维护成本:使用HBase需要同时维护HBase和Hadoop等系统,且HBase的稳定性会进一步加大维护成本。

三、写入、存储、查询多环节优化,时序数据库优势明显

1. 时序数据模型及特点

在引入时序数据库之前,先要了解【时序数据】的模型及特点。

1.1 时序数据的数学模型

前面介绍了时序数据的场景,也说明了分析时序数据的意义及传统方案。那么时序数据该怎样存储呢?数据的存储要考虑其数学模型和特点,时序数据当然也不例外。这里以一段时序数据为例,介绍下时序数据的数学模型。

下列数据记录了一段时间内某集群里各机器上各端口的出入流量,每半小时记录一个观测值:

  • metric: 相关联的数据集合,类似于关系型数据库中的 table;
  • point: 一个时序数据点,类似于关系型数据库中的 row;
  • timestamp: 时间戳,表征时序数据产生的时间点;
  • tag: 维度列,用于描述设备/系统的属性,表明是哪个设备/模块产生的,一般不随着时间变化;
  • field: 指标列,用于描述设备/系统状态的变化,随时间平滑波动。

1.2 时序数据特点

  • 数据模式: 时序数据随时间增长,相同设备/系统的维度信息不变,指标平滑变化,这点从上面的Network表的数据变化可以看出。
  • 写入: 持续高并发写入,无更新操作:时序数据库面对的往往是百万甚至千万数量级终端设备的实时数据写入(如摩拜单车2017年全国车辆数为千万级),但数据大多表征设备状态,写入后不会更新。
  • 查询: 按不同维度对指标进行统计分析,且存在明显的冷热数据,一般只会频繁查询近期数据。

2. 时序数据库

2.1 时序数据库

时序数据库是管理时序数据的专业化数据库,并针对时序数据的特点对写入、存储、查询等流程进行了优化,从而解决时序数据处理难题:

  • 存储成本:

o 利用维度重复、时间递增、指标平滑变化等特性,合理选择编码压缩算法,提高数据压缩比;

o 通过预降精度,对历史数据做聚合,节省存储空间。

  • 高并发写入:

o 数据批量写入,降低网络开销;

o 数据先写入内存,再周期性的dump为不可变的文件存储,提高写入速度。

  • 低查询延时,高查询并发:

o 优化常见的查询模式,通过索引等技术降低查询延时;

o 通过缓存、routing等技术提高查询并发。

2.2 开源时序数据库对比

目前行业内比较流行的开源时序数据库产品有 InfluxDB、OpenTSDB、Prometheus、Graphite等,其产品特性对比如下图所示:

从上表可以看出,开源的时序数据库存在如下问题:

  • 没有free、易用的分布式版本(OpenTSDB支持分布式部署,但依赖系统过多,维护成本高);
  • 聚合能力普遍较弱,而时序数据大多需要来做统计分析;
  • 没有free的权限管理;
  • 没有针对时间序列的多维度对比分析工具。

四、历经每日万亿写入吞吐,腾讯云CTSDB技术架构

腾讯CTSDB(Cloud Time Series Database)是一种分布式、高性能的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT用户场景等做了大量优化,同时也支持各行业的日志解析和存储。在腾讯内部支撑腾讯云等每日万亿写入吞吐的场景,经过严苛的压力打磨。其架构如下图所示:

1. CTSDB主要特点

  • 高性能:(具体性能数据参考后文测试部分)

o 支持批量写入、高并发查询,以及强大的分析聚合能力;

o 通过横向扩展,线性提升系统性能;

o 支持sharding、routing,加速查询。

  • 高可靠:

o 分布式系统,支持多副本;

o 机架感知,自动错开机架分配主从副本。

  • 易使用:

o 丰富的数据类型,REST接口,数据写入查询均使用json格式;

o 原生分布式,弹性可伸缩,数据自动均衡;

o 权限系统:支持用户名密码、机器白名单的权限系统。

  • 低成本:

o 支持列存储,高压缩比(0.1左右),降低存储成本;

o 支持数据预降精度:降低存储成本的同时,提高查询性能。

o 副本数可按需调整。

  • 兼容开源生态:

o 兼容Kibana/Logstash/Beat等组件,方便数据采集及可视化分析;

o 支持从MySQL、Kafka等开源生态同步数据,方便迁移。

2. 竞品性能对比测试

这里选用业界较为流行的InfluxDB来与CTSDB做性能对比测试。

2.1 写入性能测试

(1) CTSDB单节点集群与InfluxDB单机版写入性能对比

横坐标:并发数(写入线程数) ,纵坐标:QPS(单位:万次/s)

结论: CTSDB单节点写入性能最高在19w,InfluxDB在15w。

(2) CTSDB单节点集群与CTSDB双节点集群写入性能对比

横坐标:并发数(写入线程数) ,纵坐标:QPS(单位:万次/s)

结论:CTSDB单节点集群写入最高可达20w,双节点集群写入性能34w。

2.2 查询性能测试

(1) CTSDB单节点集群与InfluxDB单机版查询性能对比

横坐标:并发数(查询线程数) ,纵坐标:QPS(单位:次/s)

结论:

  • CTSDB查询性能整体比InfluxDB好很多,当并发数较高时(40),CTSDB查询性能比InfluxDB高出近4倍,在2w左右。
  • 在并发线程数达到50时,InfluxDB出现链接错误,拒绝查询请求;此时,CTSDB可正常查询。

(2) CTSDB单节点集群与双节点集群查询性能对比

横坐标:并发数(查询线程数) ,纵坐标:QPS(单位:次/s)

结论:在并发数较高的情况下,双节点集群查询性能较单节点集群有了大幅度提升,呈现了查询性能线性扩展的趋势。

关于我们

1. 我们的现状

作为腾讯唯一的时序数据库,CTSDB支撑了腾讯内部20多个核心业务(微信彩票、财付通、云监控云数据库、云负载等)。其中,云监控系统记录了腾讯内部各种软硬件系统的实时状态,CTSDB承载了它所有的数据存储,在每秒千万级数据点的写入压力、每天20TB+数据量的写入场景下稳定运行,足以证明CTSDB可以稳定支撑物联网的海量数据场景。

2. 我们的未来

CTSDB已经在腾讯云正式开始公测,为时序数据处理提供技术服务,我们将在降低存储成本、提升易用性和丰富功能性等方面进一步优化CTSDB!

欢迎对时序数据库和分布式存储感兴趣的同学加入我们!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
11 条评论
热度
最新
6666666666
6666666666
回复回复点赞举报
还是不懂,时序这个数据库为什么要叫时序
还是不懂,时序这个数据库为什么要叫时序
回复回复点赞举报
共享单车在旧金山?
共享单车在旧金山?
回复回复点赞举报
现在时序数据库怎么样,好用吗
现在时序数据库怎么样,好用吗
回复回复点赞举报
学无边际呀
学无边际呀
回复回复点赞举报
学习了
学习了
回复回复点赞举报
每天20TB+数据量的写入场景下稳定运行,沃德天啊!
每天20TB+数据量的写入场景下稳定运行,沃德天啊!
回复回复点赞举报
奔着好看的图图们进来看的,超赞。
奔着好看的图图们进来看的,超赞。
回复回复点赞举报
不光要考虑计算和存储问题,还有时序问题,学习了学习了!
不光要考虑计算和存储问题,还有时序问题,学习了学习了!
回复回复点赞举报
第一次听说时序数据库,学习了
第一次听说时序数据库,学习了
回复回复点赞举报
加载更多
推荐阅读
编辑精选文章
换一批
腾讯唯一时序数据库:CTSDB 解密
腾讯技术工程官方号
2018/01/02
6.2K0
腾讯唯一时序数据库:CTSDB 解密
腾讯云时序数据库 CTSDB 开放公测
CTSDB 是一款分布式、可扩展、高可靠的时序数据库,适用于有海量时序数据的物联网、大数据分析和互联网监控等场景。
技术姐
2018/01/30
6.4K2
腾讯云时序数据库 CTSDB 开放公测
时序数据库及 IoTDB 介绍 | 小白教程文档(一)
数据如同空气一样普遍,我们在手机的每一次点击都会产生数据,都可能被记录,被使用。数据存放在数据库中,数据库其实就是“数据的集合”。
Apache IoTDB
2023/03/21
3K0
时序数据库及 IoTDB 介绍 | 小白教程文档(一)
时序数据库CTSDB正式商业化
腾讯云时序数据库CTSDB商业化首发,现跟大家聊一下时序数据的概念,模型和使用场景等。
技术姐
2019/01/08
1.4K0
时序数据库详解和使用说明_时序数据库 应用场景
什么是时间序列数据(Time Series Data,TSD,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于IT基础设施、运维监控系统和物联网中。
全栈程序员站长
2022/11/09
5.5K0
时序数据库详解和使用说明_时序数据库 应用场景
时序数据库介绍_时序数据库公司
InfluxDB是一个开源的、高性能的时序型数据库,在时序型数据库DB-Engines Ranking上排名第一。
全栈程序员站长
2022/11/10
2.4K0
时序数据库介绍_时序数据库公司
使用时序数据库CTSDB快速搭建日志系统
日志数据是典型的时序数据,因此,日志场景是时序数据库CTSDB的典型应用场景。下文主要描述如何用CTSDB搭建日志系统。
技术姐
2019/01/08
13.1K0
为什么有了 MySQL ,还要有时序数据库?
近日,UCloud新发布了一款时间序列数据库UTSDB (UCloud TimeSeries Database) ,此次上线的UTSDB-InfluxDB版基于InfluxDB v.1.7,完全兼容原生 InfluxDB 协议。后端存储接入 UCloud 自研的Manul统一存储,容量可动态扩充,最高可至数百TB,并通过高效压缩节省80%存储成本。支持高并发写入,QPS最高可达350万,为物联网等领域的亿级设备提供实时监控生产数据、全局掌握数据趋势等能力。
芋道源码
2019/12/26
4.2K0
为什么有了 MySQL ,还要有时序数据库?
饿了么《分布式时序数据库 - LinDB》
背景 饿了么对时序数据库的需求主要来自各监控系统,主要用于存储监控指标。原来使用graphite,后来慢慢有对指标有多维的需求(主要体现在对一个指标加多个Tag, 来组成Series,然后对Tag进行Filter和Group进行计算),这时graphite基本很难满足需求。 业界现在用的比较多的主要有如下几类TSDB: InfluxDB:很多公司都在用,包括饿了么有部分监控系统也是用InfluxDB。优点,支持多维和多字段,存储也根据TSDB的特点做了优化。但开源的部分不支持,很多公司自己做集群化, 但大
用户1263954
2018/06/22
2.4K0
时序数据库 InfluxDB(一)
数据库种类有很多,比如传统的关系型数据库 RDBMS( 如 MySQL ),NoSQL 数据库( 如 MongoDB ),Key-Value 类型( 如 redis ),Wide column 类型( 如 HBase )等等等等,当然还有本系列文章将会介绍的时序数据库 TSDB( 如 InfluxDB )。
凌虚
2020/07/17
3.7K0
时序数据库:TDengine与其他时序数据库比对测试
TDengine Database开源项目里已经包含了性能对比测试的工具源代码。https://github.com/taosdata/TDengine/tests/comparisonTest,并基于这个开源的测试工具开展了TDengine和InfluxDB对比测试,TDengine和OpenTSDB对比测试,TDengine和Cassandra对比测试等一系列性能对比测试。为了更客观的对比TDengine和其他时序数据库(Time-Series Database)的性能差异,本项目采用由InfluxDB团队开源的性能对比测试工具来进行对比测试,相同的数据产生器,相同的测试用例,相同的测试方法,以保证测试的客观公平。
Freedom123
2024/03/29
2K0
十分钟看懂时序数据库(I)-存储
2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。时序数据库作为物联网方向一个非常重要的服务,业界的频频发声,正说明各家企业已经迫不及待的拥抱物联网时代的到来。 本文会从时序数据
小小科
2018/05/04
4.6K0
十分钟看懂时序数据库(I)-存储
大白话之时序数据库入门篇
今天简单带大家了解一下时序数据库。聊聊什么是时序数据库,有什么特点,用在什么场景,和传统关系型数据库的区别与联系,以及开源解决方案调研。
陶朱公Boy
2022/10/28
2.6K0
大白话之时序数据库入门篇
Prometheus 参考实现的时序数据库 Gorilla 介绍
在大型微服务架构中,服务监控和实时分析需要大量的时序数据。存储这些时序数据最高效的方案就是使用时序数据库 (TSDB)。设计时序数据库的重要挑战之一便是在效率、扩展性和可靠性中找到平衡。这篇论文介绍的是 Facebook 内部孵化的内存时序数据库,Gorilla。Facebook 团队发现:
我是阳明
2022/04/06
1.4K0
Prometheus 参考实现的时序数据库 Gorilla 介绍
时序数据 mysql存储_【时序数据库】时序数据库介绍
时序数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库。时序数据库特别适用于物联网设备监控和互联网业务监控场景。
全栈程序员站长
2022/11/10
4.5K0
时序数据 mysql存储_【时序数据库】时序数据库介绍
什么是时序数据库
时序数据库,全称为时间序列数据库,主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据。这些数据主要由电力行业、化工行业、气象行业、地理信息等各类型实时监测、检查与分析设备所采集、产生。这些工业数据的典型特点是产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。
闫同学
2023/12/18
3600
时序数据库 CTSDB
互联网服务可以将用户的网络延迟数据、业务服务指标数据、日志数据等写进CTSDB数据库。然后由时序数据库直接生成报表以供技术产品做分析,尽早的发现、解决问题。
云服务器教程
2019/01/11
2.6K0
influxDB初识,一个高效的时序数据库
InfluxDB 数据模型将时间序列数据组织到存储桶和测量中。一个桶可以包含多个测量值。测量包含多个标签和字段。
Jensen_97
2023/07/28
9.7K0
influxDB初识,一个高效的时序数据库
时序数据库破局开放探讨
近几年IoT、IIoT、AIoT和智慧城市快速发展,时序/时空数据库成为数据架构技术栈的标配。根据国际知名网站DB-Engines数据,时序数据库在过去24个月内排名高居榜首,且远高于其他类型的数据库,可见业内对时序数据库的需求迫切。
用户6543014
2022/06/07
6750
时序数据库破局开放探讨
时序数据库学习一:什么是时序数据库
时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。
仙士可
2022/05/27
3.1K0
相关推荐
腾讯唯一时序数据库:CTSDB 解密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档