操作系统 : CentOS 7.3.1611_x64
go 语言版本:1.8.3 linux/amd64
InfluxDB 版本:1.1.0
- [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 查询语言的解析器(源码主目录里面引用的是 influxdata/influxdb/influxql,没有该目录的相关引用)
client lib V1 版本
Yet another Multiplexer(又一个多路复用器)是 Golang 的多路复用库
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
- └── uuid
目录解析说明:
client lib V2 版本
InfluxDB 相关程序所在目录。其中:
influxd 目录为 InfluxDB 主程序代码;
influx 为 InfluxDB 自带的控制台管理工具源码;
influx_inspect 为 InfluxDB 数据查看工具源码;
influx_stress 为 InfluxDB 压力测试工具源码;
influx_tsm 为数据库转换工具(将数据库从 b1 或 bz1 格式转换为 tsm1 格式)源码
协调器,负责数据的写入和一些创建语句的执行。
在 InfluxDB 的 ChangeLog 中显示在 v1.0.0 中使用 coordinator 替换 cluster,感觉自建集群功能可以通过此模块实现。
存放默认配置
版本向后兼容相关代码,在 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.
实现了 InfluxDB 查询语言的解析器
主要实现了 MetaClient 接口
帮助手册
基础数据类型定义
InfluxDB 系统监控
一些通用包的集合。
deep 里面主要实现了 deepValueEqual 方法,用于深层次比较两个值是否相等;
escape 里面主要实现了 byte 和 string 两种数据类型转义字符的相关操作;
limiter 里面主要是一个基于 channel 实现的简单并发限制器 Fixed;
pool 里面主要实现了 Bytes 和 Generic 两种类型的 Pool,在 Pool 中的对象不使用时不会被垃圾回收自动清理掉;
slices 里面主要实现了一些 string 数组的操作;
该目录存放的是一些关于 InfluxDB 的脚本。
该目录存放的是一些关于 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 服务,可以通过该接口进行数据库的写入和查询等操作;
该目录存放的是压力测试相关内容。
网络连接的多路复用。
测试相关内容
toml 的解析器,和另一个 toml 解析器(github.com/BurntSushi/toml)不同,为独立的解析模块,主要是解析时间字符串和磁盘容量数据。
tsdb 目录主要是时序数据库的实现。
该目录里面主要存放 uuid 生成的相关代码。
好,就这些了,希望对你有帮助。
来源: http://www.linuxidc.com/Linux/2017-12/149939.htm