从users@apex.incubator.apache.org重新发布
Apex利用缓冲服务器进行背压。缓冲服务器如何在应用程序崩溃中幸存?如果缓冲服务器本身死了怎么办?当缓冲服务器重新启动时,Apex会保证下游运营商最终会赶上上游运营商吗?
答案 0 :(得分:1)
缓冲服务器是Apex平台中的pub-sub机制,用于在运营商之间传输数据。缓冲服务器始终与上游操作员位于同一容器中(每个容器一个缓冲服务器,而不管容器中的操作员数量);并将上游运算符的输出写入缓冲服务器。当连接流时,当前运营商从上游运营商的缓冲服务器订阅。
因此,如果操作员失败,则上游操作员的缓冲服务器将具有所需的数据状态,直到达到公共检查点。如果上游运营商发生故障,其上游运营商的缓冲服务器具有数据状态等等。最后,如果输入操作符失败(没有上游缓冲区服务器),则输入操作符负责重放数据状态。根据外部系统的不同,输入操作员可以依赖外部系统进行重放,也可以自己维护数据状态,直到达到公共检查点为止。
如果由于某种原因缓冲服务器出现故障,则托管缓冲服务器的容器将失败。因此,容器中的所有操作员及其下游操作员都是从上一个已知检查点重新部署的。