一、背景

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

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

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

  

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

  

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

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

  1. MySQL等关系型数据库:

  · 写入吞吐低:单机写入吞吐低,很难满足时序数据千万级的写入压力;

  · 存储成本大:对于时序数据压缩不佳,需占用大量机器资源;

  · 维护成本高:单机系统,需要在上层人工的分库分表,维护成本高;

  · 查询性能差:适用于交易处理,海量数据的聚合分析性能差。

  2. Hadoop、Spark等批处理系统

  · 数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;

  · 查询性能差:不能很好的利用索引,依赖批处理任务,查询耗时一般在分钟级以上。

  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!

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

日吞吐万亿,腾讯云时序数据库CTSDB解密的更多相关文章

  1. 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...

  2. 腾讯云原生数据库TDSQL-C架构探索和实践

    作为云原生技术先驱,腾讯云数据库内核团队致力于不断提升产品的可用性.可靠性.性能和可扩展性,为用户提供更加极致的体验.为帮助用户了解极致体验背后的关键技术点,本期带来腾讯云数据库专家工程师王鲁俊给大家 ...

  3. 又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖

    日前,开源技术盛会PostgresConf.CN & PGconf.Asia2021大会(简称2021 PG亚洲大会)在线上隆重召开,腾讯云作为业内领先的云数据库服务商受邀出席,多位专家深入数 ...

  4. 腾讯云原生数据库TDSQL-C入选信通院《云原生产品目录》

    近日,中国信通院.云计算开源产业联盟正式对外发布<云原生产品目录>,腾讯云原生数据库TDSQL-C凭借其超强性能.极致效率的弹性伸缩和完善的产品化解决方案体系,成功入围目录. 全球数字经济 ...

  5. 复盘价值1000万的腾讯云硬盘固件"BUG"

    摘要: 除了吃瓜,还是得吸取教训啊同学们! 这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队. 硬盘门 这里说的硬盘门不是10年前陈老师的那一次,而聊的是最近"腾讯云&qu ...

  6. 腾讯云分布式数据库TDSQL在银行传统核心系统中的应用实践

    本文是腾讯云TDSQL首席架构师张文在腾讯云Techo开发者大会现场的演讲实录,演讲主题是<TDSQL在银行传统核心系统中的应用实践>. 我是TDSQL架构师张文,同时也是TDSQL的开发 ...

  7. 记一次腾讯云MySQL数据库数据回滚

    如题,因为操作人员的问题,需要对数据库数据进行回滚. 可以看到,设置了7天自动备份,且是物理冷备. 什么是物理冷备?科普一下: (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响.(2) ...

  8. SQLyog远程连接腾讯云服务器数据库Mysql遇到的坑

    首先说明我的数据库是安装在云服务器上,不是专业的数据库服务器,没错就是10块钱包月的. 然后觉得使用SQLyog远程维护数据库比较方面,可是怎么都登录不上去. 下面分析原因: 1.安全组是否放过了访问 ...

  9. 腾讯云启动数据库进程,提示No such host is known

    回想一下,系统是否切换过外网IP,切换过则检查/etc/hosts文件中IP和主机名对应关系 现象:出错前一直做域名解析

随机推荐

  1. java.lang.IllegalArgumentException异常 配置文件的问题

    java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Student is ...

  2. bzoj 2763 [JLOI2011]飞行路线 Dijikstra 分层

    k<=10,所以每用一次机会就跳到一个新图中, 每一个图按原图建边,相邻两图中建边权为0的边 补一补dj,好像我以前觉得dj特别难,hhhhh #include<cstdio> #i ...

  3. BZOJ3629(JLOI2014)聪明的燕姿

    (⊙﹏⊙)我交了好久,有坑啊...(如果没有匹配的话,即输出0种情况要记得换行...) 就是搜索,加上一点数论,并不太难... #include<cstdio> #include<c ...

  4. Ubuntu下安装mysql与mysql workbench

    Ubuntu 安装jdk:[链接] Ubuntu安装eclipse:[链接] Ubuntu下安装MySQL与mysql workbench:[链接] Ubuntu配置tomcat9:[链接] 1.su ...

  5. java 泛型的类型擦除与桥方法

    泛型类 --代码参考:java核心技术 卷1 第十版 public class Pair<T> { private T first; private T second; //构造器 pub ...

  6. SpringBoot---页面跳转之WebMvcConfigurerAdapter

    摘要:在springboot中定义自己的方法继承WebMvcConfigurerAdapter方法可以实现扩展springMvc功能,要全面实现接管springmvc就要在自己的方法上加上@Enabl ...

  7. Linux 文件/文件夹无法删除问题解决方案

    最近我们的服务器被黑客攻击,然后有些文件的属性被修改,导致我们无法删除病毒文件,同时采用 root 用户也无法删除,现在把解决方案记录下来. 普通删除 如果文件是当前用户的,那么使用 rm 命令就可以 ...

  8. MIP 技术交流分享(3月15日)

    3月15日下午,MIP 团队工程师与58赶集的 Web 前端工程师进行了一次面对面的技术交流. 在这次交流中,MIP 工程师主要分享了 MIP 技术原理,MIP 加速原理,以及 MIP 为开发者提供的 ...

  9. asp.net core系列 48 Identity 身份模型自定义

    一.概述 ASP.NET Core Identity提供了一个框架,用于管理和存储在 ASP.NET Core 应用中的用户帐户. Identity添加到项目时单个用户帐户选择作为身份验证机制. 默认 ...

  10. 学习 JavaScript (三)核心概念:语法、变量、数据类型

    JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...