powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TPL балансировка. Как ? Очень хочется узнать.
25 сообщений из 149, страница 1 из 6
TPL балансировка. Как ? Очень хочется узнать.
    #38085274
Dualcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Заинтересовался TPL.

Как решается вопрос балансировки ?

Предположим, что есть некий сервер приложений. Он получает запросы от клиентов делает некие вычисления, запрашивает данные из БД, снова делает вычисления и возвращает результат клиенту.

Предположим такие исходные (взятые из головы... моей)
1. СервПрил получает запрос и обрабатывает его 5 сек (какие-то свои вычисления).
2. Затем посылает запрос в БД Oracle какому-то пакету, который выполняет очень мощные серверные вычисления в течении 10 сек.
3. Затем СервПрил получает данные, и опять делает вычисления 5 сек.
4. И снова запрос в БД на 10 сек.
5. После чего возвращается результат клиенту.

Итого на каждый запрос сервер тратит 30 сек.

Теперь самый цимес.
Клиенты бесконечно генерят по запросу, раз в 10 сек.
Если СервПрил не ограничить какими-то рамками, через какое-то время будет крутится стотыщмилионов запросов от клиентов, и запросы все еще будут прибывать.

Собственно сабж. Как это все балансировать ?
Как решить когда стоит прекратить получение запросов от клиентов ? Т.е. обрабатывать только некоторое их количество разом.


Оставлю пока вопрос о балансировке между самими СервПрилами, это мне тоже интересно, но пожалуй не все сразу.


PS. Если кто знает, дайте пожалуйста ссылки на каки-либо существующие проекты, использующие TPL. Какие либо опенсорсовые проекты или еще чего.
Хочется посмотреть на профессиональный проект TPL, использование и балансировку.

PPS. Может есть литература по балансировке ? По TPL то есть конечно учебного. А вот, чтобы на примере (или в приближении) реальных приложений, и решения практических задач, чего-то не знаю. Может что-то типа Фаулера, где берется пример задачи, и рефакторится или еще чего.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085366
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dualcore,

а что, ваш сервер приложений обрабатывает запросы последовательно?
Да и Оракл тоже такой фигней не страдает

Кстати, что это за "мощные серверные вычисления" и запросы по 10 секунд? Что за дикие расчеты?
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085374
Dualcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79Dualcore,

а что, ваш сервер приложений обрабатывает запросы последовательно?
Да и Оракл тоже такой фигней не страдает

Кстати, что это за "мощные серверные вычисления" и запросы по 10 секунд? Что за дикие расчеты?

Нет. Как раз я думаю, что на каждый запрос нужно создавать Task. И каждый такой Task будет работать 30 сек.

А что Вам в расчетах не нравится то ? Цифры я с потолка взял. Суть их в том, чтобы клиенты присылали задачи быстрее, чем они решаются - для чего и нужно было бы балансировать.

Я же в учебных целях спрашиваю.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085399
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dualcore,

если в учебных, то при указанных вами параметрах никаких балансировщиков не нужно.
если деньги позволяют, смотрим аппаратный балансировщик
если денег нет, а очень хочется, то есть вариант nginx
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085402
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Dualcore,

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

ЗЫ самому писать балансировщик смысла нет
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085417
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dualcore,
Можно подумать о кешировании результатов, или каких то со составляющих
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085435
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Dualcore,

а что, ваш сервер приложений обрабатывает запросы последовательно?
Да и Оракл запросы по 10 секунд? Что за дикие расчеты?
+1

Любой SOA асинхронен по своей природе. Поэтому даже заморачиваться не стоит на счет программной балансировки. А вот инфраструктурной балансировкой принебрегать не стоит (кластер и всё отседова вытекающее). С точки зрения кодинга никаких проблем. Ну а технология кеширования - это уже из области оптимизации кода, решается в самом конце.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085513
Dualcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы все хотите сказать, что TPL не предназначен для столпа проекта ? Что он подходит лишь для мелкого распараллеливания в пределах одной процедурки ?
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085519
Dualcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. Т.е. балансировку надо переносить на уровень WCF ?
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085546
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dualcoreон подходит лишь для мелкого распараллеливания в пределах одной процедурки ?
Да, под локальную задачу для конкретного метода. И то нужно тысячу раз подумать и проверить, действительно ли нужно это и какой мы получим выйгрыш.
Пример рачета:
1. Банальный пример, пул потоков может максимум выделить твоему веб-сервису 50 тредов.
2. В сервисе 10 методов, в каждом юзается по дополнительному фоновому потоку (async/await, TPL, Threads).
3. Методы равномерно используются внешними потребителями. То есть ты линейно размазываешь 50 тредов на (10 * 2) методов, получая 2.5 потока на метод.
4. Предположим, при пиковых нагрузках сервиса методы уже не будут справляться и будут запрашивать дополнительную песочницу (поток) для работы, а ей в свободном доступе нет, т.к. соседние методы юзают аж по 2 потока на задачу.
5. Профит? Да хрен там было.

