描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121360237
本书详细介绍了OpenTSDB的使用和深层次原理,包括OpenTSDB的网络层、OpenTSDB中UniqueId组件的原理、OpenTSDB如何实现时序数据的存储及相关优化、OpenTSDB如何实现时序数据的查询、OpenTSDB中的元数据及Tree结构的实现和功能、OpenTSDB中的插件及工具类实现原理内容,对时序数据库感兴趣的读者一定不要错过。
第1章 快速入门
1.1 时序数据简介
1.2 时序数据库
1.3 快速入门
1.3.1 基础知识
1.3.2 HBase简介
1.3.3 源码环境搭建
1.3.4 HTTP接口
1.3.5 示例分析
1.4 本章小结
第2章 网络层
2.1 Java NIO基础
2.2 Netty基础
2.2.1 ChannelEvent
2.2.2 Channel
2.2.3 NioSelector
2.2.4 ChannelBuffer
2.2.5 Netty 3示例分析
2.3 OpenTSDB网络层
2.3.1 TSDMain入口
2.3.2 PipelineFactory工厂
2.3.3 ConnectionManager
2.3.4 DetectHttpOrRpc
2.3.5 RpcHandler分析
2.3.6 RpcManager
2.3.7 HttpRpc接口
2.3.8 拾遗
2.4 本章小结
第3章 UniqueId
3.1 tsdb-uid表设计
3.2 UniqueId
3.2.1 分配UID
3.2.2 查询UID
3.2.3 UniqueIdAllocator
3.2.4 UniqueIdFilterPlugin
3.2.5 异步分配UID
3.2.6 查询字符串
3.2.7 suggest方法
3.2.8 删除UID
3.2.9 重新分配UID
3.2.10 其他方法
3.3 UIDMeta
3.4 本章小结
第4章 数据存储
4.1 TSDB表设计
4.1.1 压缩优化
4.1.2 追加模式
4.1.3 Annotation
4.2 TSDB
4.3 写入数据
4.4 Compaction
4.5 CompactionQueue
4.6 UID相关方法
4.7 本章小结
第5章 数据查询
5.1 DataPoint接口
5.2 DataPoints接口
5.3 RowSeq
5.4 Span
5.5 SpanGroup
5.5.1 AggregationIterator
5.5.2 Aggregator
5.6 DownsamplingSpecification
5.7 Downsampler
5.8 TagVFilter
5.9 TSQuery
5.10 TSSubQuery
5.11 TsdbQuery
5.11.1 初始化
5.11.2 findSpans()方法
5.11.3 创建Scanner
5.11.4 ScannerCB
5.11.5 GroupByAndAggregateCB
5.11.6 SaltScanner
5.12 TSUIDQuery
5.13 Rate相关
5.14 本章小结
第6章 元数据
6.1 tsdb-meta表
6.2 TSMeta
6.3 Annotation
6.4 本章小结
第7章 Tree
7.1 tsdb-tree表设计
7.2 Branch
7.3 Leaf
7.4 TreeRule
7.5 Tree元数据
7.6 TreeBuilder
7.7 本章小结
第8章 插件及工具类
8.1 插件概述
8.2 常用插件分析
8.2.1 SearchPlugin插件
8.2.2 RTPublisher插件
8.2.3 StartupPlugin扩展
8.2.4 HttpSerializer插件
8.2.5 HttpRpcPlugin扩展
8.2.6 WriteableDataPointFilterPlugin&UniqueIdFilterPlugin
8.2.7 TagVFilter扩展
8.3 插件加载流程
8.4 常用工具类
8.4.1 数据导入
8.4.2 数据导出
8.4.3 Fsck工具
8.4.4 其他工具简介
8.5 本章小结
OpenTSDB是一个分布式、可伸缩的时间序列数据库,其底层存储以HBase为主(这也是笔者使用的存储),当前版本也支持Cassandra等存储。正因为其底层存储依赖于HBase,其写入性能和可扩展性都得到了保证。OpenTSDB支持多tag维度查询,支持毫秒级的时序数据。OpenTSDB主要实现了时序数据的存储和查询功能,其自带的前端界面比较简单,笔者推荐使用强大的前端展示工具Grafana。另外,OpenTSDB也提供了丰富的插件接口,可以帮助开发人员对其进行扩展,在本书中也会进行详细介绍。
如何阅读本书
由于篇幅限制,本书并没有详细介绍Java语言的基础知识,但为便于读者理解OpenTSDB的设计思想和实现细节,笔者希望读者对Java语言的基本语法有一定的了解。
本书共8章,主要从源码角度深入剖析OpenTSDB的原理和实现。各章之间的内容相对独立,对OpenTSDB有一定了解的读者可以有目标地选择合适的章节开始阅读,当然也可以从第1章开始向后逐章阅读。本书主要以OpenTSDB的版本(2.3.1版本)为基础进行介绍。
第1章介绍时序数据库的基本特征,并列举了比较热门的开源时序数据库产品及一些云厂商的时序数据库产品。接下来介绍了OpenTSDB的基础知识,以及OpenTSDB中常用的API,其中重点分析了put和query这两个核心接口。后分析了OpenTSDB源码中提供的AddDataExample和QueryExample两个示例。
第2章深入分析OpenTSDB的网络层实现,其中介绍了Netty 3的基础知识,以及OpenTSDB网络层如何使用Netty。另外,本章介绍了OpenTSDB网络层中所有的HttpRpc实现,重点介绍了PutDataPointRpc和QueryRpc两个HttpRpc实现。
第3章简略说明了OpenTSDB使用HBase存储时序数据的大体设计,尤其介绍了RowKey的设计中UID的原理和作用。本章具体分析了HBase中tsdb-uid表的设计,以及UniqueId组件管理UID的功能。
第4章主要介绍了OpenTSDB存储时序数据的相关组件及其具体实现。首先分析了OpenTSDB中存储时序数据的TSDB表的设计,其中涉及RowKey的设计、列名的格式及不同格式的列名对应的数据类型。之后又简单介绍了OpenTSDB中的压缩优化、追加模式及Annotation存储相关的内容。接下来,深入分析了TSDB这一核心类的关键字段、初始化过程,以及写入时序数据的具体实现。后深入分析了OpenTSDB中压缩优化方面的具体实现,其中涉及Compaction和CompactionQueue两个组件的具体实现。
第5章主要介绍了OpenTSDB查询时序数据的相关组件。首先,介绍了OpenTSDB查询时涉及的一些基本接口类和实现类。然后,深入分析了OpenTSDB在查询过程中对时序数据的抽象,其中涉及RowSeq、Span及SpanGroup等组件。接下来,继续分析了OpenTSDB在查询时序数据的过程中涉及的其他组件。后,分析了TSQuery、TSSubQuery等核心查询组件的具体实现。
第6章主要介绍了OpenTSDB中元数据的相关内容。首先,介绍了存储TSMeta元数据的tsdb-meta表的RowKey设计及整张tsdb-meta表的结构。然后,分析了TSMeta类的核心字段、增删改查TSMeta元数据的具体实现。
第7章主要介绍了OpenTSDB中Tree(树形结构)相关的实现。首先,简单介绍了Tree中关键组成部分的概念及tsdb-tree表的结构。然后,深入剖析了OpenTSDB树形结构中核心组件的实现。后,深入分析了构建一个完整Tree的过程。
第8章主要介绍了OpenTSDB提供的插件体系和常用工具类的实现原理。首先,介绍了OpenTSDB插件的公共配置及一些共性特征。然后,针对OpenTSDB常用的插件接口进行了介绍。接着,分析了OpenTSDB加载插件的大致流程。后,详细分析了OpenTSDB中常用的三个工具类的实现,分别是TextImporter、DumpSeries及Fsck。此外,还简单介绍了其他几个工具类的功能。
如果读者在阅读本书的过程中,发现任何不妥之处,请将您宝贵的意见和建议发送到邮箱shen_baili @163.com,也欢迎读者朋友通过此邮箱与笔者进行交流。
致谢
感谢电子工业出版社博文视点的陈晓猛老师,是您的辛勤工作让本书的出版成为可能。同时,还要感谢许多我不知道名字的幕后工作人员为本书付出的努力!
感谢三十在技术上提供的帮助。
感谢小鱼同学,是你让我看到了星辰大海。
感谢我的母亲,谢谢您的付出和牺牲!
评论
还没有评论。