使用远程函数的Flink Stateful Functions涉及 Flink StateFun 集群,将计算任务的执行交给通过一些 FaaS 机制部署的远程工作者,例如 AWS Lambda。
AWS lambdas 受到扩展限制(它们可以扩展的速度和限制),如docs 中所述。请注意,并发的 Lambda 配额适用于账户,而不是每个单独的 lambda 函数。
在大规模流系统中,特别是如果单个 Lambda 调用执行的工作相对于该期间数据流中遇到的键的数量而言相对较长,可以想象 Flink StateFun 集群可能会遇到 Lambda 节流事件。换句话说,StateFun 集群在尝试通过 API 网关调用 Lambda 时会收到来自 API 网关的 429 错误,因为同时 Lambda 调用的数量已达到限制。
Flink 是如何处理这个问题的?它是否实现了退避/重试,以及如何处理数据流中事件的排序?