文档章节

OpenTSDB的设计之道

浮躁的码农
 浮躁的码农
发布于 2015/05/07 11:39
字数 423
阅读 34
收藏 0
点赞 0
评论 0


OpenTSDB是一个架构在Hbase系统之上的实时监控信息收集和展示平台。

它在海量数据的压力下,仍然保证了存储的效率,那么它背后有什么值得借鉴的地方呢?
1)使用AsyncHbase而非HBase自带的HTable。使用线程安全、非阻塞、异步、多线程并发的HBase API,在高并发和高吞吐时,可以获得更好的效果。建议在使用 AsyncHBase时,在CPU core有保证的前提下,可以设置16或者24。
2)采用固定长度的Rowkey,让Rowkey包含尽可能多的检索信息。这一点的话,OpenTSDB存储的数据要包含大量的metrics和tag信息,这些信息的长度是变长的,因此,在实现上设置了一个表格uid-tsdb存储这些信息,作为一个全局唯一的编号,并把编号与TimeStamp合并作为Rowkey。
 
3)每一行要存储尽可能多的信息,这一点在OpenTSDB被发挥到了极致。例如,把某个时间段的分散采集的数据合并在一起,按照一个Row来提交给hbase。这种方案,会减少整个表格Rowkey的个数,从而提高检索Row的速度,但是该方法并没有节省存储空间。
在这个基础上,OpenTSDB又推动了一步,让一个column记录多条内容,从而降低存储空间的浪费。
4)按照时间的Boundary来存储,仍采用无状态的存储方案,从而提供系统的容错能力。
附录:OpenTSDB中一个KeyValue的存储结构如下:

本文转载自:

共有 人打赏支持
浮躁的码农

浮躁的码农

粉丝 58
博文 714
码字总数 141530
作品 0
松江
程序员
OpenTSDB中的一个奇怪现象

功能: 有个采集点,后端会周期性的采集指标数据,以及指标实例(TimeSeries)对应的元数据信息。 因此也就是要定期的更新TSMeta。 程序刚启动运行都很OK, 可是第二天看日志发现,很多Interal...

莫问viva
2015/05/26
0
0
OpenTSDB 2.3+及TCollector 1.3+安装配置排错

其实不太想用opentsdb,一直以来用influxdb+grafana挺方便的,而且tsdb依赖hbase,虽说容量和速度有保证,但是分布式系统对于一个监控平台来说,终归还是有些重了,出问题定位更繁琐,但领导...

Slaytanic
05/23
0
0
OpenTSDB2.1正式版本发布~

不错! 因为现在用的opnetsdb,之前一直担忧其中存在的问题,现在版本更新也挺快,bug修复也比较及时: Bug Fixes: FSCK was not handling compacted and floating point duplicates properl...

莫问viva
2015/05/19
0
2
笔记 - Twitter 分布式架构的可观察性

笔记 - Twitter 分布式架构的可观察性 Andy 2013/09/20-2013/09/20 - - - - - - 原文:Observability at Twitter Monday, September 9, 2013 By Cory G Watson (@gphat) [19:11 UTC] 目录 Ar......

erpingwu
2013/09/20
0
0
OpenTSDB - Chunked request not supported [解决]

OpenTSDB 中提供了tsmeta的管理接口, 提供存储元数据信息。 但是当我们再调用该接口时,request body中的内容过长,TSD后端使用的是netty进行网络通信,由于不能一次接收完整,就会出现断包...

莫问viva
2015/11/20
0
2
ARMS: 原来实时计算可以这么简单!

业务实时监控服务( ARMS)是一款阿里云应用性能管理(APM)类监控产品。借助本产品,您可以基于前端、应用、业务自定义等服务,迅速便捷地为企业构建秒级响应的业务监控能力。 其中自定义监...

中间件小哥
06/07
0
0
linux-快速安装可视化面板grafana

  简介   Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源...

