InfluxDB 1.0 GA 版本发布:回顾与展望
作者:Paul Dix / 产品, 使用案例
2016年9月8日
导航至
今天,我们激动地宣布开源时间序列数据库 InfluxDB 1.0 和我们的商业产品 InfluxDB Enterprise 正式发布。InfluxDB Enterprise 支持高可用性部署和横向扩展集群,以提高吞吐量。今天是我们公司历史上最重要的一天。这个版本历时近 3 年才完成,借此机会,我想回顾一下 项目的历史,告知用户 1.x 系列版本的兼容性保证,并展望 InfluxDB 的未来发展。
在我们今天发布之际,全球已有数万家组织正在使用 InfluxDB。他们使用它来监控其网络基础设施、安全性、容器基础设施、太阳能电池板、农业、科学实验、用户分析、商业智能、家庭自动化以及无数其他特定用例。要了解更多关于各种规模的公司如何使用 InfluxDB 管理其时间序列数据的信息,请查看我们的 客户评价页面,目前已列出 100 多家公司。您的故事是什么?
为什么选择时间序列数据库?
2013 年 9 月,Todd Persen、John Shahid 和我正在开发 Errplane,这是一个用于实时指标和监控的 SaaS 应用程序。Todd 和我于 2012 年创立了这家公司,尽管通过参加 Y Combinator 2013 年冬季班获得了一些优势,但它的发展并不如我们所愿。我们筹集了一笔适度的种子轮资金,所以没有迫在眉睫的倒闭危险,但我们在获得真正的客户吸引力方面没有取得成功。
2013 年 8 月的大部分时间里,我们一直在努力思考我们应该做什么,并想出了另一个想法,我计划在 9 月下旬在柏林举行的 Monitorama 大会上首次亮相。会议的主题是监控,我认为这将是寻找对新监控产品感兴趣的受众的好地方。但我发现的不是对这款新产品的验证,而是对我们长期以来一直在考虑的另一个想法的验证:一个开源时间序列数据库。
这个想法的根源早于 Errplane。2011 年,John 和我在一家金融科技初创公司工作时相遇,该公司计划实时跟踪数十万种金融工具。最初,我们使用的是名为 OneTick 的商业时间序列数据库。然而,它并非旨在跟踪数十万个唯一的时间序列,因此我们开始寻找替代方案。
在开源领域,我们找到了 OpenTSDB、Graphite、RRD,除此之外就没有太多了。这些项目都有局限性,不适用于我们的用例。我们有一个特定的需求是能够存储不规则时间序列。也就是说,由特定事件(如市场交易)创建的序列。因此,我们着手构建一个“时间序列数据库”,作为一组用 Scala 编写的 Web 服务,这些服务构建在 Cassandra 之上,同时使用 Redis 进行一些实时索引。
后来,当我在 2012 年为 Errplane 构建初始 API 时,它也使用了相同的技术。我曾两次解决过同样的问题,但用于两个完全不同的用例。在这两种情况下,我都必须编写大量的后端代码才能使时间序列“正常工作”。
这是一个具有启发意义的经验,它让我意识到在现有技术上处理时间序列数据有多么困难。因此,在 2012 年秋季,当 Todd 和我申请 Y Combinator 时,我们将“开源时间序列数据库”列为如果 Errplane 没有成功,我们将要从事的第二个想法。
回到 2013 年 9 月的 Monitorama 大会,我与其他监控和服务器分析公司以及大型组织的 DevOps 工程师进行了交谈。我反复听到的是,他们都在寻求解决如何大规模存储和查询其时间序列数据的问题。他们都在重复发明轮子。
这足以让我确信我们应该尝试一下开源时间序列数据库的想法,InfluxDB 由此诞生。它迅速获得了关注,因此我们转而完全专注于它。2014 年底,我们 从 Mayfield 和 Trinity 处筹集了 810 万美元的 A 轮融资,以加速发展。
在过去的三年里,我们吸取了许多关于如何 扩展时间序列数据存储、构建 用于时间序列工作负载的分布式系统,以及如何构建和创建一家能够持续创新的可持续开源公司的深刻教训。
我们为时间序列数据 编写了自己的开源存储引擎,名为 TSM Tree。我们创建了一个商业产品 InfluxDB Enterprise,它为 InfluxDB 增加了高可用性和集群功能,使我们作为一家企业能够继续开发开源软件。我们还通过 InfluxDB Cloud 在 AWS 上以托管服务的形式提供可扩展的 InfluxDB 集群。
去年,我们创建了两个新的开源项目。Telegraf,一个用于时间序列数据和指标的数据收集器,以及 Kapacitor,一个用于时间序列数据处理、监控和警报的引擎。这些项目使 InfluxData 成为一个用于处理时间序列数据的开源平台,超越了 InfluxDB 提供的存储和可查询性。
最后,我们计划在今年晚些时候通过重新构想且完全开源的 Chronograf 版本来扩大我们的开源足迹。它将不再是关于仪表板,而是关于监控容器、Kubernetes 和 Docker Swarm 的开箱即用用户体验。如果您有兴趣并希望参与早期功能迭代,请 联系我们。
1.x API 兼容性和稳定性
1.0 版本更重要的方面之一是,这标志着我们的 API 和存储格式的稳定。在过去的三年里,我们进行了积极的迭代,在此过程中经常破坏 API。随着 1.0 版本的发布以及整个 1.x 系列版本的发布,我们承诺以下内容
无重大 HTTP API 更改:关于 HTTP API,如果一个命令在 1.0 中有效,那么它在所有 1.x 版本中都将保持不变……但有一个例外。我们将在查询语言中添加关键字。如果您将所有标识符用双引号括起来,并将所有字符串文字用单引号括起来,则新关键字不会破坏您的查询。这通常被认为是最佳实践,因此无论如何都应该遵循。对于遵循该指南的用户,查询和摄取 API 在所有 1.x 版本中都不会有重大更改。请注意,这不包括项目中的 Go 代码。InfluxDB 中的底层 Go API 在 1.x 开发过程中可能会发生更改。用户应该通过 HTTP API 访问 InfluxDB。
存储引擎稳定性:TSM 存储引擎文件格式现在为版本 1。虽然我们可能会在 1.x 版本中引入新版本的格式,但这些新版本将与以前的版本并行运行。这对用户来说意味着,从一个 1.x 版本升级到另一个版本时,不会有漫长的迁移过程。
附加更改:查询引擎将在新版本的过程中进行附加更改。我们将在不破坏向后兼容性的情况下,在语言中引入新的查询函数和新功能。我们可能会引入新的协议端点(如二进制格式)以及行协议和查询 API 的版本,以提高性能和/或功能,但它们必须与现有版本并行运行。现有版本将在整个 1.x 版本系列中得到支持。
持续支持:我们将继续修复 1.x 版本的行协议、查询 API 和 TSM 存储格式中的错误。用户应该期望升级到最新的 1.x.x 版本以获得错误修复,但这些版本都将与 1.0 API 兼容,并且不需要数据迁移。例如,如果用户正在运行 1.1,并且 1.2 中发布了错误修复,则他们应该升级到 1.2 版本。在 1.3 发布之前,补丁修复将进入 1.2.x。由于所有未来的 1.x 版本都是以前 1.x 版本的直接替代品,因此用户应该升级到最新的 1.x 系列版本以获得所有错误修复。
下一步是什么?
我们为 1.x 系列版本带来了许多改进,并且我们已经开始进行其中一些改进。总的来说,您可以期待在开源版本和商业版本上持续工作。作为一个项目,我们以迭代速度而闻名,我们打算保持这种速度。唯一的区别是,现在我们致力于维护 API 契约,正如您对 语义版本控制 的期望一样。
我们正在努力解决数据库的“高基数”限制,使用户能够在标签中索引数亿个序列,而不会消耗无限量的内存。我们还在研究自动汇总和查询低精度数据的智能规则,使从短时间范围到数月或数年的可视化效果都具有高性能和流畅性。
我们还将添加查询语言功能,例如跨多个测量执行计算、通过不同的计算组合序列、子查询、排名查询等等。
至于 InfluxDB 的发布周期,我们将随着时间的推移迭代最佳策略。用户可以期待 1.0 的补丁版本,以修复出现的任何严重错误。我们的目标是在 2 到 3 个月后发布 1.1 版本。用户应该关注 1.1 里程碑中已关闭和合并的内容,以了解将包含哪些内容。我们不承诺里程碑中的所有开放功能,因为我们更希望有一个可预测的发布时间表,但您可以了解管道中正在进行的工作。
经过 3 年的努力,InfluxDB 1.0 是我参与过的从开始到结束的最大和最长的项目。我为我们取得的成就感到无比自豪,并期待着我们即将到来的所有出色功能和开发。对于时间序列类别来说,这是一个激动人心的时刻,感觉这仅仅是开始!
贡献者致谢
最后,我想重点感谢一些社区成员的贡献,他们在帮助我们达到 1.0 版本方面发挥了重要作用。
- John Shahid:他和 Todd 以及我一起开始了这一切,并在项目的头一年不知疲倦地工作。
- Philip O'Toole:他在整个 0.9 重写/重新设计过程中与我们同在,并帮助构建了 TSM 的初始版本。
- Paulo Pires:在过去一年中进行了多次错误修复和功能添加。
- Kun Oiooj:在 0.10 中进行了修复,在多个 0.9 版本中进行了修复,并且在 1.1 中将推出一项新功能
- Adarsha Mvadu:进行了大量修复,使 InfluxDB 能够在 Windows 中运行。
- Jon Seymour:修复了 TSM 和其他问题。
我们应该感谢的人还有很多,但我们必须在这里结束。在过去的三年里,我们有超过 200 位贡献者。感谢所有修复错误、更新文档、编写功能或帮助我们达到今天成就的每一个人。
下一步是什么
- 下载: 1.0 GA 下载 适用于 TICK-stack 的版本已在我们的“下载”页面上线
- 在云端部署: 开始 InfluxDB Cloud 的免费试用,它具有完全托管的集群、Kapacitor 和 Grafana。
- 在您的服务器上部署: 想在您的服务器上运行 InfluxDB 集群?试用 InfluxDB Enterprise 的 14 天免费试用版,它具有用于部署、监控和重新平衡集群的直观 UI,以及管理备份和还原的功能。
- 讲述您的故事: 超过 100 家公司 分享了关于 InfluxDB 如何帮助他们取得成功的故事。提交您的客户评价,即可获得限量版 InfluxDB 连帽衫,以示感谢。