Flux(原 IFQL)和 InfluxData 的未来

导航至

随着今天关于我们 C 轮融资的重大新闻发布,我认为我应该花一些时间谈谈 InfluxData 平台和 InfluxDB 的未来。有关我们 CEO Evan Kaplan 的观点,请点击此处

为了理解未来的方向,我应该稍微谈谈过去五年的工作以及我们在此过程中学到的东西。在公司成立之初,我构建了一个“时间序列 API”,使用 Scala 编写 Web 服务,使用 Cassandra 作为后备数据存储,Redis 作为缓存和索引层。此 API 的初始版本是 RESTful 的。大约六个月后,我在 Go 中将其实现为单个二进制文件,使用 LevelDB 作为底层存储引擎,但保留了相同的 RESTful API 并添加了一些关键功能。

虽然最初的应用程序寿命不长,但我们确实看到了一个模式。许多组织和初创公司都在重复同样的努力,为其应用程序和监控需求创建时间序列 API。看到这种常见的重复性努力,一年后的 2013 年,我们开源了此基础设施,作为一个新的开源项目:InfluxDB。我们还利用全新的开始,将 API 更改为使用一种看起来很像 SQL 的查询语言。它当时的主要优势是它看起来很熟悉,使开发人员的学习曲线变得容易。

平台的重要性

在早期,我们只是构建数据库,但我们看到用户采用该技术并重复努力来解决一组常见问题。鉴于我们在解决一组常见用户问题方面取得的数据库成功,我们制定了创建整个平台以处理时间序列数据的愿景。我们不仅帮助开发人员存储和查询数据,还帮助他们收集、处理和监控数据,以及可视化数据。我们当时和现在的观点是,如果我们围绕时间序列数据构建整个平台,我们将使开发人员能够更快地构建他们的解决方案(我称之为“实现卓越的时间”)。开发人员不想在基础设施和架构上浪费时间。他们想构建他们的应用程序并专注于他们试图用代码解决的业务问题。

因此,在 2014 年,我进行了 A 轮融资,目的是聘请一个团队来构建平台的其他组件。首先,我们构建了 Telegraf(数据收集器),然后我们构建了 Kapacitor(处理和监控代理),最后我们构建了 Chronograf(UI 和可视化引擎)。我们将其命名为 TICK Stack,以致敬金融时间序列中的各个点,每个点都称为一个 tick。但 TICK Stack 是这家公司随着时间推移而建立的产物。总体愿景不是构建四个独立的应用程序,而是创建一个平台,帮助开发人员解决与时间序列数据相关的问题。

数据语言的重要性

InfluxDB 当前提供的类似 SQL 的语言也是过去 10 年数据库发展演变的产物。作为开发人员,我们从 SQL 到 NoSQL 再到 NewSQL,现在似乎又回到了 SQL。

但是,我认为有机会创建新的时间序列数据处理方式,而这些方式不与 SQL 绑定。虽然 SQL 是一个很棒的工具,但它不是唯一的工具。时间序列数据不是集合,而且大多不是关系型的。它们更频繁地像矩阵一样被访问和处理,这可以在 SQL 以外的语言中更好地查询、处理和分析。因此,我们已经开始构建一种新的查询语言,专门用于处理时间序列数据,称为 IFQL [后来更名为 Flux]。作为一种函数式语言,它允许用户通过一组对数据进行函数式转换来定义复杂的查询。虽然我们称其为查询语言,但它正迅速变得不仅仅是查询语言,它允许您在该语言本身内进行复杂的分析。它还允许用户使用用户定义的函数重新组合查询函数的部分,从而为常用功能创建快捷方式。用户将能够围绕他们的问题域构建 Flux。有关 Flux 的更多详细信息,请查看 我在今天 InfluxDays NYC 上的演讲的幻灯片。

我们还希望创建一种语言,使 UI 开发人员更容易创建有趣的构建器和可视化工具。我们预计大多数用户甚至不需要一开始就使用查询语言,而是使用 Chronograf、Grafana 或其他一些用户界面来与其数据进行交互。在我们在 Chronograf 内部为此语言发布查询构建器之前,我们不会锁定 Flux 语言设计。这将是为了验证该语言是否易于 UI 设计人员使用。

API 驱动的平台

我们将把整个堆栈统一到一个通用的 API 之下。它将是开发人员通过 gRPC、REST 以及可能的 GraphQL 公开的单一入口点。它将从第一天起就被设计为多租户,具有组织、用户、API 令牌和访问规则。它将使用户不仅能够写入和查询数据,还能够定义用于收集、监控和警报、后台处理、与序列关联的元数据以及用户数据(如仪表板和注释)的规则。

用于处理数据的堆栈语言将是 Flux,而 API 将把堆栈的其余部分统一在一个位置。其中一些我们已经在作为开源软件发布(例如 Flux)。其他部分将在今年年内构建并开源。

InfluxData 的未来不仅仅是时间序列数据库。我们正在创建一个用于处理时间序列数据的平台。我们的目标是使开发人员在围绕指标和事件创建应用程序时更有效率。无论您是可视化数据、收集和抓取数据、监控和警报,还是转换数据以发送到其他来源,我的目标是 InfluxData 将提供开箱即用的一切。期待我们大力投资以实现该目标,并继续为社区贡献出色的开源软件。