InfluxDB源码目录结构解析
操作系统 : 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
.
├── 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
.
├── 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
.
├── 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
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
欢迎补充
InfluxDB源码目录结构解析的更多相关文章
- chromium浏览器开发系列第三篇:chromium源码目录结构
上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流. 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介
前言 古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...
- (转)android系统架构及源码目录结构
转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- Locust源码目录结构及模块作用
Locust源码目录结构及模块作用如下: 参考文章:https://blog.csdn.net/biheyu828/article/details/84031942
- Source Code Structure - Python 源码目录结构
Source Code Structure - Python 源码目录结构 Include 目录包含了 Python 提供的所有头文件, 如果用户需要用 C 或 C++ 编写自定义模块扩展 Pytho ...
- 跟厂长学PHP7内核(三):源码目录结构
上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
- PHP7内核(三):源码目录结构
上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
随机推荐
- python3的unittest中使用test suite(测试套件)执行指定测试用例
示例代码 module.py class baidumodule(): def __init__(self,driver,): self.dr = driver #不能在类中再次导入webdriver ...
- linux 图形化与命令模式切换
vim编辑/etc/inittab 文件如图: 找到红框里的一行.修改数字 3.表示命令模式 5表示图形模式!
- 事件方法on()
on()方法用来处理事件.jQuery会处理所有浏览器的兼容性问题. on()方法可以指定影响哪个事件,相当于JavaScript中的addEventListener()事件监听. on()方法有两个 ...
- 判断上学和放假的demo
var today = new Date(); var xq = today.getDay(); var Now = today.getHours(); if (xq >= 1 &&am ...
- python全栈开发day35-线程、协程
一.线程 1.线程 1).什么是线程 线程是cpu调度的最小单位 线程是进程的必要组成单位 一个进程里至少含有一个线程 2).主线程 程序开始运行的视乎,就产生了一个主线程来运行这个程序 3).子线程 ...
- zstu-4243 牛吃草
贴一发两圆相交面积模板 #include<bits/stdc++.h> #define pi acos(-1.0) using namespace std; ; double _abs(d ...
- python2与python3的差异
最近在学习python3,遇到过几次python3与python2的的问题,python2使用,而到了python3就不适用了,就整理了一下自己到目前为止所遇到了几个问题(以下是小白见解) 1.pyt ...
- 《Gradle权威指南》--Android Gradle插件
No1: Android Gradle插件分类 App插件id:com.android.application Library插件id:com.android.library Test插件id:com ...
- 查找mac下腾讯视频下载地址
mac 腾讯视频下载的视频是不可见的,也许是因为版权原因吧.使用以下方法可以在文件中找到缓存的视频(不过都是被断开的很多短视频). 在terminal输入: cd Library/Containers ...
- python模块——PrettyTable
python模块——PrettyTable 一. 简介 Python通过prettytable模块将输出内容如表格方式整齐输出,可用来生成美观的ASCII格式的表格,十分实用. python本身并不内 ...