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

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

。 高并发写入:

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

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

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

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

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

2.2 开源时序数据库对比

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

q4

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

。 没有free、易用的分布式版本(OpenTSDB支持分布式部署,但依赖系统过多,维护成本高);

。 聚合能力普遍较弱,而时序数据大多需要来做统计分析;

。 没有free的权限管理;

。 没有针对时间序列的多维度对比分析工具。

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

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

q5

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单机版写入性能对比

q6

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

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

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

q7

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

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

2.2 查询性能测试

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

q8

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

结论:

。 CTSDB查询性能整体比InfluxDB好很多,当并发数较高时(40),CTSDB查询性能比InfluxDB高出近4倍,在2w左右。

。 在并发线程数达到50时,InfluxDB出现链接错误,拒绝查询请求;此时,CTSDB可正常查询。

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

q9

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

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

关于我们

1. 我们的现状