Apache Apex 如何处理背压?

Posted

技术标签:

【中文标题】Apache Apex 如何处理背压?【英文标题】:How does Apache Apex handle back pressure? 【发布时间】:2016-04-22 23:33:29 【问题描述】:

从 users@apex.incubator.apache.org 转发

Apex 利用缓冲服务器来提供背压。缓冲服务器如何在应用程序崩溃后幸存下来?如果缓冲服务器本身死了怎么办? Apex 能否保证在缓冲服务器恢复后,下游运营商最终会赶上上游运营商?

【问题讨论】:

【参考方案1】:

缓冲服务器是 Apex 平台中的一种发布-订阅机制,用于在运营商之间传输数据。缓冲服务器始终与上游操作员位于同一个容器中(每个容器一个缓冲服务器,与容器中的操作员数量无关);上游算子的输出被写入缓冲服务器。当前操作员在连接流时从上游操作员的缓冲服务器订阅。

因此,如果操作员失败,上游操作员的缓冲服务器将具有所需的数据状态,直到到达公共检查点。如果上游算子失败,其上游算子的缓冲服务器有数据状态等。最后,如果输入算子失败,没有上游缓冲服务器,那么输入算子负责重放数据状态。根据外部系统,输入操作员要么依赖外部系统进行回放,要么自己维护数据状态,直到到达一个公共检查点。

如果由于某种原因缓冲服务器出现故障,则托管缓冲服务器的容器也会出现故障。因此,容器中的所有算子及其下游算子都从最后一个已知检查点重新部署。

【讨论】:

以上是关于Apache Apex 如何处理背压?的主要内容,如果未能解决你的问题,请参考以下文章

Flink 如何定位背压来源

如何处理 Kafka Connect Sink 中的背压?

如何处理 Oracle APEX 报告中的复选框项目?

RxJava 2 0中backpressure 背压 概念的理解

Apache spark如何计算分区以及在executor中如何处理分区

如何在 Apache Apex 中使用 JSON 创建 DAG?