Kapacitor 和连续查询:如何决定你需要哪个工具
作者:Katy Farmer / 产品,用例,开发者
2018年3月26日
导航到
在 InfluxData,我们有一个非常棒的社区。你们都提出聪明的问题,并为我们平台的持续改进做出贡献。你们是我们的面包黄油,也是我们的甜甜圈糖霜。好吧,我现在有点饿了。
<figcaption> 多么快乐的社区!</figcaption>
我们希望尽可能回答你们的问题,所以我们将解决社区中最常见的一些问题。
本周问题:何时使用 Kapacitor 而不是连续查询?
如果你在问这个问题,1) 你并不孤单,2) 你有理由好奇。
<figcaption> 我狗狗的照片,它也有很多重要的问题,比如:食物?外面?食物?</figcaption>
让我们从开始讲起。
根据文档,“连续查询(CQ)是自动且周期性地在实时数据上运行并存储查询结果的 InfluxQL 查询。”
CQs 被设计用来聚合您想要保留在新的测量中的数据(称为降采样)。您的时间序列数据有成千上万的点;除非绝对必要,否则您不想永久存储它们,因为磁盘需求会迅速增加。CQs 提供了一种方法,让您在不保留所有单个点的情况下保留数据的摘要。通过 CQs,您可以保留全分辨率数据,并使用保留策略(或手动删除)使其过期,您只需保留您需要的。
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 功能,以及添加用户(即您)编写的函数的能力 使用您选择的任何语言。
- 您是否正在编写查询以降采样有限的数据量?使用 CQs。 当您运行大量 CQ 或执行复杂查询时,CQ 会成为性能问题。如果您知道您需要什么以及如何使用 InfluxQL 实现,请使用 CQ 完成工作。具有 Kapacitor 企业版本的用户还可以在集群的子集上启用 CQ,以便节点可以专注于 CQ(如果您需要的话)。
如果您刚刚意识到应该使用 Kapacitor,请阅读有关如何使用 Kapacitor 作为连续查询引擎 的指南。
如果您刚刚意识到想要编写 CQ,请阅读有关 编写连续查询 的介绍。
关于您的用例还有更多问题吗?在我们的 社区网站上 向我们提问。
建议您想在这里看到的更多博客或通过 Twitter 打招呼
@InfluxDB @thekatertot