我有一个由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();
但是,当客户端断开连接或崩溃时,服务器节点将停止执行已发送的任务。
由于从发送任务之日起群集中就不再需要客户端,是否有办法强制服务器继续发送的任务?
此外,集群中是否有一个重复的客户端节点,而没有重复计算任务的顺序? (客户端节点冗余)
答案 0 :(得分:1)
您可以使用ComputeTaskMapAsync批注,它将使用另一个节点而不是本地节点来映射查询。要使用此批注,您将需要使用ComputeTask而不是IgniteCallable。