“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

influxDB 集群模式实践

  • 2019-12-09
  • 本文字数:2004 字

    阅读完需:约 7 分钟

influxDB集群模式实践

1 基础概念

TSDB 与传统 DB 比较

  1. 传统数据库多用于记录数据的当前值。

  2. 时序数据库记录基于时间的一系列数据。

TSDB 应用场景

由时序产生,并且需要展现其历史趋势、周期规律、异常性的,进一步对未来做出预测分析的,都是时序数据库适合的场景。具体场景:各类设备的监控数据,医学中的血糖、血压、心率的监控数据,金融业中交易、成交数据等。

为什么选择 influxdb

  1. 开发者社区活跃,使用者众多,开源时间较长。性能经过检验;

  2. 类 SQL 的插入、查询语言,不会增加太大的学习成本;

  3. 原生 HTTP 接口支持各类语言调用;

  4. 仅仅作为存储方案,可插拔。

influxdb 之 TSM 存储引擎概述

  • TSM 存储引擎主要由几个部分组成:

  • cache。在内存中是一个简单的 map 结构默认配置文件中为 1g。

  • wal。记录内容和 cache 一样,目的是为了持久化 cache 数据,influxdb 启动时会加载 wal 的数据到内存。

  • tsm file。用于数据存储。

  • compactor。主要进行两类操作:

  • cache->snapshot->tsm;

  • 合并小 tsm 成为大的 tsm。

Shard——TSM 存储引擎之上的概念


  1. 按时间戳所在不同范围创建不同 Shard;

  2. 根据时间可以快速定位要查询的数据资源,加快查询的过程;

  3. 让根据时间的批量删除操作变得非常简单且高效。

2 项目由来

  1. influxdb 社区版默认并未提供集群解决方案。

  2. 官方开源的 influxdb-relay 仅仅支持双写功能,并未支持负载均衡能力。

  3. 饿了么开源的 influx-proxy 集群方案组件众多,安装部署、后期维护成本高、复杂度大。

  4. 360 公司内部需求:提供十万台主机的两百个监控项数据的实时出图、访问,基于这些监控项的告警以及故障预测。

  5. 基于上述需求,于是有了 influxDB-HA 项目。

3 程序架构

官方开源 influxdb-relay 方案


未解决的问题:


  1. 采用双写仅仅解决了数据备份的问题,并未解决 influxdb 读写性能的问题;

  2. 只是写入了数据,查询还是需要去读 influxdb。增加了配置文件的复杂度不易维护;

  3. 并未对写入失败的数据做任何重试机制的处理。

饿了么 influxdb 高可用解决方案


优势:


  1. influx-proxy 是饿了么在 influxdb-relay 满足不了其性能要求、配置维护要求痛定思痛后重构的产物;

  2. influxdb 机器支持动态扩缩;

  3. 增加了强大的请求失败后的重试机制。


劣势:


  1. 架构中使用的组件较多,增加了使用者的学习成本,且不易于后期的维护;

  2. 请求失败重试本身是双刃剑,试想机器性能达到极限,重试无形中又增加了机器的负载;

  3. 与自身场景需求不相符,我们内部只是做监控数据的持久化存储,应该是最简单的接入和与 influxdb 最小的架构改造。

360 内部 influxDB-HA 解决方案


优势:


  1. 以 measurement 为最小拆分单元,从而保证以时序查询 influxdb 的高效性。

  2. 支持业务层动态的拆库、拆表操作。

4 性能比较

与单机 influxdb 磁盘 IO 对比。



与单机 influxdb CPU 使用对比。


5 业务方接入 influxDB-HA 说明

influxDB-HA 管理 influxdb 实例配置。



Grafana 接入 influxDB-HA 说明。



三方程序接入 influxDB-HA 写入数据说明。


  1. 完全兼容 influxdb 原生的/write 接口方式写入,且支持原生查询接口的所有参数;

  2. 如果您说您以前习惯了使用 influxdb 的 SDK 方式写入,那也恭喜您。influxDB-HA 支持任何语言的 influxdb SDK 接入。

6 后期迭代计划

一个优秀的项目需要经历无数的版本迭代和优化,而对于开发者而言,能兼容各类需求、适应各类场景是沉淀、提升技术的不二法门。鉴于此,我们应该不断完善 influxDB-HA 以支持 360 内部各类使用场景。接来下,仅提出未来可见的优化点:


  1. 接入 kafka、RabbitMQ 做写入请求之前的缓冲,降低数据丢失的风险;

  2. influxDB-HA 配置文件的热加载(目前已经通过 golang 的 fsnotify 库实现,将来更大规模的 influxDB-HA 集群应该通过 etcd 等外部的配置统一管理来实现);


