OpenTSDB简介

TSDB

基础概念


时序数据库:提供高效存取时序数据和统计分析功能的数据管理系统,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景。

在这里插入图片描述

TSDB特点


  • 高吞吐量写入

  • 数据分级存储

  • 高压缩率减少存储空间

  • 多维度查询能力

  • 高效聚合能力

OpenTSDB

  • Opentime series database

  • 是基于Hbase的分布式的,可扩展的时间数据库

  • 它是建立在Hbase上的一层数据读写服务

How does OpenTSDB work?

OpenTSDB框架

在这里插入图片描述

  • Servers:就是服务器了,C就是指Collector,通过Collector收集数据,推送数据;

  • TSD:TSD是对外通信的无状态的服务,Collector可以通过TSD简单的RPC协议推送监控数据;

  • TSD还提供了一个webUI页面供数据查询;另外也可以通过脚本查询监控数据,对监控数据做报警;

  • HBase:TSD收到监控数据后,是通过AsyncHbase这个库来将数据写入到HBase;AsyncHbase是完全异步、非阻塞、线程安全的Hbase客户端,使用更少的线程、锁以及内存,可以提供更高的吞吐量,特别对于大量的写操作。

名词解释

In OpenTSDB, a time series data pointconsists of:

  • A metric name.

  • A UNIX timestamp (seconds or millisecondssince Epoch).

  • A value (64 bit integer orsingle-precision floating point value), a JSON formatted event or ahistogram/digest.

  • A set of tags (key-value pairs) thatdescribe the time series the point belongs to.

{
    "metric":"temperature", 
    "timestamp":1567675709879, 
    "value":20.5, 
    "tags":{
        "host":"device-1"
    }
}

数据查询

监控场景中,我们可以这样定义一个监控指标:

在这里插入图片描述

OpenTSDB支持的查询场景为:

指定指标名称和时间范围,给定一个或多个标签名称和标签的值作为条件,查询出所有的数据。

以上面那个例子举例,我们可以查询:

  • sys.cpu.user (host=,cpu=)(1465920000<= timestamp < 1465923600)

查询凌晨0点到1点之间,所有机器的所有CPU核上的用户态CPU消耗。

  • sys.cpu.user (host=10.101.168.111,cpu=*)(1465920000<= timestamp < 1465923600)

查询凌晨0点到1点之间,某台机器的所有CPU核上的用户态CPU消耗。

  • sys.cpu.user (host=10.101.168.111,cpu=0)(1465920000<= timestamp < 1465923600)

查询凌晨0点到1点之间,某台机器的第0个CPU核上的用户态CPU消耗。

存储优化

在这里插入图片描述

rowkey采用metricname + timestamp + tags的组合,唯一确定一个指标值。

核心优化:缩短rowkey

在这里插入图片描述

OpenTSDB采用的策略是:为每个metric、tag key和tagvalue都分配一个UID,UID为固定长度三个字节。

Rowley的长度大大的缩短了,好处:

  • 节省存储空间

  • 提高查询效率:减少key匹配查找的时间

  • 提高传输效率:不光节省了从文件系统读取的带宽,也节省了数据返回占用的带宽,提高了数据写入和读取的速度。

  • 缓解内存压力:String存储的metric name、tagkey或tag value,现在均可以用3个字节的byte array替换,大大节省了内存占用

其它存储优化:减少Key-Value数

在这里插入图片描述

合并行和列,进一步缩短存储量。

其它存储优化:并发写优化

进行预分桶,避免写热点
在这里插入图片描述

常用HTTP API

插入数据:/api/put

在这里插入图片描述

查询数据:/api/query

在这里插入图片描述

其它HTTP API

在这里插入图片描述

具体参考官网:

http://opentsdb.net/docs/build/html/api_http/index.html

OpenTSDB安装

参考官网:

http://opentsdb.net/docs/build/html/installation.html

其它TSDB对比

TSDB Ranking

在这里插入图片描述

TSDB Ranking

OpenTSDB VS InfluxTSDB

在这里插入图片描述

在这里插入图片描述

参考

OpenTSDB官网

InfluxDB官网

TSDB简介

TSDB特点

TSDB框架介绍

OpenTSDB存储优化

TSDB Ranking

OpenTSDB VS InfluxTSDB

OpenTSDB 对比 InfluxTSDB

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OpenTSDB是一个基于Java的开源时间序列数据库,用于存储和分析大规模的时间序列数据。它是由StumbleUpon开发的,旨在解决海量数据的存储和查询问题。 OpenTSDB的主要特点包括: 1. 高性能:OpenTSDB使用HBase作为底层存储引擎,具有良好的水平扩展性和高吞吐量,可以处理大规模的数据。 2. 灵活的数据模型:OpenTSDB支持灵活的标签(tag)和指标(metric)的数据模型,可以方便地对数据进行组织和查询。 3. 强大的查询功能:OpenTSDB提供了丰富的查询功能,包括按时间范围、标签过滤、聚合等,可以满足各种复杂的查询需求。 4. 可扩展性:OpenTSDB支持水平扩展,可以通过添加更多的节点来增加存储容量和查询吞吐量。 5. 社区支持:OpenTSDB拥有活跃的开源社区,提供了丰富的文档和示例代码,方便用户学习和使用。 如果你想在Java中使用OpenTSDB,可以通过以下步骤进行: 1. 引入OpenTSDB的Java客户端库:你可以在Maven或Gradle中添加OpenTSDB的依赖,然后进行编译和打包。 2. 配置连接信息:在Java代码中,你需要配置OpenTSDB的连接信息,包括服务器地址、端口号等。 3. 创建数据点:使用Java客户端库,你可以创建时间序列数据点,并设置相应的标签和指标。 4. 写入数据:通过Java客户端库提供的API,你可以将数据点写入OpenTSDB中。 5. 查询数据:使用Java客户端库提供的查询API,你可以执行各种查询操作,获取所需的时间序列数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值