操作系統 : CentOS7.3.1611_x64 go語言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目錄結構 目錄解析說明: influxdb 為源碼的主目錄 influxql 實現了InfluxDB查詢語言的解析器(源碼主目錄裡面引用的是i ...
操作系統 : CentOS7.3.1611_x64
go語言版本:1.8.3 linux/amd64
InfluxDB版本:1.1.0
influxdata主目錄結構
[root@localhost influxdata]# pwd /root/dev/golib/src/github.com/influxdata [root@localhost influxdata]# tree -d -L 1 . ├── influxdb ├── influxql ├── usage-client ├── yamux └── yarpc
目錄解析說明:
- influxdb
為源碼的主目錄
- influxql
實現了InfluxDB查詢語言的解析器(源碼主目錄裡面引用的是influxdata/influxdb/influxql,沒有該目錄的相關引用)
- usage-client
client lib V1版本
- yamux
Yet another Multiplexer(又一個多路復用器)是Golang的多路復用庫
- yarpc
Yet Another RPC (又一個RPC)是Golang的RPC庫
源碼主目錄結構
一級目錄結構如下:
[root@localhost influxdb]# pwd /root/dev/golib/src/github.com/influxdata/influxdb [root@localhost influxdb]# tree -d -L 1 . ├── client ├── cmd ├── coordinator ├── etc ├── importer ├── influxql ├── internal ├── man ├── models ├── monitor ├── pkg ├── scripts ├── services ├── stress ├── tcp ├── tests ├── toml ├── tsdb └── uuid
二級目錄結構如下:
[root@localhost influxdb]# tree -d -L 2 . ├── client │ └── v2 ├── cmd │ ├── influx │ ├── influxd │ ├── influx_inspect │ ├── influx_stress │ └── influx_tsm ├── coordinator ├── etc │ └── burn-in ├── importer │ └── v8 ├── influxql │ ├── internal │ └── neldermead ├── internal ├── man ├── models ├── monitor │ └── diagnostics ├── pkg │ ├── deep │ ├── escape │ ├── limiter │ ├── pool │ └── slices ├── scripts ├── services │ ├── admin │ ├── collectd │ ├── continuous_querier │ ├── graphite │ ├── httpd │ ├── meta │ ├── opentsdb │ ├── precreator │ ├── retention │ ├── snapshotter │ ├── subscriber │ └── udp ├── stress │ ├── stress_test_server │ └── v2 ├── tcp ├── tests │ ├── siege │ ├── tmux │ └── urlgen ├── toml ├── tsdb │ ├── engine │ └── internal └── uuidView Code
目錄解析說明:
- client
client lib V2版本
- cmd
InfluxDB相關程式所在目錄。其中:
influxd目錄為InfluxDB主程式代碼;
influx為InfluxDB自帶的控制台管理工具源碼;
influx_inspect為InfluxDB數據查看工具源碼;
influx_stress為InfluxDB壓力測試工具源碼;
influx_tsm為資料庫轉換工具(將資料庫從b1或bz1格式轉換為tsm1格式)源碼
- coordinator
協調器,負責數據的寫入和一些創建語句的執行。
在InfluxDB的ChangeLog中顯示在v1.0.0中使用coordinator替換cluster,感覺自建集群功能可以通過此模塊實現。
- etc
存放預設配置
- importer
版本向後相容相關代碼,在ReadMe中已經提到:Version 0.8.9 of InfluxDB adds support to export your data to a format that can be imported into 0.9.3 and later.
- influxql
實現了InfluxDB查詢語言的解析器
- internal
主要實現了MetaClient介面
- man
幫助手冊
- models
基礎數據類型定義
- monitor
InfluxDB系統監控
- pkg
一些通用包的集合。
deep裡面主要實現了deepValueEqual方法,用於深層次比較兩個值是否相等;
escape裡面主要實現了byte和string兩種數據類型轉義字元的相關操作;
limiter裡面主要是一個基於channel實現的簡單併發限制器Fixed;
pool裡面主要實現了Bytes和Generic兩種類型的Pool,在Pool中的對象不使用時不會被垃圾回收自動清理掉;
slices 裡面主要實現了一些string數組的操作;
- scripts
該目錄存放的是一些關於InfluxDB的腳本。
- services
該目錄存放的是一些關於InfluxDB的服務。
admin 為InfluxDB內置的管理服務;
collectd 為collectd(https://collectd.org)對接服務,可以接收通過UDP發送過來的collectd格式數據;
continuous_querier 為InfluxDB的CQ服務;
graphite 為InfluxDB的graphite服務;
httpd 為InfluxDB的http服務,可以通過該介面進行資料庫數據的寫入和查詢等操作;
meta 為InfluxDB的元數據服務,用於管理資料庫的元數據相關內容;
opentsdb 為InfluxDB的opentsdb服務,可用於替換opentsdb;
precreator 為InfluxDB的Shard預創建服務;
retention 為InfluxDB的數據保留策略的強制執行服務,主要用於定時刪除文件;
snapshotter 為InfluxDB的快照服務;
subscriber 為InfluxDB的訂閱服務;
udp 為InfluxDB的udp服務,可以通過該介面進行資料庫的寫入和查詢等操作;
- stress
該目錄存放的是壓力測試相關內容。
- tcp
網路連接的多路復用。
- tests
測試相關內容
- toml
toml的解析器,和另一個toml解析器(github.com/BurntSushi/toml)不同,為獨立的解析模塊,主要是解析時間字元串和磁碟容量數據。
- tsdb
tsdb目錄主要是時序資料庫的實現。
- uuid
該目錄裡面主要存放uuid生成的相關代碼。
好,就這些了,希望對你有幫助。
本文github地址:
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2017/20171228_InfluxDB源碼目錄結構解析.rst
歡迎補充