0

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

AWS lambdas 受到扩展限制(它们可以扩展的速度和限制),如docs 中所述。请注意,并发的 Lambda 配额适用于账户,而不是每个单独的 lambda 函数。

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

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

4

1 回答 1

0

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

对于数据流中事件的排序,这是如何处理的?

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

于 2021-11-03T22:56:05.153 回答