文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

2024-04-02 19:55

关注

背景:随着互联网的高速发展、大数据的迅速膨胀和物联网的飞速崛起,我们发现生活和工作中的大部分数据渐渐和时间产生了关联。比如微信运动的实时步数、股票每天的收盘价格、共享单车的设备状态等等。为了存储这些与时间相关的数据,积极拥抱物联网时代,各大企业纷纷推出自家的时序数据库。本文将对时序数据库的基本概念、应用场景及腾讯时序数据库CTSDB做简要介绍。



什么是时序数据库



1. 时序数据

1.1 什么是时序数据?

在引入时序数据库之前,先要了解“时序数据”的概念:按照时间顺序记录系统、设备状态变化的数据被称为时序数据(TimeSeries Data)。它普遍存在于IT基础设施、运维监控系统和物联网中。


时序数据从时间维度上将孤立的观测值连成一条线,从而揭示软硬件系统的状态变化。孤立的观测值不能叫时序数据,但如果把大量的观测值用时间线串起来,我们就可以研究和分析观测值的趋势及规律。其意义体现在两方面:


(1)从时间轴往后看,时序数据可做成报表,观测数据变化规律、捕获异常。这里举两个例子:
下图为共享单车在旧金山某热门区域的每小时车辆的借还数量。通过分析该区域车辆数目的历史数据,单车公司可得知热点借车时间段是否需要车辆补给。

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

 

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

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


(2)从时间轴向前看,时序数据可以建立数学模型、做统计分析,预测事物发展趋势。
举例,下图为联合国在2015年分析过往人口增长趋势后,发布的人口数字及预测报告。从图中可以看出未来非洲人口将持续增长,这是任何一个跨国企业都不该忽略的市场,也预示着当地政府面临重大挑战。

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

 

1.2 时序数据的数学模型

上面介绍了时序数据的基本概念,也说明了分析时序数据的意义。那么时序数据该怎样存储呢?数据的存储要考虑其数学模型和特点,时序数据当然也不例外。所以这里先介绍时序数据的数学模型和特点。

下图为一段时序数据,记录了一段时间内的某个集群里各机器上各端口的出入流量,每半小时记录一个观测值。这里以图中的数据为例,介绍下时序数据的数学模型(不同的时序数据库中,基本概念的称谓有可能不同,这里以腾讯CTSDB为准):

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


如上图所示,这组数据的metric为Network,每个point由以下部分组成:

同一个host、同一个port,每半小时产生一个point,随着时间的增长,field(bytes_in、bytes_out)不断变化。如host:host4,port:51514,timestamp从02:00 到02:30的时间段内,bytes_in 从 37.937上涨到38.089,bytes_out从2897.26上涨到3009.86,说明这一段时间内该端口服务压力升高。


1.3 时序数据特点

2. 时序数据库

有了时序数据后,该存储在哪里呢?首先我们看下传统的解决方案在存储时序数据时会遇到什么问题。


2.1 传统解决方案

时序数据往往是由百万级甚至千万级终端设备产生的,写入并发量比较高,属于海量数据场景。传统的时序数据解决方案主要有两种:关系型数据库(MySQL)、Hadoop生态。

·        MySQL:在海量的时序数据场景下存在如下问题

·        Hadoop生态(Hadoop、Spark等)

2.2 时序数据库

时序数据库是管理时序数据的专业化数据库,并针对时序数据的特点对写入、存储、查询等流程进行了优化,这些优化与时序数据的特点息息相关:

1) 存储成本:

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

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

2)  高并发写入:

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

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

3)  低查询延时,高查询并发:

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

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


2.3 开源时序数据库对比

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

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

 

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


CTSDB


腾讯CTSDB(Cloud Time Series Database)是一种分布式、高性能、多分片、自均衡的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT用户场景等做了大量优化,同时也支持各行业的日志解析和存储,其架构如下图所示。

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


1. CTSDB主要特点

1)  高性能:(具体性能数据将在后文给出)

支持批量写入、高并发查询;

通过集群扩展,随时线性提升系统性能;

支持sharding、routing,加速查询。

2)  高可靠:

支持多副本;

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

3)  易使用:

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

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

4)  低成本:

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

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

副本数可按需调整。

5)  强大的聚合能力:

max,min,avg,percentile,sum,count,group by等常用聚合;

复杂的脚本聚合(例如可对多字段间的计算结果做聚合);

时间区间聚合、GEO聚合、嵌套聚合。

6)  亮点能力:

数据监控告警:对存入数据进行数据量、字段统计、基线对比等监控,通过微信、短信、邮件告警;

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

数据时效性:支持数据过期删除;

数据导出。


2. 竞品性能对比测试

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


2.1 测试场景

CTSDB与InfluxDB对比测试:CTSDB与InfluxDB均单节点部署,单节点占用24个cpu核心,128g内存,万兆网卡,,磁盘SSD RAID0。


CTSDB单节点集群与双节点集群对比测试:用以验证CTSDB的线性扩展能力。


2.2 写入性能测试

数据样例:

导入的数据由InfluxDB的官方测试工具产生,https://github.com/influxdata/influxdb-comparisons。

数据为若干host的时序数据,每个point包含10个tag(均为string类型),10个filed(均为float类型),timestamp为时间戳(一个host每10秒一个点)。

样例如下所示:

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


测试结果:
(1) CTSDB单节点集群与InfluxDB单机版写入性能对比

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

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


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


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

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

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


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


2.3 查询性能测试

查询样例:

这里以CTSDB的查询语句为例:

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


查询语句解读:
取出1个host的全量数据,然后任取一个小时做过滤后,按分钟粒度分桶(groupby,最终结果有60个桶),最后输出所有的桶,并计算桶内所有数据的usage_user字段最大值 。


注意这里的查询使用了CTSDB的routing功能,用以加速查询。

查询结果样例:

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


测试结果:

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

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

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

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


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

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

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

 

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


关于我们




我们的现状

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


我们的未来

腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密

CTSDB即将在腾讯云正式上线,为物联行业提供技术服务!我们将在降低存储成本、提升易用性和丰富功能性等方面进一步优化CTSDB!欢迎对时序数据库和分布式存储感兴趣的同学加入我们!


腾讯技术工程 | 腾讯唯一时序数据库:CTSDB解密


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