阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

InfluxDB源码目录结构解析

153次阅读
没有评论

共计 2975 个字符,预计需要花费 8 分钟才能阅读完成。

操作系统: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
└── 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 生成的相关代码。

好,就这些了,希望对你有帮助。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-12/149939.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2975字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中