У меня есть сетка вычислений зажигания, состоящая из 8 узлов сервера и 1 клиента.
Клиент отправляет задачи на серверы:
ignite.compute().withExecutor("myPool").withNoResultCache().call(calls);
Затем серверы выполняют соответствующие задачи, а затем записывают результаты этих задач в облачное хранилище (которое не является частью кластера).
Серверы настроены на использование рабочих мест SPI и 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();
Однако, когда клиент отключается или происходит сбой, узлы сервера перестают выполнять отправленные задачи.
Поскольку клиент не является необходимым в кластере с момента отправки задач, существует ли способ заставить серверы продолжить отправленные задания?
Кроме того, есть ли дублирующий клиентский узел в кластере без дублирования порядка вычислений? (избыточность клиентского узла)