Пример, конечно, идеологический, но отражает суть проблемы. Поэтому использовать дополнительный поток нужно с умом и только там, где это действительно нужно. Пока не насилуй свой моск этими проблемами, когда встанет острая проблема оптимизации конкретного метода, тогда можно будет подумать что и куда. В любом случае, всегда есть самый очевидный и простой способ балансировки - инфраструктурный. Если уж и он не поможет, тогда нужно переписывать код. Но опять же, всё зависит от конкретной нагрузки на сервис и мощности сервера, без тестирования оценки давать - это как пальцем в торт.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085553
Dualcore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Печально.
Мечтал применить TPL как основу чего-то этакого мощного.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085568
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DualcoreПечально.
Мечтал применить TPL как основу чего-то этакого мощного.
То есть хотел мигалку на авто, но ездить как все? Занятная стратегия, хочу фантик - а накуй оно нужно, не понятно. Но ведь фантик же.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085574
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ну а а что, в облако его, там у них пускай болит голова..
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085580
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
ну а а что, в облако его, там у них пускай болит голова..
Бать, так и предполагается, что он в облаке :)
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085616
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
дак запросить аппаратных возможностей на пиках ( я не спец в этих технологиях) по идее он добавит кислороду
процессу, вопрос в деньгах ( тут то же не в курсе) но если там таскается база 35-160 терабайт, вопрос про деньги не уместный,
единственное что плющит сознание это 30 сек, пока не решил кого мочить, или программиста или dba
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085663
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиединственное что плющит сознание это 30 сек, пока не решил кого мочить, или программиста или dba
Согласен, это полная жесть. Разбор полетов и расстрел на месте с выдачей бегунка.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085689
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ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, для которого создается новый, отдельный инстанс при вызове без твохи левых ограничений. Если не в танке, то не забивай парню голову всякой хренью
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085695
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПосему сервисы должны иметь интерфейс с тасками, максимально использовать новый API с asyn\await, которые НЕ СОЗДАЮТ НИКАКИХ ФОНОВЫХ ПОТОКОВ. Для вызовов БД это можно сделать.Теоретически - да. Практически - жили же как-то раньше с синхронной работой воркеров сервера. Асинхронный код писать сложнее. Требует .Net 4.5 Я бы это оставил на крайний случай.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085702
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaДля вызовов БД это можно сделать.Релиз Entity Framework 6 с поддержкой асинхронностей ещё не вышел. Только бэта пока...
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085735
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaДля вызовов БД это можно сделать.Релиз Entity Framework 6 с поддержкой асинхронностей ещё не вышел. Только бэта пока...

Там, где высокие нагрузки ORM не используют, а в ADO.net это уже есть.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085737
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaПосему сервисы должны иметь интерфейс с тасками, максимально использовать новый API с asyn\await, которые НЕ СОЗДАЮТ НИКАКИХ ФОНОВЫХ ПОТОКОВ. Для вызовов БД это можно сделать.Теоретически - да. Практически - жили же как-то раньше с синхронной работой воркеров сервера. Асинхронный код писать сложнее. Требует .Net 4.5 Я бы это оставил на крайний случай.

Хреново жили, только серверы плодили
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085751
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,
согласен, но это не панацея когда то ванна наполнится (затекает больше чем вытекает), даже те потоки где стоит машина мониторинга могут кончиться и тогда - отказ в обслуживании.
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085757
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же сахар, хотя вполне полезный ( отсутствие потоков мониторинга) - но не панацея от шквальной загрузки
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085769
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это по существу дос атака, ну что тут можно предпринять, найти узкое место, Алексей прально сказал, на потом.
Узкое место как ни крути - это 30 секунд, тут или расширяться горизонтально на сервере + новые технологии, или часть
барахла вынести на клиента - пускай сам запрашивает и кое что считает( не маленький)
...
Рейтинг: 0 / 0
TPL балансировка. Как ? Очень хочется узнать.
    #38085814
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чет сидел пил кофе, пришла мысль назвать этот топик - Высоко нагруженный эстонский сервер и его оптимизация
...
Рейтинг: 0 / 0
25 сообщений из 149, страница 1 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TPL балансировка. Как ? Очень хочется узнать.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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