Russian Qt Forum
Ноябрь 22, 2024, 20:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Multithread server
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Multithread server (Прочитано 7685 раз)
laeda
Гость
Multithread server
«
:
Май 13, 2006, 07:19 »
Привет всем! Подскажите плиз. Надо написать сервер, который принимает запросы от клиентов и распределяет эти запросы по всем машинам, которые доступны в локальной сети, т.к. обьем вычислений очень большой. Нагрузка на эти машины распределяться тоже должна равномерно,т.е. они тоже должны быть многопотоковыми. Что лучше использовать Qsocket или QsocketDevice? Синхронный или асинхронный сервер? Что можно почитать на эту тему?
Записан
Sergeich
Гость
Multithread server
«
Ответ #1 :
Май 13, 2006, 15:07 »
Не кисло
Все зависит от задачи. Что за запросы и какого типа вычисления? Какая сетка ( винда, линух или смесь ) ? Какая версия Qt?
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Multithread server
«
Ответ #2 :
Май 14, 2006, 15:05 »
если нудно много считать а не передавать
то считают пакетами!
пакет обсчитал - передал!
Записан
Вудруф
Гость
Multithread server
«
Ответ #3 :
Май 15, 2006, 13:14 »
Всё зависит от требований к задержкам. Если их должно быть как можно меньше, то пакетный способ подходит плохо. Если определённые допущения могут быть, то тогда после обсчёта достаточно большого пакета машина должна передавать результаты и обращаться за новым. Поскольку формируется очередь запросов, то в асимптотике получаем распределение работ пропорциональное мощности машин.
Если найдёшь что почитать - поделись, пожалуйста. У меня сходная задача в дипломной работе. Взамен могу порекомендовать почитать информацию по GRID-системам, скажем, здесь:
http://www.research.ibm.com/journal/sj43-4.html
Записан
laeda
Гость
Multithread server
«
Ответ #4 :
Май 15, 2006, 14:46 »
задача ведь не на столько сложна. Пакеты очень маленькие, всего одна строчка и один int. Попробую описать задачу поподробнее. Клиент посылает этот маленький пакет диспетчеру. Диспетчер смотрит сколько потоков уже работает на каждой машине, и пересылает пакет на копм с мин количеством потоков. Та машина их обрабатывает(долго), и отсылает обратно диспетчеру. А диспетчер уже обратно клиенту. Qt у меня 3.3.3. Сеть может состоять как Windows, так и Unix машин.
Записан
Sergeich
Гость
Multithread server
«
Ответ #5 :
Май 15, 2006, 15:32 »
Гмм... интересный тип вычислений... похоже на подбор паролей... или что-то в этом духе...
Можно сделать так: Создаешь два приложения: сервер-диспетчер и клиент на машине в локалке.
В сервер-диспетчер впаиваешь два QServerSocket`а - один для общения с клиентами, другой для связи с машинами в локалке. На каждый коннект создаешь QSocket.
В локальном клиенте также юзаешь QSocket для соединения с сервером-диспетчером. Обработка пакета производится на клиенте в отдельной нитке(потоке), перед завершением нитки ( в конце run() ) посылаешь событие с результатами обработки какому-нибудь объекту( к-ый обрабатывает сообщения от сокета) , затем этот объект пишет результат в сокет.
При диспетчеризации необходимо учитывать кол-во процов на компе и их мощность, а не только число потоков.
Записан
laeda
Гость
Multithread server
«
Ответ #6 :
Май 15, 2006, 16:06 »
спасибо, Sergeich! буду пробовать
Записан
Nikolay_S
Гость
Multithread server
«
Ответ #7 :
Май 16, 2006, 19:28 »
Посмотри ссылки с
www.distributed.ru
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...