Orleans. Несколько инстансов одного грейна на разных силах?
От: Lexey Россия  
Дата: 13.03.17 13:36
Оценка:
Подумываю заюзать Orleans в качестве платформы для распараллеливания различных вычислительных задач.
В частности, нужно уметь запускать задачи одного типа на разных серваках. Пока не вижу способа это сделать, кроме как создавать несколько инстансов одного грейна с разными id и "вручную" балансировать задачи между ними.
Может я что-то упустил и есть лучшие альтернативы?
Или может быть есть более подходящие платформы, чем Orleans?
"Будь достоин победы" (c) 8th Wizard's rule.
Re: Orleans. Несколько инстансов одного грейна на разных силах?
От: Sinix  
Дата: 13.03.17 17:40
Оценка: 10 (1)
Здравствуйте, Lexey, Вы писали:

L>В частности, нужно уметь запускать задачи одного типа на разных серваках. Пока не вижу способа это сделать, кроме как создавать несколько инстансов одного грейна с разными id и "вручную" балансировать задачи между ними.


???

Grains по умолчанию рандомно раскидываются по silos. Подробнее —
https://dotnet.github.io/orleans/Documentation/Getting-Started-With-Orleans/Grain-LifeCycle.html

Если надо поменять стратегию раскидывания grain-ов — есть placements,
http://richorama.github.io/blog/2015/01/02/grain-placement-in-orleans/
Возможность подсунуть свою стратегию пока нет, можно завести issue.


L>Или может быть есть более подходящие платформы, чем Orleans?

akka.net, но это базовое API, всё высокоуровневое лепить самому.
azure service fabric, но это azure.

Вроде с крупным — всё.
Re: Orleans. Несколько инстансов одного грейна на разных силах?
От: Farsight Россия  
Дата: 13.03.17 18:01
Оценка: 10 (1) +1
Здравствуйте, Lexey, Вы писали:

L>Подумываю заюзать Orleans в качестве платформы для распараллеливания различных вычислительных задач.

L>В частности, нужно уметь запускать задачи одного типа на разных серваках. Пока не вижу способа это сделать, кроме как создавать несколько инстансов одного грейна с разными id и "вручную" балансировать задачи между ними.
L>Может я что-то упустил и есть лучшие альтернативы?
L>Или может быть есть более подходящие платформы, чем Orleans?

Не совсем понятен вопрос. По видимому, кластер у Вас сконфигурирован. Так и получайте через GrainClient инстанс, да и запускайте задачу. Инфраструктура кластера сама решит, где выполнять задачу. Если персистентность не интересует, то получает грэйн с новым Guid. Иначе — сами решаете, как работать с айдишками.
</farsight>
Re: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 13.03.17 18:16
Оценка: 13 (2)
Здравствуйте, Lexey, Вы писали:

L>Подумываю заюзать Orleans в качестве платформы для распараллеливания различных вычислительных задач.

L>В частности, нужно уметь запускать задачи одного типа на разных серваках. Пока не вижу способа это сделать, кроме как создавать несколько инстансов одного грейна с разными id и "вручную" балансировать задачи между ними.
L>Может я что-то упустил и есть лучшие альтернативы?
L>Или может быть есть более подходящие платформы, чем Orleans?

Альтернативных вариантов полно:
1. Очереди. Взять RabbitMQ шлем сообщения в очередь, сервисы на серверах её разгребают и выполняют задания
2. Написать простейший REST сервис на .net core и запустить его в docker swarm
3. Сделать батничек и отдать его готовому планировщику — https://github.com/hashicorp/nomad-dispatch-ffmpeg
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 13.03.17 18:22
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Подумываю заюзать Orleans в качестве платформы для распараллеливания различных вычислительных задач.


Оно в default поведении через 200мсек начинает писать ворнинги в лог, а через 30сек тайм-аут выдаёт. Задачи укладываться будут?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 13.03.17 18:43
Оценка:
Здравствуйте, Farsight, Вы писали:

F>Не совсем понятен вопрос. По видимому, кластер у Вас сконфигурирован. Так и получайте через GrainClient инстанс, да и запускайте задачу. Инфраструктура кластера сама решит, где выполнять задачу.


