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。
我有一个由 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。