【问题标题】:How do Flink Stateful Functions on AWS handle backpressure / 429 throttling from Lambda?AWS 上的 Flink 有状态函数如何处理来自 Lambda 的背压/429 节流?
【发布时间】:2021-10-18 13:24:29
【问题描述】:

使用远程函数的 Flink Stateful Functions 涉及 Flink StateFun 集群将计算任务的执行移交给通过某种 FaaS 机制部署的远程工作人员,例如 AWS Lambda。

AWS lambdas 受到扩展限制(它们可以扩展多快以及达到什么限制),如 in the docs 所述。请注意,Lambda 并发配额适用于账户,而不适用于每个单独的 lambda 函数。

在大规模流式系统中,特别是如果单个 Lambda 调用执行的工作相对于该期间数据流中遇到的键的数量而言相对较长,可以想象 Flink StateFun 集群可能会遇到 Lambda节流事件。换句话说,StateFun 集群在尝试通过 API 网关调用 Lambda 时会收到来自 API 网关的 429 错误,因为同时调用 Lambda 的数量已达到限制。

Flink 如何处理这个问题?它是否实现了退避/重试?如何处理数据流中事件的排序?

【问题讨论】:

    标签: amazon-web-services aws-lambda apache-flink flink-streaming flink-statefun


    【解决方案1】:

    目前 StateFun 将 429 状态码视为常规瞬态错误,并在应用指数退避后重试。

    如何处理数据流中事件的排序?

    StateFun 保证每个地址的事件严格排序,即使存在背压或瞬时错误。 它是通过将每个地址的有界队列作为 Flink 状态来实现的。当这些队列中的任何一个超过其预定义的大小时,就会向 Ingress 施加背压。

    【讨论】:

      猜你喜欢
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      相关资源
      最近更新 更多