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. 我们的现状