腾讯CTSDB时序存储 车联网海量低成本的时序存储集群 主讲人:闫恩全 目录 02 CTSDB在车联网领域的实践 01 车联网数据面临的挑战 车联网数据面临的挑战 车联网数据面临的挑战 车辆传感器状态信息 上报基数增长迅速,波峰波谷明显,扩展要求高亿Points/s,月增10%+,波峰波谷3倍+差距,扩展要求高使用Cassandra存储,扩容均衡慢,需停服 监管以及运营要求长期保存,成本高 PB级别数据,存储成本高 自运营,引入额外的运维人力成本 零存整取,访问性能要求高 每辆车零散上报数据,大时间范围提取数据共用计算资源,读写隔离差,查询延时不稳定 CTSDB在车联网领域的实践 CTSDB时序存储 高扩展 容器化云原生部署 灵活水平弹性伸缩节点 原生多AZ 高性能 写性能:写缓存,满足业务高并发场景 读性能:实时点查和秒级聚合分析 CTSDB 低成本 公共纬度提取+列式存储 降维/降精度存储自动数据过期 开源生态兼容 兼容开源InfluxDB生态、Grafana、 Prometheus等 对第三方组件的支持友好 零运维 全托管PaaS,监控告警和自动运维 数据安全 网络环境隔离、用户访问控制等多种手段保障集群、消息安全 CTSDB时序存储 高扩展低成本高性能业务案例 CTSDB时序存储—高扩展(动态计算池应对业务突发与隔离) Prometheus remote_writeapi InfluxDB LineProtocol/Telegraf ComputePoolfor Ingestion 计算节点 计算节点 。。。 计算节点 。。。 计算节点 cell cell 。。。 StorageLayer Mem SSD COS Mem SSD COS 计算节点 计算节点 。。。 计算节点 。。。 计算节点 ComputePoolfor Query SQL JDBCDriver Grafana InfluxQL/PromQL 计算高扩展 ü云原生部署,控制台无缝一键扩容; ü可配置cpu和mem阀值,级联自动扩缩容;ü在共享数据的基础上,支持启用多个计算池, 实现读写隔离,OLTP/OLAP隔离; CTSDB时序存储—高扩展(原生多AZ的无限存储扩展) 用户视图 存储高扩展 account db1db2 l用户在database和table两个层面组织数据; l底层存储在时间和维度两个方向扩展: 系统/物理视图 table1table2 (PartitionbyTime) ü时间层面的扩展,减少数据粘连,支持高效的 TTL和冷热分层; ü维度层面的扩展,支持扩展写入流量; 2024063020240729。。。 (SplitbyHash(Series)) l原生3AZ部署: 分区1 。。。 分区n 副本容灾+机房容灾; 副本1副本2副本3 az1az2az3 CTSDB时序存储—低成本(更贴合时序数据的存储模型) 在车联网场景中,一辆汽车往往有上千个传感器同时上传数据(包括位置信息、车辆状态、用户行为等)。CTSDB和Cassandra存储此类数据对比。 car,carid=1001,model=modelxsignal1=1.0,signal2=3.1,signal4=5.5,…,signaln=3.51722408708 car,carid=1001,model=modelxsignal1=1.0,signal2=3.1,signal4=5.5,…,signaln=3.51722408718 partition_key:1001 Þcluster_key:1722408708 Þmodel:modelx Þsignal1:1.0 Þ… Þsignaln:3.5 Þcluster_key:1722408718 Þmodel:modelx Þsignal1:1.0 Þ… Þsignal:3.5 Cassandra存储模型(行存+整体通用压缩) car,carid=1001,model=modelx<==>tsid1(时间线) timesignal1signal2…signalntsid1=>17224087081.03.13.5 17224087181.03.13.5 CTSDB存储模型(公共纬度提取+同时间线 同Field数据列存压缩) 通过公共纬度提取,深度挖掘同指标数据集的相似性,CTSDB相比于Cassandra有2X+的压缩比提升; CTSDB时序存储—低成本(追求更高压缩比的列存压缩) Int Float DeltaZigZag Gorrilla RLE Simple8bUncompress 二阶段通用压缩(平衡性能和压缩比): l时间分区较长时间不写才触发DeepCompaction;lDeepCompaction时才加码二阶段通用压缩; ZSTD Bool ScalToInt BitPacked IntCompress StringSnappy 混合多种特征提取算法,最大化发掘数据的冗余信息 lDelta:通过前后数据相减,重点记录数据的变化部分; lZigZag:负数变正数,发掘更多的前缀0;lRLE:等值数列转化成数值+频次; lSimple8b:发掘数值中连续的0或者1区间; lGorrilla:类似于Delta,前后值XOR之后,发掘前缀0和后缀0;lBitPacked:每个bit表示一个值; 数据集/压缩比一阶段特征压缩二阶段通用压缩 tsbscpu数据集(Int)72:1102:1 tsbscpu数据集(Float)72:1102:1 tsbscpu数据集(String)28:145:1 特征压缩+通用压缩,最高可实现100:1的压缩比 CTSDB时序存储—高性能 零存 每个时间线随着时间零零碎碎上报细 节数据 分层时序数据(SSD+COS) 整取 提取单时间线特定时间段内的全量数据 或者部分列数据 l单时间线数据集中存储,一次性批量提取,毫秒级延时; lRouteTag让查询精确到特定分区,杜绝查放大; 特定时间范围内的聚合查询 物化视图(预降采样,预降维度)降低实时聚合数据量,毫秒级聚合; 均衡性能和成本 冷热分层:最近数据保存SSD,冷数据沉降COS; 基于流计算实现的定制化物化视图(预降采样、预降纬度) CTSDB时序存储—业务案例 业务痛点(Cassandra) 扩展需停服 扩容需停服进行手动数据均衡,迁移数据慢 稳定性 开源组件稳定性不佳,维护复杂,性能不稳定,读写影响严重 成本高 Cassandra压缩比低 CTSDB方案 零运维,一键扩容,应对春节高峰 高可用99.95% 支持AZ级容灾 写入延时50%↓读取延时90%↓ 总成本32%↓ CTSDB时序存储—业务案例 业务痛点(Cassandra) 实时性稳定性成本高 电池高温大数据实时预警,交通事故关怀,要求数据实时性 车辆高峰期,开源技术栈遇到写入性能瓶颈 HBase通用压缩,压缩比低,成 本高 CTSDB方案 毫秒级可查实时预警 秒级弹性扩展应对业务高峰 存储成本25%↓ THANKS