【问题标题】:Apache Flink for a real-time processing of finite streamsApache Flink 用于实时处理有限流
【发布时间】:2016-10-10 08:12:28
【问题描述】:

我正在考虑如何将 Apache Flink 用于我目前正在开发的投票系统。我是 Flink 的新手,任何帮助都将不胜感激。

要求是:

  • 具有某些特权的用户可以开始对任意问题进行投票。用户可以随时关闭投票。
  • 可能有数十万人参与投票
  • 投票开始后应立即开始计票,中间结果应随时间更新,以便向参与者展示。
  • 当系统在投票结束后完成计票时,应将最终结果通知参与者。

在我的理解中,Flink 的流处理是针对无限流的实时处理,而批处理是针对有限流的非实时处理。
如何将 Flink 应用于我的需求,即对有限流的实时处理?

【问题讨论】:

    标签: apache-flink


    【解决方案1】:

    Flink 的 DataStream API 可以毫无问题地处理有限流的事件。 DataStream 程序将在流到达终点时简单地终止。

    如果您使用SocketTextStreamFunction 从套接字读取文本数据,您可以模拟这种行为。关闭套接字后,程序将终止。或者,您也可以从也是某种有限流的文件中读取数据。但是,请记住,不完整的窗口不会被自动评估。因此,您必须确保在使用 Windows 时不会丢失数据。

    【讨论】:

    • 我研究了SocketTextStreamFunction 的实现,并为我的用例提出了以下策略。你认为这是要走的路吗? 1. 参与者的每张投票都作为一个事件发送到我的SourceFunction。 2. 当主机用户关闭投票时,在其有效负载中包含终止信号的特殊事件被发送到我的SourceFunction,这导致它退出run 方法。 3. 我的窗口应该有一个额外的触发器,在接受终止事件时触发,以免丢失数据。
    • 这听起来不错。如果您使用基于事件时间的窗口,您还可以从源发出带有Long.MAX_VALUE 的水印来触发窗口计算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多