为什么腾讯QQ的大数据平台选择了InfluxDB数据库?( 二 )
有些团队在对InfluxDB进行了多年的学习和研究后 , 最终考虑到基于时序分片的复杂度而放弃了基于InfluxDB开发集群能力 , 转而选择基于RocksDB、Zookeeper等开源软件进行自建 。
笔者在3个月内快速开发出了CP和AP架构分离、时序分片、水平扩展等基本集群能力 , 另外 , 根据业务的特点 , 在索引引擎、冷热分离、查询实现、第三方协议、高可用性、可运营性等方面也做了大量的工作 。
最终的效果也是符合预期的 , 如从替换现有监控系统后台的实施对比来看 , 我们用了不到10%的机器成本就支撑起原监控后台所支撑的海量监控数据 , 成本优势突出 。
InfluxDB是一款非常优秀的软件 , 直接推动监控技术进入了实时、纳秒级的新时代 , 除了类SQL查询语言、RESTful API等现代特性外 , 还具有读写性能高、存储压缩率高、生态丰富、功能强大等特性 。
本文插图
01 什么是InfluxDB
InfluxDB是一个开源的、高性能的时序型数据库 , 在时序型数据库DB-Engines Ranking上排名第一 。
在介绍InfluxDB之前 , 先来介绍下时序数据 。 按照时间顺序记录系统、设备状态变化的数据被称为时序数据(Time Series Data) , 如CPU利用率、某一时间的环境温度等 。
时序数据以时间作为主要的查询纬度 , 通常会将连续的多个时序数据绘制成线 , 制作基于时间的多纬度报表 , 用于揭示数据背后的趋势、规律、异常 , 进行实时在线预测和预警 , 时序数据普遍存在于IT基础设施、运维监控系统和物联网中 。
时序数据主要有如下3个特点:
- 抵达的数据几乎总是作为新条目被记录 , 无更新操作 。
- 数据通常按照时间顺序抵达 。
- 时间是一个主坐标轴 。
传统数据库通常记录数据的当前值 , 时序型数据库则记录所有的历史数据 , 在处理当前时序数据时又要不断接收新的时序数据 , 同时时序数据的查询也总是以时间为基础查询条件 , 并专注于解决以下海量数据场景的问题:
- 时序数据的写入:如何支持千万级/秒数据的写入 。
- 时序数据的读取:如何支持千万级/秒数据的聚合和查询 。
- 成本敏感:海量数据存储带来的是成本问题 , 如何更低成本地存储这些数据 , 是时序型数据库需要解决的关键问题 。
具体的DB-Engines Ranking时序型数据库的排行榜(源自2019年5月的DB-Engines Ranking数据)如图1-1所示 。
- InfluxDB部署简单、使用方便 , 在技术实现上充分利用了Go语言的特性 , 无须任何外部依赖即可独立部署;
- 提供类似于SQL的查询语言 , 接口友好 , 使用方便;拥有丰富的聚合运算和采样能力;
- 提供灵活的数据保留策略(Retention Policy)来设置数据的保留时间和副本数;
- 在保障数据可靠性的同时 , 及时删除过期数据 , 释放存储空间;
- 提供灵活的连续查询(Continuous Query)来实现对海量数据的采样 。
- 支持多种通信协议 , 除了HTTP、UDP等原生协议 , 还兼容CollectD、Graphite、OpenTSDB、Prometheus等组件的通信协议 。
本文插图
▲图1-1 时序型数据库DB-Engines Ranking排名
- 热量|为什么有的人喝凉水都长肉,有的人却光吃不胖?营养科医生:原因其实很简单
- 驱动中国腾讯内部人士爆料:与“老干妈”合作多个环节有漏洞 却无人察觉
- 疫情|美国疫情速报:确诊数已逼近284万;特朗普发话:99%新冠病例完全无害;美专家:实际感染数或是现有数据10~24倍
- 央视记者火线追踪,腾讯告老干妈成热点,检察机关可以提前介入
- 蜜蜂蜇熊刺针拔不出而被肢解致死
- 三星手机|为什么三星手机,在我国越来越没市场了?原来这是必然结果
- 主从|Redis系列(五):主从复制
- 腾讯|原创 腾讯如果想冻结阿里的资金,阿里除了束手就擒还有办法反制么?
- 不执著财经|为什么越来越多的外企都搬迁到东南亚?
- 腾讯财讯|刚刚!中信证券、中信建投又澄清了,第二个“南北车”难诞生?