Kapacitor 和连续查询:如何决定您需要哪个工具
作者:Katy Farmer / 产品, 用例, 开发者
2018 年 3 月 26 日
导航至
在 InfluxData,我们拥有一个非常棒的社区。大家提出明智的问题,并为我们平台的持续改进做出贡献。你们就像我们面包上的黄油和甜甜圈上的糖霜。好吧,我现在饿了。
<figcaption> 多么快乐的社区!</figcaption>
我们希望尽可能多地回答您的问题,因此我们将解决来自我们社区的一些最常见问题。
本周的问题:我何时使用 Kapacitor 而不是连续查询?
如果您正在问这个问题,1) 您并不孤单,2) 您的疑问是正确的。
<figcaption> 我狗的逼真绘画,它也有许多重要的问题,例如:食物?外出?食物?</figcaption>
让我们从头开始。
来自文档,“连续查询 (CQ) 是 InfluxQL 查询,它们在实时数据上自动且定期运行,并将查询结果存储在指定的度量中。”
CQ 旨在聚合您想要保留在新度量中的数据(称为下采样)。您的时间序列数据以数千或数百万个点的形式传入;除非绝对必要,否则您不想永远存储所有这些点,因为磁盘需求很快就会失控。CQ 提供了一种让您保留数据摘要的方法,而无需保留所有单个点。使用 CQ,您可以让完整分辨率数据通过保留策略过期(或者您可以手动删除它),而您只保留您需要的。
Kapacitor 是我们 TICK 堆栈中的“K”,这是一个强大的处理引擎,有时可能隐藏在神秘的面纱之后,就像您小时候的邻居一样,您确信如果您在他们的院子里丢了一个球,他们就会摧毁您。但 Kapacitor 并不可怕。它非常棒。
<figcaption> Kapacitor 考拉更喜欢室内活动。</figcaption>
如果您使用 Kapacitor,您可能知道有两种类型的任务:流式任务和批处理任务。如果您对这方面感兴趣,可以阅读本指南,了解何时应在 Kapacitor 中使用批处理任务而不是流式任务。
Kapacitor 可以做很多事情,这就是为什么我们将在此处重点介绍一个功能:Kapacitor 可以按计划从 InfluxDB 查询数据,执行转换(或任何用户定义的函数),并将转换后的数据存储回 InfluxDB。它可以将数据作为流进行处理,而不仅仅是定期查询,它甚至可以根据您设置的条件发出警报。这听起来很像连续查询。我们可以查询我们的 InfluxDB 实例,运行一些聚合函数,并将其存储在具有无限保留策略的不同 InfluxDB 实例中。
在这里,我们开始怀疑 CQ 或 Kapacitor 是否是完成工作的最佳工具。以下是一些可以帮助您做出决定的因素。
- 您是否运行了大量 CQ? 使用 Kapacitor(流式任务)。“大量”显然是相对的,但如果您的 CQ 导致您的 InfluxDB 实例锁定、落后于计划或降低仪表板查询工作负载,请将工作负载转移到 Kapacitor 以释放数据库的资源。旁注:流式任务的性能更高,而批处理任务仍会查询 Influxdb 并产生额外的负载。
- 您是否想要执行更复杂的数据转换? 使用 Kapacitor。Kapacitor 提供所有 InfluxQL 功能,以及添加用户编写的函数(就是您!)的能力 ,可以使用您选择的语言。
- 您是否正在编写查询来下采样有限数量的数据?使用 CQ。 仅当您运行大量 CQ 或执行复杂查询时,CQ 才会出现性能问题。如果您知道您需要什么以及如何使用 InfluxQL 实现它,请使用 CQ 来完成这项工作。拥有 Kapacitor 企业版的用户还可以在其集群的子集上启用 CQ,以便节点可以在需要时专注于 CQ。
如果您刚刚意识到您应该使用 Kapacitor,请阅读本指南,了解如何使用 Kapacitor 作为连续查询引擎。
如果您刚刚意识到您想要编写 CQ,请阅读本入门指南,了解 编写连续查询。
您对您的用例有更多疑问吗?请在我们的 社区网站 上向我们提问。
在此处建议您希望看到的更多博客,或在 Twitter 上打个招呼
@InfluxDB @thekatertot