点燃计算:在客户端消失后是否可以继续执行作业? (以崩溃为例)

时间:2019-01-07 16:36:48

标签: java ignite

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

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();

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

由于从发送任务之日起群集中就不再需要客户端,是否有办法强制服务器继续发送的任务?

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

1 个答案:

答案 0 :(得分:1)

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