从 users@apex.incubator.apache.org 转发
Apex 利用缓冲服务器来提供背压。缓冲服务器如何在应用程序崩溃后幸存下来?如果缓冲服务器本身死了怎么办?Apex 能否保证在缓冲服务器恢复后,下游运营商最终会赶上上游运营商?
从 users@apex.incubator.apache.org 转发
Apex 利用缓冲服务器来提供背压。缓冲服务器如何在应用程序崩溃后幸存下来?如果缓冲服务器本身死了怎么办?Apex 能否保证在缓冲服务器恢复后,下游运营商最终会赶上上游运营商?
缓冲服务器是 Apex 平台中的一种发布-订阅机制,用于在运营商之间传输数据。缓冲服务器始终与上游操作员位于同一个容器中(每个容器一个缓冲服务器,与容器中操作员的数量无关);上游算子的输出被写入缓冲服务器。当前操作员在连接流时从上游操作员的缓冲服务器订阅。
因此,如果一个算子失败,上游算子的缓冲服务器将拥有所需的数据状态,直到到达一个公共检查点。如果上游算子失败,其上游算子的缓冲服务器有数据状态等。最后,如果输入算子失败,没有上游缓冲服务器,那么输入算子负责重放数据状态。根据外部系统,输入操作员要么依赖外部系统进行重放,要么自己维护数据状态,直到到达一个公共检查点。
如果由于某种原因缓冲服务器失败,则托管缓冲服务器的容器也会失败。因此,容器中的所有操作员及其下游操作员都从最后一个已知检查点重新部署。