对接业务方分表,以支持更大数据规模场景下的解决方案,measurement 始终作为 influxDB-HA 集群中可拆分的最小单元,避免不同 measurement 的合并排序问题。

7 influxdb 使用注意事项

经过一段时间(近一个多月)的实践和对 influxdb 性能的综合观察,总结出以下结论供我们大家一起探讨:


1、continuous queries/select:


笔者看见很多对于 influxdb 的不满来自于对其性能的诟病。然而有目共睹的是其写入性能是极其优秀的,那究竟查询性能如何呢?


实践总结:对于超过 10 万样本数据的查询操作而言,我们通过索引(即 influxdb 中的 tag)查询将能够节省机器性能,大大降低查询时间。查询操作往往耗死机器的根本原因是:OOM(Out Of Memory)


那么在配置 CQ 时,应该:


  • 尽可能使用 tag;

  • 应该拿写好的 CQ 充分模拟线上环境的测试,证明性能没问题后再上线。


2、retention policy:


配置数据的留存策略好处是数据持久化,但数据量较大时劣势也非常明显,会占用很大的 CPU,造成读写数据异常。所以配置 RP 时我们必须注意:


  • 尽量在读写并发量较小的时刻去操作;

  • 可以在 influxdb slave 库中反复设置 RP 实践出最佳方式再上线。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/erNqCgUTEIVygNknydlPag


2019-12-09 10:055783

评论 1 条评论

发布
用户头像
说了别人为啥不高可用,但却没说自己哪里高可用了
2021-07-14 09:13
回复
没有更多了
发现更多内容

React-diff原理及应用

xiaofeng

React

火山引擎 DataTester 首推A/B实验经验库,帮助企业高效优化实验设计能力

字节跳动数据平台

大数据 A/B测试

vue的几个提效技巧

yyds2026

Vue

数据库独角兽SingleStore:没有HTAP,机器学习和人工智能都是不切实际的

StoneDB

数据库 开源 HTAP StoneDB SingleStore

SREWorks v1.3 版本发布 | 插件机制发布

阿里云大数据AI技术

大数据 运维 插件

通俗易懂的React事件系统工作原理

夏天的味道123

React

阿里云产品经理刘宇:Serverless 的前世今生

云布道师

阿里云 Serverless 云原生

软件测试 | 测试人员必须掌握的测试用例

测试人

软件测试 自动化测试 测试开发 测试用例

React-Hook最佳实践

xiaofeng

React

聊聊Vuex原理

yyds2026

Vue

OKR之剑·实战篇03:OKR的跟踪需要有“自己”的节奏

vivo互联网技术

团队管理 OKR 目标管理

使用SQL加密函数实现数据列的加解密

华为云开发者联盟

大数据 后端 华为云 数据加密

最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

6个步骤强化 CI/CD 安全

SEAL安全

技术界中的虚拟机、容器和沙箱的关系

FinFish

容器 虚拟机 安全沙箱

彻底搞懂Vue虚拟Dom和diff算法

yyds2026

Vue

count(*)查询性能很差?用这5招轻松优化

小小怪下士

Java 程序员 后端

华为云Astro的前世今生:用7年时间革新低代码开发观念

华为云开发者联盟

低代码 华为云

计算机网络:以太网与IEEE 802.3

timerring

计算机网络 11月月更

HummerRisk V0.5.1 发布:新增对象存储、优化K8s 资源态势和资源拓扑等

HummerCloud

Kubernetes 云原生 云安全 云原生安全

查看、校验、归档…带你掌握openGauss账本数据库

华为云开发者联盟

数据库 后端 华为云

这可能是你需要的React实战技巧

夏天的味道123

React

微博:公布热搜算法!

博文视点Broadview

浪潮信息工程师:谈一谈设备透传虚拟机启动慢背后的原因及其优化方法 | 第 51 期

OpenAnolis小助手

Linux 系统运维 内核 龙蜥大讲堂 浪潮

Paddle Graph Learning (PGL)图学习之图游走类node2vec模型[系列四]

汀丶人工智能

图神经网络 11月月更

【LeetCode】字符串相加Java题解

Albert

算法 LeetCode 11月月更

使用EasyCV Mask2Former轻松实现图像分割

阿里云大数据AI技术

深度学习 计算机视觉 图像处理 图像分割 企业号十月 PK 榜

读懂React原理之调和与Fiber

xiaofeng

React

测试大咖漫谈如何搞定软件质量?

测吧(北京)科技有限公司

软件测试

多视角碰撞,探索 Serverless 企业落地更多可能性丨阿里云用户组厦门站

云布道师

阿里云 云原生

Dive into TensorFlow系列(2)- 解析TF核心抽象op算子

京东科技开发者

tensorflow TF2 Tensor Op

influxDB集群模式实践_文化 & 方法_360云计算_InfoQ精选文章