我的调度程序从执行程序获取重复的终端状态更新。我注意到这主要发生在调度程序从许多执行程序那里获得大量状态更新时。我尝试搜索可能导致它的原因,但找不到任何东西。mesos master 应该向 slave 发送 ack 吗?
更具体地说,我在调度程序中的 statusUpdate 方法被多次调用以从执行程序中更新完全相同的状态。
Mesos 承诺至少按顺序向框架调度程序发送状态更新。这意味着从站有一个等待状态更新的队列,并将继续发送最后一个未确认的状态更新,直到它收到来自框架调度程序的确认。这应该由 SchedulerDriver 自动完成,但如果您有来自许多执行程序的大量更新,则从站可能在 SchedulerDriver 有机会发送该特定 ACK 之前重新发送状态更新。
无论如何,您的调度程序都应该准备好处理重复的状态更新,因为 ACK 总是有可能无法到达从站。如果主机在能够转发 ACK 之前发生故障转移,或者 ACK 消息以某种方式被丢弃在地板上,则可能会发生这种情况。