【发布时间】:2020-06-17 22:57:33
【问题描述】:
作为一个玩具示例,假设我想要构建一个 Web 应用程序,它接收带有 ID 和 $ 金额的 HTTP 请求,并返回一个响应,其中包含 ID 在 24 小时窗口内支付的总金额 $ 金额。如果输入和输出是 Kafka 流,则使用 Apache Flink 当然可以创建该应用程序。
但是是否支持/可以创建一个 Flink 应用,其中输入是 HTTP 请求,输出是对 HTTP 请求的响应?
如果 Flink 不支持,是否有其他数据流框架支持?
(对于上面的玩具示例,我想有比使用 Flink 更简单的解决方案,但我真正的用例是许多、多个窗口和其他通过 HTTP“流”请求的有状态计算。 )
【问题讨论】:
-
您能否详细说明您为什么要使用这样的设置?我的意思是如果有多个窗口并且计算需要更长的时间,那么请求似乎必须等待很长时间。
-
所以我想要的是一个 HTTP 请求可以访问的服务,它基本上完成了 Flink 做得好的所有事情:有状态计算和窗口计算。当然,这可以从头开始实现,但是当我阅读 Flink 文档时,对我想要开箱即用的操作类型有很多支持。
-
是的,但恕我直言,将其作为单个同步请求执行是否真的是一个好主意仍然值得怀疑。在这种情况下,有很多事情需要考虑,例如超时。从您的描述看来,服务器上需要执行大量操作,因此异步执行此操作可能会很好。最后,Flink 提供了诸如窗口之类的功能,但例如 Akka Streams 也是如此。老实说,如果您不是真的在进行大规模计算,我可能会寻找其他一些框架。
标签: apache-flink