Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическое распределение задач в кластере / 16 сообщений из 16, страница 1 из 1
31.07.2018, 10:28
    #39681433
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Коллеги, всем привет!

Подайте, пожалуйста, идею. Есть кластер из заранее известного списка нод. Ноды выполняют очень долгоживущие задачи (фактически неограниченные по времени). Общий пул задач постоянно меняется: появляются новые задачи, а старые в какой-то момент отменяются. У каждой задачи есть уникальный ключ, который определяется параметрами задачи.

Задача состоит в том, чтобы при выходе из строя какой-то из нод перекинуть ее задачи на другие ноды, а когда нода ожила - забрать обратно. Т.е. нужно динамически и более-менее равномерно распределять нагрузку по нодам.

условия и ограничения:
1) минимизировать число переназначений задач при failover
2) исключить возможность выполнения нескольких задач с одним и тем же ключом на разных нодах
3) кластер должен нормально себя вести при штатном запуске и останове (когда включаются или выключаются все ноды). Не должно начинаться беспорядочное распределение задач туда-сюда

Какие технологии можно использовать для решения данной задачи с минимальными трудозатратами? Спасибо
...
Рейтинг: 0 / 0
31.07.2018, 10:28
    #39681434
КритерийОтбора
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
причем тут "работа"?
...
Рейтинг: 0 / 0
31.07.2018, 10:41
    #39681439
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Переместите в Java, пожалста :)

Модератор: Тема перенесена из форума "Работа".
...
Рейтинг: 0 / 0
31.07.2018, 11:26
    #39681467
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Andrei TКакие технологии можно использовать для решения данной задачи с минимальными трудозатратами?
- я бы использовал JNDI, назначая задачу ноде исходя из загрузки ноды (на каждой ноде нужен монитор активности и загрузки по каким то критериям, которые Вы считаете существенными)

- но если нода умерла, то и задача умерла, надо начинать заново на другой ноде
...
Рейтинг: 0 / 0
31.07.2018, 11:31
    #39681473
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Обычная очередь c подтверждением.
Берем из очереди задачу, обрабатываем, по окончанию шлем подтверждение.
https://docs.oracle.com/cd/E19798-01/821-1841/bncfw/index.html
Очередь должна быть одна, естественно. Можно взять AMQ, kafka и т.п. Все ноды подключаются к mq серверу и берут задания.
...
Рейтинг: 0 / 0
31.07.2018, 11:54
    #39681488
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Не ясно, что автор подразумевает под словом "задача (фактически неограниченные по времени)"

Очередь подойдет, если "задача" это задача. Т.е. нечто, что отрабатывает за конечное время и возрашает результат

Если "задача" это некоторый демон/сервисная служба, то очередь вряд ли подойдет. Я в таких случаях делал свою службу "диспетчер", которая отслеживала работоспособность служб и перезапускала их при необходимости. Правда, получалась единая точка отказа. Если падал диспетчер, то система приходила в неработоспособное состояние.
...
Рейтинг: 0 / 0
31.07.2018, 12:00
    #39681492
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Andrei TЗадача состоит в том, чтобы при выходе из строя какой-то из нод перекинуть ее задачи на другие ноды, а когда нода ожила - забрать обратно. Т.е. нужно динамически и более-менее равномерно распределять нагрузку по нодам.

В принципе, это базавая задача любого кластера
Т.ч. любой кластерный софт, толжен уметь ее решать "из коробки"

Тот же Oracle WebLogic Server, кластера поддерживает. Правда под него долгоработающих служб не создавал и в кластере его не эксплуатировали. С точки зрения извне и программирования, кластер выглядить как один Application сервер, компьютеры и ресурсы внутри кластера - проблема кластерного софта.

На то он и кластер.

IMHO & AFAIK
...
Рейтинг: 0 / 0
31.07.2018, 12:01
    #39681495
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Оформляете задачи в виде спрингбут приложений, запускаете на кубернетесе.
...
Рейтинг: 0 / 0
31.07.2018, 12:43
    #39681523
Cheblin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
https://akka.io/] AKKA
...
Рейтинг: 0 / 0
01.08.2018, 11:30
    #39681906
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
...
Рейтинг: 0 / 0
01.08.2018, 12:35
    #39681950
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Leonid KudryavtsevС точки зрения извне и программирования, кластер выглядить как один Application сервер, компьютеры и ресурсы внутри кластера - проблема кластерного софта.

