|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Привет. Заинтересовался TPL. Как решается вопрос балансировки ? Предположим, что есть некий сервер приложений. Он получает запросы от клиентов делает некие вычисления, запрашивает данные из БД, снова делает вычисления и возвращает результат клиенту. Предположим такие исходные (взятые из головы... моей) 1. СервПрил получает запрос и обрабатывает его 5 сек (какие-то свои вычисления). 2. Затем посылает запрос в БД Oracle какому-то пакету, который выполняет очень мощные серверные вычисления в течении 10 сек. 3. Затем СервПрил получает данные, и опять делает вычисления 5 сек. 4. И снова запрос в БД на 10 сек. 5. После чего возвращается результат клиенту. Итого на каждый запрос сервер тратит 30 сек. Теперь самый цимес. Клиенты бесконечно генерят по запросу, раз в 10 сек. Если СервПрил не ограничить какими-то рамками, через какое-то время будет крутится стотыщмилионов запросов от клиентов, и запросы все еще будут прибывать. Собственно сабж. Как это все балансировать ? Как решить когда стоит прекратить получение запросов от клиентов ? Т.е. обрабатывать только некоторое их количество разом. Оставлю пока вопрос о балансировке между самими СервПрилами, это мне тоже интересно, но пожалуй не все сразу. PS. Если кто знает, дайте пожалуйста ссылки на каки-либо существующие проекты, использующие TPL. Какие либо опенсорсовые проекты или еще чего. Хочется посмотреть на профессиональный проект TPL, использование и балансировку. PPS. Может есть литература по балансировке ? По TPL то есть конечно учебного. А вот, чтобы на примере (или в приближении) реальных приложений, и решения практических задач, чего-то не знаю. Может что-то типа Фаулера, где берется пример задачи, и рефакторится или еще чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 15:24 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Dualcore, а что, ваш сервер приложений обрабатывает запросы последовательно? Да и Оракл тоже такой фигней не страдает Кстати, что это за "мощные серверные вычисления" и запросы по 10 секунд? Что за дикие расчеты? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:17 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Arm79Dualcore, а что, ваш сервер приложений обрабатывает запросы последовательно? Да и Оракл тоже такой фигней не страдает Кстати, что это за "мощные серверные вычисления" и запросы по 10 секунд? Что за дикие расчеты? Нет. Как раз я думаю, что на каждый запрос нужно создавать Task. И каждый такой Task будет работать 30 сек. А что Вам в расчетах не нравится то ? Цифры я с потолка взял. Суть их в том, чтобы клиенты присылали задачи быстрее, чем они решаются - для чего и нужно было бы балансировать. Я же в учебных целях спрашиваю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:21 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Dualcore, если в учебных, то при указанных вами параметрах никаких балансировщиков не нужно. если деньги позволяют, смотрим аппаратный балансировщик если денег нет, а очень хочется, то есть вариант nginx ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:28 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Arm79Dualcore, если в учебных, то при указанных вами параметрах никаких балансировщиков не нужно. если деньги позволяют, смотрим аппаратный балансировщик если денег нет, а очень хочется, то есть вариант nginx ЗЫ самому писать балансировщик смысла нет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:29 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Dualcore, Можно подумать о кешировании результатов, или каких то со составляющих ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:37 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Arm79Dualcore, а что, ваш сервер приложений обрабатывает запросы последовательно? Да и Оракл запросы по 10 секунд? Что за дикие расчеты? +1 Любой SOA асинхронен по своей природе. Поэтому даже заморачиваться не стоит на счет программной балансировки. А вот инфраструктурной балансировкой принебрегать не стоит (кластер и всё отседова вытекающее). С точки зрения кодинга никаких проблем. Ну а технология кеширования - это уже из области оптимизации кода, решается в самом конце. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 16:45 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Вы все хотите сказать, что TPL не предназначен для столпа проекта ? Что он подходит лишь для мелкого распараллеливания в пределах одной процедурки ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:23 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Хм. Т.е. балансировку надо переносить на уровень WCF ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:26 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Dualcoreон подходит лишь для мелкого распараллеливания в пределах одной процедурки ? Да, под локальную задачу для конкретного метода. И то нужно тысячу раз подумать и проверить, действительно ли нужно это и какой мы получим выйгрыш. Пример рачета: 1. Банальный пример, пул потоков может максимум выделить твоему веб-сервису 50 тредов. 2. В сервисе 10 методов, в каждом юзается по дополнительному фоновому потоку (async/await, TPL, Threads). 3. Методы равномерно используются внешними потребителями. То есть ты линейно размазываешь 50 тредов на (10 * 2) методов, получая 2.5 потока на метод. 4. Предположим, при пиковых нагрузках сервиса методы уже не будут справляться и будут запрашивать дополнительную песочницу (поток) для работы, а ей в свободном доступе нет, т.к. соседние методы юзают аж по 2 потока на задачу. 5. Профит? Да хрен там было. Пример, конечно, идеологический, но отражает суть проблемы. Поэтому использовать дополнительный поток нужно с умом и только там, где это действительно нужно. Пока не насилуй свой моск этими проблемами, когда встанет острая проблема оптимизации конкретного метода, тогда можно будет подумать что и куда. В любом случае, всегда есть самый очевидный и простой способ балансировки - инфраструктурный. Если уж и он не поможет, тогда нужно переписывать код. Но опять же, всё зависит от конкретной нагрузки на сервис и мощности сервера, без тестирования оценки давать - это как пальцем в торт. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:36 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Печально. Мечтал применить TPL как основу чего-то этакого мощного. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:40 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
DualcoreПечально. Мечтал применить TPL как основу чего-то этакого мощного. То есть хотел мигалку на авто, но ездить как все? Занятная стратегия, хочу фантик - а накуй оно нужно, не понятно. Но ведь фантик же. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:49 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
МСУ, ну а а что, в облако его, там у них пускай болит голова.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:51 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, ну а а что, в облако его, там у них пускай болит голова.. Бать, так и предполагается, что он в облаке :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 17:53 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
МСУ, дак запросить аппаратных возможностей на пиках ( я не спец в этих технологиях) по идее он добавит кислороду процессу, вопрос в деньгах ( тут то же не в курсе) но если там таскается база 35-160 терабайт, вопрос про деньги не уместный, единственное что плющит сознание это 30 сек, пока не решил кого мочить, или программиста или dba ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 18:09 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Где-то в степиединственное что плющит сознание это 30 сек, пока не решил кого мочить, или программиста или dba Согласен, это полная жесть. Разбор полетов и расстрел на месте с выдачей бегунка. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 18:35 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
МСУDualcoreон подходит лишь для мелкого распараллеливания в пределах одной процедурки ? Да, под локальную задачу для конкретного метода. И то нужно тысячу раз подумать и проверить, действительно ли нужно это и какой мы получим выйгрыш. Пример рачета: 1. Банальный пример, пул потоков может максимум выделить твоему веб-сервису 50 тредов. 2. В сервисе 10 методов, в каждом юзается по дополнительному фоновому потоку (async/await, TPL, Threads). 3. Методы равномерно используются внешними потребителями. То есть ты линейно размазываешь 50 тредов на (10 * 2) методов, получая 2.5 потока на метод. 4. Предположим, при пиковых нагрузках сервиса методы уже не будут справляться и будут запрашивать дополнительную песочницу (поток) для работы, а ей в свободном доступе нет, т.к. соседние методы юзают аж по 2 потока на задачу. 5. Профит? Да хрен там было. Пример, конечно, идеологический, но отражает суть проблемы. Поэтому использовать дополнительный поток нужно с умом и только там, где это действительно нужно. Пока не насилуй свой моск этими проблемами, когда встанет острая проблема оптимизации конкретного метода, тогда можно будет подумать что и куда. В любом случае, всегда есть самый очевидный и простой способ балансировки - инфраструктурный. Если уж и он не поможет, тогда нужно переписывать код. Но опять же, всё зависит от конкретной нагрузки на сервис и мощности сервера, без тестирования оценки давать - это как пальцем в торт. Парень задает правильный вопрос(могут быть внешние поставщики данных, которых не расстреляешь) и сразу видно, что ты с этим дело не имел. Расчеты левые, тк за 30 секунд может прийти еще надцать запросов и никаких трэдов и тасков не хватит. Посему сервисы должны иметь интерфейс с тасками, максимально использовать новый API с asyn\await, которые НЕ СОЗДАЮТ НИКАКИХ ФОНОВЫХ ПОТОКОВ. Для вызовов БД это можно сделать. ЗЫ Стандартный трэдпул имел 25 во времена гороха - Net 3.5. ЗЫЫ Должен использоваться PerCall, для которого создается новый, отдельный инстанс при вызове без твохи левых ограничений. Если не в танке, то не забивай парню голову всякой хренью ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 18:55 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
SeVaПосему сервисы должны иметь интерфейс с тасками, максимально использовать новый API с asyn\await, которые НЕ СОЗДАЮТ НИКАКИХ ФОНОВЫХ ПОТОКОВ. Для вызовов БД это можно сделать.Теоретически - да. Практически - жили же как-то раньше с синхронной работой воркеров сервера. Асинхронный код писать сложнее. Требует .Net 4.5 Я бы это оставил на крайний случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:01 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
SeVaДля вызовов БД это можно сделать.Релиз Entity Framework 6 с поддержкой асинхронностей ещё не вышел. Только бэта пока... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:03 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Алексей КSeVaДля вызовов БД это можно сделать.Релиз Entity Framework 6 с поддержкой асинхронностей ещё не вышел. Только бэта пока... Там, где высокие нагрузки ORM не используют, а в ADO.net это уже есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:21 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Алексей КSeVaПосему сервисы должны иметь интерфейс с тасками, максимально использовать новый API с asyn\await, которые НЕ СОЗДАЮТ НИКАКИХ ФОНОВЫХ ПОТОКОВ. Для вызовов БД это можно сделать.Теоретически - да. Практически - жили же как-то раньше с синхронной работой воркеров сервера. Асинхронный код писать сложнее. Требует .Net 4.5 Я бы это оставил на крайний случай. Хреново жили, только серверы плодили ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:22 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
SeVa, согласен, но это не панацея когда то ванна наполнится (затекает больше чем вытекает), даже те потоки где стоит машина мониторинга могут кончиться и тогда - отказ в обслуживании. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:30 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
Это же сахар, хотя вполне полезный ( отсутствие потоков мониторинга) - но не панацея от шквальной загрузки ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:32 |
|
TPL балансировка. Как ? Очень хочется узнать.
|
|||
---|---|---|---|
#18+
это по существу дос атака, ну что тут можно предпринять, найти узкое место, Алексей прально сказал, на потом. Узкое место как ни крути - это 30 секунд, тут или расширяться горизонтально на сервере + новые технологии, или часть барахла вынести на клиента - пускай сам запрашивает и кое что считает( не маленький) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:40 |
|
|
start [/forum/topic.php?fid=20&msg=38085435&tid=1405436]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 478ms |
0 / 0 |