Ignite Compute:是否可以在客户端离开时继续执行作业? (例如坠毁)

Ignite Compute : Is it possible to continue jobs execution while the client is gone ? (crashed for exemple)

我有一个由 8 个服务器节点和 1 个客户端组成的 ignite 计算网格。 客户端向服务器发送任务:

ignite.compute().withExecutor("myPool").withNoResultCache().call(calls);

服务器然后执行相应的任务,然后将任务的结果写入云存储(不属于集群的一部分)。 服务器配置为使用 jobstealingSPI 和 K8 TCPdiscoverySPI。

    TcpDiscoverySpi tcpDS = new TcpDiscoverySpi();
    TcpDiscoveryKubernetesIpFinder ipFinder = new TcpDiscoveryKubernetesIpFinder();
    ipFinder.setNamespace("ignite");
    tcpDS = tcpDS.setIpFinder(ipFinder);
    cfg.setDiscoverySpi(tcpDS);

    JobStealingCollisionSpi spi = new JobStealingCollisionSpi();
    spi.setWaitJobsThreshold(1);
    spi.setMessageExpireTime(1000);
    spi.setMaximumStealingAttempts(10);
    spi.setActiveJobsThreshold(1);
    spi.setStealingEnabled(true);

    JobStealingFailoverSpi failoverSpi = new JobStealingFailoverSpi();

但是,当客户端断开连接或崩溃时,服务器节点将停止执行已发送的任务。

由于从发送任务的那一刻起集群中就不需要客户端,有没有办法强制服务器继续发送的作业?

此外,集群中是否存在重复的客户端节点而没有重复计算任务顺序? (客户端节点冗余)

您可以使用 ComputeTaskMapAsync 注释,它将使用另一个节点来映射查询,而不是本地节点。要使用此注释,您需要使用 ComputeTask 而不是 IgniteCallable。