Apache Apex 如何处理背压?

How does Apache Apex handle back pressure?

用户转发@apex.incubator.apache.org

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

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

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

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