日吞吐万亿,腾讯云时序数据库CTSDB解密
一、背景
随着移动互联网、物联网、大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联网公司的监控数据等。实际上,这些按照时间顺序记录系统、设备状态变化的数据都是时序数据(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解密的更多相关文章
- 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...
- 腾讯云原生数据库TDSQL-C架构探索和实践
作为云原生技术先驱,腾讯云数据库内核团队致力于不断提升产品的可用性.可靠性.性能和可扩展性,为用户提供更加极致的体验.为帮助用户了解极致体验背后的关键技术点,本期带来腾讯云数据库专家工程师王鲁俊给大家 ...
- 又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖
日前,开源技术盛会PostgresConf.CN & PGconf.Asia2021大会(简称2021 PG亚洲大会)在线上隆重召开,腾讯云作为业内领先的云数据库服务商受邀出席,多位专家深入数 ...
- 腾讯云原生数据库TDSQL-C入选信通院《云原生产品目录》
近日,中国信通院.云计算开源产业联盟正式对外发布<云原生产品目录>,腾讯云原生数据库TDSQL-C凭借其超强性能.极致效率的弹性伸缩和完善的产品化解决方案体系,成功入围目录. 全球数字经济 ...
- 复盘价值1000万的腾讯云硬盘固件"BUG"
摘要: 除了吃瓜,还是得吸取教训啊同学们! 这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队. 硬盘门 这里说的硬盘门不是10年前陈老师的那一次,而聊的是最近"腾讯云&qu ...
- 腾讯云分布式数据库TDSQL在银行传统核心系统中的应用实践
本文是腾讯云TDSQL首席架构师张文在腾讯云Techo开发者大会现场的演讲实录,演讲主题是<TDSQL在银行传统核心系统中的应用实践>. 我是TDSQL架构师张文,同时也是TDSQL的开发 ...
- 记一次腾讯云MySQL数据库数据回滚
如题,因为操作人员的问题,需要对数据库数据进行回滚. 可以看到,设置了7天自动备份,且是物理冷备. 什么是物理冷备?科普一下: (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响.(2) ...
- SQLyog远程连接腾讯云服务器数据库Mysql遇到的坑
首先说明我的数据库是安装在云服务器上,不是专业的数据库服务器,没错就是10块钱包月的. 然后觉得使用SQLyog远程维护数据库比较方面,可是怎么都登录不上去. 下面分析原因: 1.安全组是否放过了访问 ...
- 腾讯云启动数据库进程,提示No such host is known
回想一下,系统是否切换过外网IP,切换过则检查/etc/hosts文件中IP和主机名对应关系 现象:出错前一直做域名解析
随机推荐
- 7.app和app后端的通讯
经常有开发者问:app和后端通讯是用http协议还是私有的协议?是用长连接还是短连接?通过阅读本文,帮你解除上面的疑问. (1)是用http协议还是私有的协议? 在间谍电视剧中,经常能看到间谍们的书信 ...
- 如何用VBS编写一个简单的恶搞脚本
windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档: 随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项 ...
- Java 读书笔记 (九) 运算符
短路逻辑运算符 && 当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了. ...
- Java中的Unsafe类111
1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准.但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty.Hadoo ...
- 【BZOJ 3754】: Tree之最小方差树
题目链接: TP 题解: 都是骗子233,我还以为是什么神奇的算法. 由于边权的范围很小,最小生成树和最大生成树之间的总和差不会太大,所以可以枚举边权和,再直接根据方差建最小生成树,每次更新答案即可. ...
- BZOJ_1030_[JSOI2007]文本生成器_AC自动机+DP
BZOJ_1030_[JSOI2007]文本生成器_AC自动机+DP Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群, 他 ...
- React Native 之极光推送jpush-react-native 手把手配置
这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大 ...
- 【h5+c3】web前端实战项目、快装webapp手机案例源码
快装WebApp项目(Web移动端开发案例)webapp移动端项目源码.html5+css3实战案例分享.微信端H5实例开发 简介快装WebApp是一个面向移动端的快速装修app,此项目为手机端:使用 ...
- hystrix基本介绍和使用(1)
一.hystrix基本介绍 Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个 ...
- surging 微服务引擎 1.0 正式发布
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希 ...