Это пока дедос не придёт
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Sinix  
Дата: 13.03.17 18:50
Оценка:
Здравствуйте, TK, Вы писали:

TK>Оно в default поведении через 200мсек начинает писать ворнинги в лог, а через 30сек тайм-аут выдаёт. Задачи укладываться будут?


Эмм, сколько помню, для await-ов время ожидания продолжения не учитывается. А без них — прямая дорога к ситуации "затыкаемся уже на 1000 rps".
Re[3]: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 13.03.17 19:02
Оценка: +1 :)
Здравствуйте, Sinix, Вы писали:

TK>>Оно в default поведении через 200мсек начинает писать ворнинги в лог, а через 30сек тайм-аут выдаёт. Задачи укладываться будут?


S>Эмм, сколько помню, для await-ов время ожидания продолжения не учитывается. А без них — прямая дорога к ситуации "затыкаемся уже на 1000 rps".


Вычислительная задача на await'ах? Да вы хипстер В любом случае, 30 секунд и таймаут вызова — остаются.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Sinix  
Дата: 13.03.17 19:06
Оценка:
Здравствуйте, TK, Вы писали:

TK>Вычислительная задача на await'ах? Да вы хипстер

А то

grains-ы нифига не рассчитаны на бизнес-приложения, их основное применение — облака акторов для кучи "дешёвых" задач, всё нагруженное надо бы выносить из шедулера. Как вариант — в отдельные таски.

В любом случае, 30 секунд и таймаут вызова — остаются.
Ну таки да. А кто в нынешнем мобильном мире готов по 30 сек ждать ответа?
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 14.03.17 06:42
Оценка: 56 (3) +1
Здравствуйте, Sinix, Вы писали:

S>azure service fabric, но это azure.

Вроде как вполне себе standalone есть

Или под но это azure подразумевалось что-то иное, а не то, что только в облаке?
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Lexey Россия  
Дата: 14.03.17 09:15
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Grains по умолчанию рандомно раскидываются по silos. Подробнее —

S>https://dotnet.github.io/orleans/Documentation/Getting-Started-With-Orleans/Grain-LifeCycle.html

Раскидываться-то они раскидываются, только они single instance по дефолту. А мне нужно несколько инстансов.
Можно сделать grain stateless worker'ом, но тогда, судя по докам, все инстансы будут создаваться в пределах того silo, с которого вызов идет, что тоже не годится, ибо нужна балансировка на разные silos'ы.

S>akka.net, но это базовое API, всё высокоуровневое лепить самому.


Краем глаза на нее смотрел, такое же впечатление сложилось.

S>azure service fabric, но это azure.


Azure не вариант, увы.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Lexey Россия  
Дата: 14.03.17 09:32
Оценка:
Здравствуйте, Farsight, Вы писали:

F>Не совсем понятен вопрос. По видимому, кластер у Вас сконфигурирован.


Пока нет. Я пока думаю, связываться с Orleans или пытаться изобретать свои велосипеды с нуля.

F>Так и получайте через GrainClient инстанс, да и запускайте задачу. Инфраструктура кластера сама решит, где выполнять задачу. Если персистентность не интересует, то получает грэйн с новым Guid.


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

F>Иначе — сами решаете, как работать с айдишками.


Похоже, так и придется делать.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[2]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Lexey Россия  
Дата: 14.03.17 09:47
Оценка:
Здравствуйте, TK, Вы писали:

TK>Альтернативных вариантов полно:

TK>1. Очереди. Взять RabbitMQ шлем сообщения в очередь, сервисы на серверах её разгребают и выполняют задания

Самая простая идея, но совершенно не понятно, как нагрузку балансировать. Выполняемые задачи могут быть очень разными. От мелкого расчета, который делается несколько миллисекунд до очень тяжелого (десятки минут и десятки гигов памяти).

TK>2. Написать простейший REST сервис на .net core и запустить его в docker swarm


Увы, core не годится. Нужен полный фреймворк.

TK>3. Сделать батничек и отдать его готовому планировщику — https://github.com/hashicorp/nomad-dispatch-ffmpeg


Вот это уже интересно. Почитаю, что он умеет.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[4]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Lexey Россия  
Дата: 14.03.17 10:07
Оценка:
Здравствуйте, TK, Вы писали:

