# 项目结构
整个项目使用 Go 实现,所以遵循了一般 Go 项目的规则,下面是整个项目结构的简单说明:
├── aggregation : 数据聚合,函数及表达式计算
├── app : broker、storage、standalone、cli 等runtime
│ ├── broker : Broker 内部实现及整个 Broker 的运行时依赖
│ ├── cli : 交互式命令行
│ ├── standalone : 单机模式运行时依赖
│ └── storage : storage 内部实现与 运行时依赖
├── bin : 编译生成的文件,二进制包名称为 `lind`
├── cmd : main 函数
│ └── lind : lind 二进制包
├── config : 各组件启动时需要的配置项
├── constants : 一些通用的常量定义
├── coordinator : 分布式的协调者,包括 Metadata, State 及 Task 的管理,包含了 Broker, Storage 及 Master 等
├── flow : 数据查询流程接口
├── ingestion : metric数据摄取入口
│ ├── common : gzip handler、行解析等通用工具
│ ├── influx : influxdb 数据转换到linmetric
│ ├── native : lindb 原生的http接收器
│ └── prometheus : prometheus 数据解析转换
├── internal : 内部的一些工具包
│ ├── bootstrap : 启动时初始化_internal数据库的方法
│ ├── concurrent : 并发goroutine池
│ ├── conntrack : grpc 与 tcp conn埋点钩子
│ ├── server : app 通用接口
│ ├── linmetric : lindb自带的内部多值类型的sdk打点工具
│ └── mock : 项目所用到的一些 Mock 工具实现
├── kv : 底层的通用 KV 存储
├── models : 整个项目的 Model 定义
├── monitoring : 自带的系统层监控采集与native metrics pusher
├── pkg : 整个项目通用工具包
│ ├── bit : 位读写
│ ├── bufioutil : 缓冲io工具包
│ ├── bufpool : 存放buffer的sync pool
│ ├── collections : float array、bit array 等数据结构
│ ├── encoding : delta-bit-packing、zigzag 等编码工具包
│ ├── fasttime : 毫秒级的时间,避免频繁的系统调用
│ ├── fileutil : 常用的文件操作
│ ├── hostutil : 获取机器状态的包
│ ├── http : gin http server的通用方法
│ ├── lockers : 文件锁
│ ├── logger : zap logger
│ ├── ltoml : toml文件解析与类型
│ ├── option : shard 配置选项
│ ├── queue : 持久化队列
│ ├── state : etcd 操作工包
│ ├── stream : 文件读取工具包
│ ├── strutil : 字符串工具包
│ ├── timeutil : 时间处理工具包
│ └── trie : 紧凑型的trie树,用于string->int的存储
├── proto : protobuf
│ ├── gen : protobuf 生成的golang code
│ ├── opentelemetry-v1 : open telemetry的protobuf文件,暂未利用
│ └── v1 : lindb内的proto buf 文件
├── query : 分布式的数据与元数据查询
│ ├── broker : 计算节点的数据查询与聚合
│ └── storage : 存储节点的数据查询与聚合
├── replica : storage层的复制
├── replication : broker层的复制
├── rpc : 内部通信的 RPC
├── series : 时间线迭代器、聚合器
│ ├── field : field数据结构与聚合器
│ ├── metric : metric校验与histogram工具类
│ └── tag : tag数据结构
├── sql : SQL 解析
│ ├── grammar : antlr4生成的语法解析器
│ └── stmt : SQL statement
├── tsdb : 整个 Time Series 存储引擎
│ ├── cumulativecache : 简单的cumulative型数据到lindb delta数值的转换缓存
│ ├── indexdb : 索引存储
│ ├── memdb : LSM 树的内存数据库
│ ├── metadb : metric 元数据
│ ├── query : tsdb层的查询上下文对象
│ ├── tblstore : tsdb与 KV 存储的读写交互,包括索引文件与数据文件
│ ├── template : 利用模板生成一些通用的代码
│ └── wal : Write Ahead Log
└── web : lindb admin页面的前端项目