На то он и кластер.
+1
Думаю автору не надо писать свой кластерСофт, а изучить сущестаующие.
...
Рейтинг: 0 / 0
01.08.2018, 12:59
    #39681968
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Leonid KudryavtsevНе ясно, что автор подразумевает под словом "задача (фактически неограниченные по времени)"

Очередь подойдет, если "задача" это задача. Т.е. нечто, что отрабатывает за конечное время и возрашает результат

Если "задача" это некоторый демон/сервисная служба, то очередь вряд ли подойдет. Я в таких случаях делал свою службу "диспетчер", которая отслеживала работоспособность служб и перезапускала их при необходимости. Правда, получалась единая точка отказа. Если падал диспетчер, то система приходила в неработоспособное состояние.

Неограниченные по времени - подразумеваю, что у задач нет детерминированного "конца" :) Они завершаются по событию извне.

Leonid KudryavtsevВ принципе, это базавая задача любого кластера
Т.ч. любой кластерный софт, толжен уметь ее решать "из коробки"

Тот же Oracle WebLogic Server, кластера поддерживает.

У нас обычные java приложения в контейнерах, сервера приложений не пользуем.

HettОбычная очередь c подтверждением.
Берем из очереди задачу, обрабатываем, по окончанию шлем подтверждение.
https://docs.oracle.com/cd/E19798-01/821-1841/bncfw/index.html
Очередь должна быть одна, естественно. Можно взять AMQ, kafka и т.п. Все ноды подключаются к mq серверу и берут задания.
Один из рассматриваемых вариантов - Rabbit MQ с плагином для шардинга сообщений по очередям. Основной недостаток (помимо необходимости разворачивать инфраструктуру, админить брокер и т.п.) - это то, что упавшая нода не сможет вернуть незавершенные задачи обратно в очередь.

fixxerОформляете задачи в виде спрингбут приложений, запускаете на кубернетесе.
Задачи очень "легковесные", их много (порядок - несколько тысяч на ноду), плюс регулярно появляются новые задачи и завершаются текущие.

Cheblin https://akka.io/] AKKA
Хотелось бы чистое java решение. Но почитаю, спасибо.

Герой дня Marathon+Mesos решают задачу :
Спасибо, почитаю. На первый взгляд выглядит сложновато (опять же, с т.з. развертывания софта и простоты встраивания в существующую концепцию написания приложений).
...
Рейтинг: 0 / 0
01.08.2018, 13:01
    #39681970
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Petro123Leonid KudryavtsevС точки зрения извне и программирования, кластер выглядить как один Application сервер, компьютеры и ресурсы внутри кластера - проблема кластерного софта.

На то он и кластер.
+1
Думаю автору не надо писать свой кластерСофт, а изучить сущестаующие.
Ни в коем случае не собираюсь писать свой велосипед, т.к. примерно представляю себе объем работы, хотя поползновения такие со стороны руководства есть.
...
Рейтинг: 0 / 0
01.08.2018, 13:23
    #39681997
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Andrei TУ нас обычные java приложения в контейнерах, сервера приложений не пользуем.
...
не собираюсь писать свой велосипед, т.к. примерно представляю себе объем работы
RMI - уровень сложности студенческий, устанавливать ничего кроме JavaSE не надо
...
Рейтинг: 0 / 0
01.08.2018, 13:30
    #39682003
Cheblin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
Andrei TCheblin https://akka.io/] AKKA
Хотелось бы чистое java решение. Но почитаю, спасибо.

AKKA и так....в этом смысле чище не бывает. В AKKA предоставлена возможность писать и на простейшей JAVA , но получаться будет как обычно.. многоэтажно и многословно.
...
Рейтинг: 0 / 0
02.08.2018, 18:45
    #39682750
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое распределение задач в кластере
CheblinAKKA и так....в этом смысле чище не бывает. В AKKA предоставлена возможность писать и на простейшей JAVA , но получаться будет как обычно.. многоэтажно и многословно.
Разобрался сегодня... cluster + cluster-sharding = то, что доктор прописал. Подходит под задачу идеально. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическое распределение задач в кластере / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]