InfluxDB 2.0 Alpha 版本发布及未来路线图
作者 Paul Dix / 公司,产品
2019年1月23日
导航至
今天我们发布了 InfluxDB 2.0 的第一个 Alpha 版本。我们对 2.0 的愿景是将 TICK 堆栈合并成一个统一且一致的整体,该整体结合了时序数据库、UI 和仪表盘工具以及背后的后台处理和监控代理,通过一个单一的 API 实现。从 1.x 版本到 2.0 的转变代表了自 2013 年我们开始 InfluxDB 以来我们产品的最大进化。在这篇文章中,我将介绍我们试图通过 InfluxDB 2.x 线和 Flux 实现的目标,为什么我们以这种方式构建它,以及从 alpha 版本到 beta 版本再到 2.0 版本的通用可用性的开发过程。
如果您想跳过历史和更高级的目标,直接开始尝试,请查看我们的 入门指南,其中包括安装和设置说明以及 Flux 的文档。我们非常欢迎您在我们的社区网站 influxdb2 类别下的反馈。或者,如果您想了解更多产品 概述,请查看 Russ Savage 的博客文章关于发布的内容。
Flux,一种新的语言
InfluxDB 2.0 最重要的一部分是 Flux,我们的新数据脚本和查询语言。在回顾了多年的功能请求、社区问题和我们对当前查询语言 InfluxQL 以及与 Kapacitor 一起工作的语言 TICKscript 的问题后,我们决定构建一种新的语言。从设计目标的角度来看,Flux 应该
- 支持驱动图形用户界面的语言服务,以便用户在不学习实际语言的情况下完成更多任务。Flux 的设计应该比其他语言选择更容易实现这一点。
- 设计用于整合不同的数据源。这些数据源可能包括其他数据库、第三方API、文件系统,或数据存在的任何地方。与其他系统的整合是核心的语言设计特性。
- 支持跨平台编译。在InfluxQL、PromQL、Flux等多种语言中都可以处理时间序列数据。我们希望它在单个优化器上运行,以便能够针对许多不同的数据源进行规划。合理的开发者可能对语言选择有不同的看法,我们希望拥抱一个更广泛的数据处理生态系统。
- 除了支持多种查询语法外,Flux必须与其他分析工具和环境无缝整合。这包括与Jupyter的整合,以及使用Apache Arrow作为底层的数据交换格式,以便能够与其他大数据分析系统进行整合。
- Flux是一种为数据脚本、ETL、监控和警报而设计的第四代编程语言。它不仅是查询语言,而不仅仅是一种编程语言。它包含了一个规划和优化器。它应在查询和编程之间实现无缝连接,将它们合并成一个单一而一致的整体。
所有这些都导致了一些结果。首先,Flux将是图灵完备的,不仅可以用于查询和处理时间序列数据,还可以用于处理一般数据。在接下来的几个月里,我们将详细介绍如何创建这些连接器,并将它们与查询规划和优化器配对,以将Flux查询转换为利用每个数据存储的独特功能。在此期间,您可以访问我们的社区网站上的Flux语言部分,告诉我们您希望首先看到哪些连接器。
对于这次发布,我们专注于对嵌入的InfluxDB 2.0数据存储的查询能力。长期以来一直有人提出的需求,如测量值间的数学运算、前N个、时间移动、按字段分组和按值排序等功能,都可在这次初始alpha版本中实现。创建一种新的语言和查询引擎是一项艰巨且重要的任务,但这项努力正在开始产生回报,使我们能够添加更多的新功能。事实上,向语言中添加新功能非常简单。例如,您可以看到计数函数是如何实现的。Flux代码库的主要设计目标是使其易于外部贡献者添加新功能,就像我们在Telegraf中的输入函数一样。
我们保留了 Flux 作为与 InfluxDB 分离的独立仓库,因为作为开源项目,它将拥有自己的生命周期,无论您是否使用 InfluxDB,它都是非常有用的。为此,我们选择了宽松的 MIT 许可协议,并接受将 Flux 集成到各种第三方系统的 pull request,即使它们与 InfluxDB 竞争。这与我们对 Telegraf 的贡献理念一致,Telegraf 不仅被 InfluxDB 用户广泛使用,还被微软、DataDog、SignalFX、Wavefront 等其他公司的客户使用。接受这些可能引发竞争的连接器的理由很简单:我们认识到,Telegraf 的价值是由其输入插件驱动的,如果每个人都可以将其用作他们的收集器,那么它将吸引更多的社区贡献插件,这也有利于 InfluxDB 用户。在过去 3 年半的时间里,我们已经看到了这一策略的实施,Telegraf 现在有超过 200 个插件,大多数都是由社区(包括竞争对手)贡献的,其社区贡献和使用程度甚至超过了 InfluxDB 本身。它基于使用率和社区贡献,是我们最受欢迎的开源软件之一。
TICK 正在融合成一个统一的整体
TICK 栈是我们对组成 InfluxData 平台的组件集的称呼。按顺序,它代表了解决时间序列数据问题的四个组件:Telegraf,我们的数据收集器,InfluxDB,我们的时间序列数据库,Chronograf,我们的可视化 UI,以及 Kapacitor,我们的处理和监控服务。这些组件的当前形态是公司随着时间推移逐渐形成的。
我在 2014 年 A 轮融资时萌生了关于 TICK 组件的想法。我们的理念很简单:时间序列是一种基本的抽象,可以用于解决许多问题,我们正在构建一个处理时间序列数据平台。换句话说:许多数据问题实际上是时间序列数据问题,我们将帮助人们解决这些问题。我们有一个原型数据库,现在我们需要招聘开发人员和设计师来完成这项工作并构建其他三个组件。在 2015 年和 2016 年期间,我们招聘了团队开始构建这些组件,其中 Telegraf 的首次发布是在 2015 年 6 月,Kapacitor 在 2015 年 11 月,InfluxDB 1.0 在 2016 年 9 月,以及 Chronograf 的重启版在 2016 年 11 月。
在这段时间里,我们更多地了解了人们如何使用平台以及他们经常遇到的问题类型。在 InfluxQL 中,有很多功能请求,我们根本无法想出一个优雅的方式来添加这种语言。Kapacitor 目前被大约 13% 的 InfluxDB 用户使用。我们经常听到用户提到 TICKscript 难以学习和调试,但对于那些已经走过这段旅程的用户来说,他们通常认为它是杀手级应用。Chronograf 被大约 20% 的 InfluxDB 用户使用。在 InfluxDB 的早期,我们曾将 UI 作为数据库的一部分提供。当时将所有 UI 移至 Chronograf 的做法引起了争议,我们现在意识到,如果我们简单地将该 UI 作为数据库的一部分提供,就能提供更好的用户体验。
许多这些事情导致了 Flux 的创建,这是一种新的语言,用于实现我们无法在 InfluxQL 中解决的问题的长期查询功能请求。作为语言,Flux 与 TICKscript 相比看起来更熟悉,这是故意的设计选择。将 Flux 作为交互式即席查询和后台处理的语言,将使开发工具更容易,以帮助用户调试并查看他们的监控、警报和 ETL 任务中发生了什么。
另一个重大推进是创建一个统一整个平台的API。它内置了旨在使InfluxDB成为多租户时间序列服务的一些概念。由于所有这些组件,InfluxDB实际上远不止是一个数据库。它是一个监控系统,它是仪表板引擎,它是分析服务,它是事件和指标处理器。随着Flux功能的扩展,InfluxDB的功能和范围也将扩展。
Telegraf在InfluxDB之外也有自己的生活,但我们将为Telegraf在InfluxDB 2.0中添加API以与之集成。一个例子是,我们现在有一个用于创建Telegraf配置的用户界面,Telegraf可以直接从InfluxDB获取这些配置。
一处推送和拉取
InfluxDB 2.0的另一个重要部分是我们对Prometheus展示格式的第一级支持。InfluxDB 2.0可以作为指标抓取器,初始部署体验中有一个选项可以设置抓取本地InfluxDB服务器的指标。使用InfluxDB 2.0,我们支持开箱即用的推送和拉取模型。最终,我们也将支持开箱即用的PromQL查询。
未来工作
我们希望将这个早期版本发布给社区用户试用,以便我们获得反馈。还有一些核心功能需要完成,我们才能进入beta阶段。我们仍然需要添加兼容性(能够通过InfluxQL和1.x API查询InfluxDB 2.0),并且能够像1.x服务器一样写入InfluxDB 2.0。我们还需要添加备份与恢复、批量数据导入和导出以及数据删除的功能。
这些功能中的大多数代表低级API工作。在我们完成这些工作的同时,UI团队将能够快速迭代用户反馈,添加更多面向用户的功能,这些功能可以在核心2.0 API之上构建。我们计划从二月初开始每周发布带版本号的alpha版本。一旦我们达到最小功能集,我们将进入项目的beta阶段。在beta期间,我们将进行额外的错误修复、性能测试和其他运营准备工作。alpha版本不是为了测试性能,而是为了提供对UI和API的反馈。
InfluxDB 2.0 API的整个文档和实现都是基于此Swagger文件。一旦我们进入项目的beta阶段,API应该稳定,只有附加更改。我们仍需要将TICKscript的所有功能添加到Flux中,这将使任务对监控和警报工作负载很有用。我们还需要创建一个TICKscript到Flux的转换器,以帮助Kapacitor用户迁移到InfluxDB 2.0。
这绝对是一个早期版本,我们计划在InfluxDB 2.x版本发布过程中做更多的事情。这将使我们能够与Flux作为核心构建块,在未来几年持续进行创新。
我们还在构建我们的新InfluxData Cloud服务,这将是一个完全托管和托管的InfluxDB 2.x API版本。它将具有基于使用量的定价,类似于其他完全托管的多租户服务。我们很快就会有更多关于这个的消息。
我们需要您的反馈!
这只是公开开发和发展迭代的开始。请查看我们的入门指南,以了解安装和设置说明以及Flux的文档。我们非常希望听到您在我们的社区网站influxdb2类别下的反馈。有关更多产品介绍,请查看Russ Savage关于发布的博客文章。
非常期待收到您的反馈,所以请随时在Twitter上联系我或提交至HN,我会在那里留言。