小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球

百度大规划时序数据存储(一)| 监控场景的时序数据文章中,咱们简要地介绍了百度监控场景时序数据的特色,且剖析了在每天万亿级的数据规划下,时序数据的存储所面临着的许多应战。本篇将介绍 TSDB 在计划选型存储模型规划上的实践。

TSDB(Time Series Database,时刻序列数据库)是一种日趋盛行的数据库,从 DB-Engines 供给的最近一年各类数据库盛行趋势来看,最近一年TSDB小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球 的增加势头微弱,远超其它类型的数据库。



图1 数据库分类盛行趋势


二 底层存储选型

为了更好地习惯事务需求,咱们挑选自研 TSDB,因为时序数据的规划很大,咱们在底层存储的选型上需求稳重考量。在百万级目标的规划下,用 MySQL 来完成就能够满意需求,如开源监控体系 Zabbix 的底层存储计划。

跟着事务的快速开展,咱们的数据规划也从百万级涨到了千万级以至于现在的万亿级,此刻传统联系型数据库愈显乏力。咱们尝试过的一些集群计划在读/写推迟上并没有明显的提高,其扩展才能也仅仅差强人意,这迫使咱们寻求新的计划。

从头审视咱们对存储体系的中心需求:高吞吐、低推迟、可扩展。关于监控场景来说,联系型数据库的强共同模型、事务机制以及联合查询等强项并不是咱们重视的要点,单个数据点的丢掉并不影响监控目标的全体趋势,数据的偶发推迟也能够承受。

近两年开源的 TSDB 项目不断涌现(见图 2),许多优异生果捞的做法的项目也成为咱们调研和学习的目标,咱们发现这些项目在底层存储的选型上各有偏好,这儿罗列吴俊匡一些:

  • OpenTSDB:闻名的老牌 TSDB,底层存储开始只支撑 HBase,后来增加了对 泰安杨荣和最新任职Cassandra 的支撑
  • InfluxDB:旱魃根据自研的 苏秦TSM 存储引擎,集群计划未开源
  • KairosDB:发源于 OpenTSDB,前期底层选用 HBase功夫小子,现在主打运用 Cassandra,还支撑H2(用于非生产环境)
  • Prometheus:Google 监控体系 Bor成都周边一日游gmon 的开源版别,根据 LevelDB和本地存储



图2 TSDB排名改变趋势

但是无论是 HBase、Cassandra、LevelDB 仍是 InfluxDB 的 TSM 存储引擎,他们的一个重要共同点便是都根据 LSM-tree 完成(Log-Strutured Merge-tree,日志结构兼并树)。如图 3 所示,LSM-tree 这种树形结构能够像打印日志一般,以追加的方法次序写入数据,而且不断地将较小的数据块兼并成更大的块,终究将数据批量地刷写到磁盘。


图3 LSM-tree

运用 LSM-tree 有什么实践的含义?在上一篇文皇后大路东章中咱们说到,监控数据的写入量非常大(每秒数千万做我的奴隶数据点),存储时长最长可达数年,从本钱视点夏利考虑,廉价的磁盘自然是适宜的挑选。但是,磁盘的机械结构使得其随机 I/O 功用在面临每秒数千万的写入恳求时显得无能为力。LSM-tree正是能够凭借内存缓冲将许多的随机写入转化成批量的次序写入,使得终究磁盘承载的写入次数对数级削减,极大地提高了写入吞吐量

归纳来看,NoSQL 数据库是更适宜的挑选。在许多 NoSQL 数据库中,咱们挑选了根据 LSM 完成的 HBase ,首要出于如下考虑:

  • 高吞吐、低推迟,满意读/写功用需求
  • 数据存储在 HDFS,支撑多副本冗余,满意牢靠性需求
  • 表格存储,模型简略、事务开发较为便利
  • 支撑小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球横向扩展,可线性第二军医大学扩容,能够习惯事务增加
  • 老练的代码、活泼的社区和广泛的使用事例

三 根据HBase的存储规划

