热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一、背景随着移动互联网、物联网、大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的

文章目录[隐藏]

  • 二、传统时序数据解决方案存在大量问题
  • 三、写入、存储、查询多环节优化,时序数据库优势明显
    • 1. 时序数据模型及特点
    • 在引入时序数据库之前,先要了解【时序数据】的模型及特点。
    • 1.1 时序数据的数学模型
    • 1.2 时序数据特点
    • 2. 时序数据库
    • 2.1 时序数据库
    • 2.2 开源时序数据库对比
  • 四、历经每日万亿写入吞吐,腾讯云CTSDB技术架构
    • 1. CTSDB主要特点
    • 2. 竞品性能对比测试
    • 2.1 写入性能测试
    • 2.2 查询性能测试
  • 关于我们
    • 1. 我们的现状
    • 2. 我们的未来

一、背景

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

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


推荐阅读
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在拉斯维加斯举行的Interop 2011大会上,Bitcurrent的Alistair Croll发表了一场主题为“如何以云计算的视角进行思考”的演讲。该演讲深入探讨了传统IT思维与云计算思维之间的差异,并提出了在云计算环境下应具备的新思维方式。Croll强调了灵活性、可扩展性和成本效益等关键要素,以及如何通过这些要素来优化企业IT架构和运营。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
author-avatar
张三三
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有