【发布时间】:2018-01-30 16:16:22
【问题描述】:
我开发并维护了一个显示指标数据的网络应用。 这些指标主要是时间序列,有规律的分辨率来自 传感器、可编程逻辑控制器等。其中一些时间序列是 措施(如温度等)和其他一些是计算的结果 使用其他时间序列作为输入。这些措施来自不同的来源 具有不同的格式、协议和可用性延迟。它们都是面向批处理的 现在,但面向流的即将推出。
目前数据的导入是使用 Apache Camel 完成的,它将数据存储到一个 数据库。然后由“自制”批处理程序完成指标的计算 每次批量导入完成时由 apache Camel 调用,向该脚本提供导入时间序列的开始和结束日期以及某种命名空间,以仅处理批处理所涉及的时间序列。
虽然此解决方案目前有效,但由于其批量定向,它存在一些缺点。我开始为未来的改进考虑更好的解决方案。
更准确地说,我需要一个能够生成输出时间序列的系统 通过对输入时间序列应用数学运算,事情就像
tsout = (t1+t2) / t3
考虑到输入 (t1, t2, t3) 不能同时使用,因为 它们来自不同的来源(一些来自批处理,一些来自流......)。一些 计算的时间序列用作其他一些的输入。所有这些创造 依赖关系图。
是否有一些设计模式、工具、框架甚至“概念” 可以帮助我改进指标的生成/计算 随着数据的到来,“流式传输”方式,抽象不同的来源和 考虑依赖关系?
我查看了 apache Kafka、Flink、Spark 等框架。但我怀疑它们
真正满足我的需求。他们允许做stream / event processing 但我
不确定这是指我需要做的相同类型的处理。
希望我的问题足够清楚,不容易解释。
【问题讨论】:
标签: architecture apache-kafka time-series stream-processing