HBase Table 中的数据依照 RowKey 的字典序摆放,内行的方向上数据能够散布到多个 HRegion中,而 HRegion 能够散布在不同的节点上,因而只需能够使数据均匀地散布在 HRegion 中,就能够完成小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球存储的负载均杀了我治好我衡。

图4 HRegion的散布

简单看出,RowKey 的规划是负载均衡的要害。假如 RowKey 规划欠好,就简单构成热门HRegion,导致其地点节点负载过重,从而集群的全体功用下降。

接下来小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球要点介绍 TSDB 中最要害的两张表的规划:数据表和维度索引表。前者支撑了一切时序数据的存储和查询,后者是多维度聚咱们立足于美利坚合查询的根底。

1数据表

前文介绍过,监控时刻序列构成如下:

时刻序列 = 监控目标 + 标签列表 + 监控项 + 数据点

为便利解说,换一种方式表述:

ts = (object + tags) + metric + [(timestamp, value), (timestamp, value), ...]

可见,由object + tags + metric + timestamp 能够仅有定位一个数据点的取值。为了充分利用HBase 的特赵碧琰性,咱们学习了 OpenTSDB 的做法,将 RowKey 规划如下:

RowKey = entity_id + metric_id + timebase

entity_id 是由 object 和 tags 的经过 hash 得到的一个固定长度的值,hash 后原始字符串的自小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球然次序被打乱,使得 RowKey 能够相对均匀地散布在不同 HRegion 中。

metric_id 为 metric 的字符串 hash 值,同样是固定长度。

timebase 为 Unix 时刻戳依照 1 小时(3600 秒)取整得到的数值,固定 4 个新月字节的长度

这样的规划有如下优点:

  • entity_id 和 小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球metric_id 的散列使得数据相对均匀散布
  • timebase 置于 Ro猎巫收割者wKey 的字节低位,使得同一个时刻序列数据的 RowKey 接连散布,能够高效地按时刻进行规模扫描
  • 固定长度的 RowKey 削减了空间糟蹋,一起前缀式的规划能够充分利用 HBase 的前缀紧缩机制,进一步节约 RowKey 所占空间

RowKey 代表的行包括 1 小时的数据,行中数据点依照当时时刻在 1 小时内的偏移量进行存储,终究的表结构暗示青云宦途记如表 1:

表1 数据表 RowKey 规划



2维度索引表

在数据表的规划中,tags 被编码进固定长度的 entity_i小便刺痛,远大前程-188bet官网_188足球比分直播_188bet手机滚球d 中,一起 HBase 并没有对索引的原生支撑,这导致无法经过 tag 找到对应的 entity_id,也就无法满意数据的多维度检索聚合需求。为此咱们引入了一张索引表,树立从 tag 到 entity_id 的映射,以支撑经过 tag 挑选数据。

如图 5 所示,经过指定一个 tag: k1=v1,能够查到一切包括这个 tag 的 entity_id1、entity_id2 和entity_id3。



图5 维度索克罗地亚引

RowKey 的结构比较简略:

RowKey = key + value

索引对应的 entity_id 直接作为 Column 的 Qualifier 存储,对应的 Column Value 留空,终究的表结构:

表2 索引表规划



总结

底层存储选型和数据模型规划是 TSDB 规划中的两个重要的根底环节,前者决议葛平了后者的规划思路,后者的规划影响上层功用的规划完成,二者又与集群的架构规划和功用体现休戚相关。但是,影响体系功用和可用性的规划环节还有许多,接下来的文章将逐渐为读者介绍百度 TSDB 在功用架构上的规划实践。敬请期待~~

若您有任何疑问或想进一步了解百度大规划时序数据存储问题,欢迎给咱们留言!

转载原创文章请注明,转载自188bet官网_188足球比分直播_188bet手机滚球,原文地址:http://www.care-cierge.com/articles/516.html

上一篇:空气净化器,龙卷风-188bet官网_188足球比分直播_188bet手机滚球

下一篇:沛县天气,什-188bet官网_188足球比分直播_188bet手机滚球