本書主要以OpenTSDB的最新版本(2.3.1版本)為基礎進行介紹。第1章從OpenTSDB的入門開始,介紹市面上多種時序數據庫和云端時序數據庫,OpenTSDB的基礎概念、源碼環境搭建及Grafana的基本使用等。第2章主要介紹OpenTSDB的網絡層,涉及Java NIO基礎、Netty基本使用,分析了OpenTSDB網絡層的架構和實現。第3章介紹OpenTSDB中UniqueId組件的原理,主要講解如何實現UID與字符串之間的映射。第4章介紹OpenTSDB如何實現時序數據的存儲及相關優化。第5章介紹OpenTSDB如何實現時序數據的查詢,其中分析了OpenTSDB查詢中每個步驟的實現。第6章和第7章主要介紹OpenTSDB中的元數據及Tree結構的實現和功能。第8章主要分析OpenTSDB中的插件及工具類實現原理。
2015至今,負責XS云平臺的基礎架構設計及研發工作,XS云平臺以Kafka為消息總線,收集用戶產生操作日志,為后臺多個數據分析平臺提供數據源。
目 錄
第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 本章小結