摘要:
用脑图形式展现对influxdb的调研, 用树结构将相关模块予以关联,
目的在于便于大脑理解和存储
脑图:
Influxdb调研
存储
1. 存储引擎技术路线
1. LSM
1. levelDB
1. 无法热备份
2. 打开文件句柄超过上限
2. rocksDB
1. 修复热备份
2. 打开文件句柄超过上限
2. B+树
1. Bolt
1. B+
1. 仅一个文件句柄
2. 利于连续写
3. 时序数据库大量非连续写
1. 造成磁盘随机写
2. 影响写性能
2. mmap
1. 减少了内核缓冲层
2. 磁盘IO
2. 优化
1. 增加WAL层
1. 预处理key合并写
1. 减少写次数
2. 随机写问题依然存在
3. TSM
1. 自研LSM变种
1. 解决B+树随机写性能问题
2. 从此前写WAL层增加了开发能力信心
2. 增加WAL层
3. 打开文件句柄数改进
2. TSM
分布式
1. 集群
1. influxdb官方
1. cluster闭源
2. 提供relay
1. 轻量级代理
1. 服务节点依然是单节点
2. 用前端代理实现多节点写
2. 没有分散key的策略
1. 无法横向扩展
2. 开源社区替代品
1. freetsdb
1. 从influxdb1.8.6版本改造
2. 自带集群特性
3. 生态兼容性
1. 接口层
2. 功能函数层
3. 内部实现层
2. 高可用
1. freetsdb
1. hinted-handoff
1. 通过本节点写其他节点
2. 其他节点宕机
3. 将数据写入本节点
4. 其他节点恢复后写入其他节点
需求
1. 功能需求
1. 依据时间点写入
2. 只写入不更新
3. 数据带时间可自动删除
4. 不处理频繁的删除
2. 性能需求
1. 硬件标准
1. 磁盘IO
2. CPU主频
2. 性能要求指标
1. 写QPS
2. 读QPS
3. 内存占用
4. 磁盘占用
5. CPU占用