Apache flink ApacheFlink支持使用HTTP请求作为输入和输出吗?

Apache flink ApacheFlink支持使用HTTP请求作为输入和输出吗?,apache-flink,Apache Flink,作为一个玩具示例,假设我想构建一个web应用程序,该应用程序接收带有ID和$amount的HTTP请求,并返回一个带有ID在24小时窗口内支付的总计$amount的响应。如果输入和输出是卡夫卡流,那么使用ApacheFlink当然可以创建该应用程序 但是是否支持/可能创建一个Flink应用程序,其中输入是HTTP请求,输出是对HTTP请求的响应? 如果Flink不支持这一点,是否还有其他数据流框架支持这一点 (对于上面的玩具示例,我想象有比使用Flink更简单的解决方案,但我真正的用例是通过HT

作为一个玩具示例,假设我想构建一个web应用程序,该应用程序接收带有ID和$amount的HTTP请求,并返回一个带有ID在24小时窗口内支付的总计$amount的响应。如果输入和输出是卡夫卡流,那么使用ApacheFlink当然可以创建该应用程序

但是是否支持/可能创建一个Flink应用程序,其中输入是HTTP请求,输出是对HTTP请求的响应?

如果Flink不支持这一点,是否还有其他数据流框架支持这一点


(对于上面的玩具示例,我想象有比使用Flink更简单的解决方案,但我真正的用例是通过HTTP“流”请求进行多个窗口和其他有状态计算。)

Flink本身没有HTTP源或接收器,但Apache Bahir中有一个基于Netty的源,这正是您想要的。您可以找到有关bahir netty的更多信息。但据我所知,没有一个接收器可以将数据作为HTTP请求发送,所以您可能需要自己实现它。

Flink本身没有HTTP源或接收器,但Apache Bahir中有一个基于Netty的源,这正是您想要的。您可以找到有关bahir netty的更多信息。但据我所知,没有一个接收器可以将数据作为HTTP请求发送,因此您可能需要自己实现。

Flink不提供官方的HTTP源或接收器,但您可以根据接收器和源基类实现自己的。然而,我认为这不是一种“正确”的方法,Flink的设计不是为了接收HTTP请求并直接应答它们,Flink通常使用某种持久性数据源/接收器,以便在应用程序失败时可以重新创建/重新计算状态

我建议您使用类似Kafka Bridge:,它允许HTTP客户端使用简单的请求编写和使用来自Kafka主题的消息。在这种情况下,您将让客户机将金额和ID数据发布到一个主题,然后Flink将使用此主题作为第二个主题的输入和输出结果。最后,您的客户可以再次请求投票结果:

客户端->卡夫卡布里奇->输入选项->弗林克->结果主题


client->KafkaBridge->ResultsTopic

Flink不提供正式的HTTP源或接收器,但您可以根据接收器和源基类实现自己的。然而,我认为这不是一种“正确”的方法,Flink的设计不是为了接收HTTP请求并直接应答它们,Flink通常使用某种持久性数据源/接收器,以便在应用程序失败时可以重新创建/重新计算状态

我建议您使用类似Kafka Bridge:,它允许HTTP客户端使用简单的请求编写和使用来自Kafka主题的消息。在这种情况下,您将让客户机将金额和ID数据发布到一个主题,然后Flink将使用此主题作为第二个主题的输入和输出结果。最后,您的客户可以再次请求投票结果:

客户端->卡夫卡布里奇->输入选项->弗林克->结果主题


client->KafkaBridge->ResultsTopic

所以,我想,仅仅一个HTTP源和一个HTTP接收器是不够的。我需要回答传入的HTTP请求,而不只是在另一个请求中进一步发送结果。因此,我想,仅仅一个HTTP源和一个HTTP接收器是不够的。我需要回答传入的HTTP请求,而不是在另一个请求中进一步发送结果。请详细说明为什么要使用这种设置?我的意思是,如果有多个窗口,并且计算需要更长的时间,那么请求似乎必须等待相当长的时间。因此,我想要的是一个可以通过HTTP请求访问的服务,它基本上完成了Flink做得很好的所有事情:有状态计算和窗口计算。当然,这可以从零开始实现,但是当我阅读Flink文档时,有很多支持我想要的开箱即用的操作。是的,但是作为一个同步请求是否真的是一个好主意还是一个疑问。在这种情况下,有很多事情要考虑,例如在超时问题上。从您的描述来看,似乎要在服务器上执行大量操作,因此异步执行可能会更好。最后,Flink提供了类似于窗口的功能,但Akka Streams也提供了类似的功能。老实说,如果你不是真的在做大规模的计算,我可能会找一些其他的框架。你能详细说明一下为什么要使用这样的设置吗?我的意思是,如果有多个窗口,并且计算需要更长的时间,那么请求似乎必须等待相当长的时间。因此,我想要的是一个可以通过HTTP请求访问的服务,它基本上完成了Flink做得很好的所有事情:有状态计算和窗口计算。当然,这可以从零开始实现,但是当我阅读Flink文档时,有很多支持我想要的开箱即用的操作。是的,但是作为一个同步请求是否真的是一个好主意还是一个疑问。在这种情况下,有很多事情要考虑,例如在超时问题上。从您的描述来看,似乎要在服务器上执行大量操作,因此异步执行可能会更好。最后,Flink提供了类似于窗口的功能,但Akka Streams也提供了类似的功能。老实说,如果你不是真的在做大规模的计算,我可能会寻找一些其他的框架。