Сервис Executor#
В DataGrid есть распределенная реализация java.util.concurrent.ExecutorService, которая отправляет задачи для выполнения на серверные узлы кластера. Задачи распределяются по нагрузке между узлам кластера. Они гарантированно выполнятся, если в кластере есть хотя бы один узел.
Сервис Executor можно получить из экземпляра Ignite:
// Получите сервис `Executor` с поддержкой кластера.
ExecutorService exec = ignite.executorService();
// Выполните итерацию по всем словам предложения и создайте задачи.
for (final String word : "Print words using runnable".split(" ")) {
// Запустите поток выполнения на узле.
exec.submit(new IgniteRunnable() {
@Override
public void run() {
System.out.println(">>> Printing '" + word + "' on this node from grid job.");
}
});
}
Чтобы ограничить набор узлов, которые доступны сервису Executor, укажите группу кластеров (подробнее об этом написано в разделе «Группы кластеров»):
// Группа для узлов, в которых определен атрибут `worker`.
ClusterGroup workerGrp = ignite.cluster().forAttribute("ROLE", "worker");
// Получите сервис `Executor` для группы кластеров.
ExecutorService exec = ignite.executorService(workerGrp);