linux运维菜
06/20
0
0
深度解读!时序数据库HiTSDB:分布式流式聚合引擎

背景 HiTSDB时序数据库引擎在服务于阿里巴巴集团内的客户时,根据集团业务特性做了很多针对性的优化。 然而在HiTSDB云产品的打磨过程中逐渐发现,很多针对性的优化很难在公有云上针对特定用户...

技术小能手
04/19
0
0
Learn Influxdb the hard way (1) - Overview of the architecture

前言 Influxdb是目前最流行的时序性数据库之一,由Go语言编写,无需特殊的环境依赖,简单方便,非常适合作为监控系统的后端存储。在容器相关领域的场景中,经常和telegraf、grafana、prometh...

莫源
05/04
0
0
大数据时代数据库-云HBase架构&生态&实践

2018第九届中国数据库技术大会,阿里云高级技术专家、架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲。主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其...

云迹九州
05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CentOS “Destination Host Unreachable”问题解决办法

挑战极速安装CentOS时遇到局域网主机不能通信的情况: [root@zjd network-scripts]# ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=......

wffger
11分钟前
0
0
CentoOS6.6安装netcat

CentOS下安装netcat 使用zookeeper过程中,需要监控集群状态。在使用四字命令时(echo conf | nc localhost 2181),报出如下错误:-bash: netcat: command not found。 我的系统是CentOS 6....

ghou-靠墙哭
22分钟前
0
0
es6之解构赋值巧用

ES6 允许按照一定模式,从数组、对象等中提取值,对变量进行赋值,这被称为解构赋值。 如何进行解构赋值我这里就不赘述,本篇文章主要是将解构赋值的巧妙使用之处。 1、交互变量的值 常用交互...

秋季长青
27分钟前
0
0
Elasitcsearch High Level Rest Client学习笔记(三)批量api

Bulk Request BulkRequest可以在一起从请求执行批量添加、更新和删除,至少需要添加一个操作 BulkRequest request = new BulkRequest(); //创建BulkRequestrequest.add(new IndexRequest("...

木子SMZ
30分钟前
0
0
mybatis-dynamic sql

OGNL expressions if 判断是否存在值 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{tit......

writeademo
37分钟前
0
0
社交系统ThinkSNS+ V1.8.3更新播报

     研发发布版本号:1.8.3   本次版本于2018年7月16日发布   本次发布类型:新增功能、细节调整与优化   社交系统ThinkSNSPlus更新体验:请于官网下载/安装最新版或联系QQ35159...

ThinkSNS账号
41分钟前
0
0
教育思考:选择编程是一场父母和孩子的和解[图]

教育思考:选择编程是一场父母和孩子的和解[图]: 之前有个很热的段子是这样讲的:深夜十点的时候,某小区一女子大声喊叫“什么关系?啊?!到底什么关系?你说!”最后发现原来是一位妈妈陪...

原创小博客
42分钟前
0
0
X64汇编之指令格式解析

最近由于项目组内要做特征码搜索的东西,便于去Hook一些未导出函数,你懂得...于是就闲着学习了一下x86/x64的汇编指令格式。x86的汇编指令格式请参照http://bbs.pediy.com/showthread.php?t...

simpower
44分钟前
0
0
rust 语法概要(只适合不熟悉时快速查阅使用,不适合理解其精髓。未完待续)

注意:本内容只适合快查,不适合理解精髓。精髓请研读 https://kaisery.github.io/trpl-zh-cn/foreword.html 基本数据类型 i8,i16,i32,i64,i128 u8,u16,u32,u64,u128 f32,f64 char bool:true...

捍卫机密
47分钟前
0
0
JS中严格模式和非严格模式

1,使用 严格模式的使用很简单,只有在代码首部加入字符串 "use strict"。必须在首部即首部指其前面没有任何有效js代码除注释,否则无效 2.注意事项 (1)不使用var声明变量严格模式中将不通...

AndyZhouX
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部