TK>Вычислительная задача на await'ах? Да вы хипстер В любом случае, 30 секунд и таймаут вызова — остаются.


Пишут, что таймаут настраивается.
Плюс, ждать завершения длинных задач не нужно. Запустил и забыл. Результат придет другим путем.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[5]: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 14.03.17 11:37
Оценка:
Здравствуйте, Lexey, Вы писали:

TK>>Вычислительная задача на await'ах? Да вы хипстер В любом случае, 30 секунд и таймаут вызова — остаются.


L>Пишут, что таймаут настраивается.

L>Плюс, ждать завершения длинных задач не нужно. Запустил и забыл. Результат придет другим путем.

Ну, если нет ощущения, что оно используется как-то не так то, почему и нет
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Orleans. Несколько инстансов одного грейна на разных силах?
От: TK Лес кывт.рф
Дата: 14.03.17 11:43
Оценка: 18 (2)
Здравствуйте, Lexey, Вы писали:

TK>>Альтернативных вариантов полно:

TK>>1. Очереди. Взять RabbitMQ шлем сообщения в очередь, сервисы на серверах её разгребают и выполняют задания

L>Самая простая идея, но совершенно не понятно, как нагрузку балансировать. Выполняемые задачи могут быть очень разными. От мелкого расчета, который делается несколько миллисекунд до очень тяжелого (десятки минут и десятки гигов памяти).


И в чем проблема? Если заранее понятно, какое это задание то это знание надо добавить к исходному запросу и дальше гибрид из https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html и
https://www.rabbitmq.com/tutorials/tutorial-two-javascript.html и поднять в нужной пропорции воркеров для быстрых задач и медленных.

Если не понятно то можно ограничиться только https://www.rabbitmq.com/tutorials/tutorial-two-javascript.html
Воркеров можно поднять на "глаз" если очередь растет то, просто добавить новых.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Orleans. Несколько инстансов одного грейна на разных силах?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.03.17 13:22
Оценка:
Здравствуйте, Lexey, Вы писали:

TK>>Альтернативных вариантов полно:

TK>>1. Очереди. Взять RabbitMQ шлем сообщения в очередь, сервисы на серверах её разгребают и выполняют задания
L>Самая простая идея, но совершенно не понятно, как нагрузку балансировать. Выполняемые задачи могут быть очень разными. От мелкого расчета, который делается несколько миллисекунд до очень тяжелого (десятки минут и десятки гигов памяти).

А заранее можно оценить длительность? Если да, то просто несколько очередей для разной длительности задач организовать (а миллисекундные вообще проще по месту выполнить). Если нет — work stealing тебе в помощь.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Orleans. Несколько инстансов одного грейна на разных силах?
От: Sinix  
Дата: 14.03.17 15:16
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Или под но это azure подразумевалось что-то иное, а не то, что только в облаке?


Это-это имелось) Переглючило.
Re[4]: Orleans. Несколько инстансов одного грейна на разных
От: Lexey Россия  
Дата: 15.03.17 09:28
Оценка:
Здравствуйте, TK, Вы писали:

TK>И в чем проблема? Если заранее понятно, какое это задание то это знание надо добавить к исходному запросу и дальше гибрид из https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html и

TK>https://www.rabbitmq.com/tutorials/tutorial-two-javascript.html и поднять в нужной пропорции воркеров для быстрых задач и медленных.

Спасибо. Не знал, что RabbitMQ такое умеет. Это вариант.

Upd: Даже под MassTransit'ом поверх RabbitMq можно эту фичу использовать. Это радует.
"Будь достоин победы" (c) 8th Wizard's rule.
Отредактировано 15.03.2017 15:09 Lexey . Предыдущая версия .
Re: Orleans. Несколько инстансов одного грейна на разных силах?
От: ifle  
Дата: 27.03.17 10:59
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Подумываю заюзать Orleans в качестве платформы для распараллеливания различных вычислительных задач.

L>В частности, нужно уметь запускать задачи одного типа на разных серваках. Пока не вижу способа это сделать, кроме как создавать несколько инстансов одного грейна с разными id и "вручную" балансировать задачи между ними.
L>Может я что-то упустил и есть лучшие альтернативы?
L>Или может быть есть более подходящие платформы, чем Orleans?

Интересная тема. На чём в итоге остановились?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.