|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
|
Приложение, выполняющее обсчет моделей здания27.11.2011, 15:20. Показов 3574. Ответов 25
Метки нет (Все метки)
[bold]Доброго времени суток всем читающим![/bold]
Требуется совет общего характера. А именно: необходимо создать приложение, выполняющее обсчет моделей здания, структура модели не известна и определяется на этапе проектирования здания. Может быть оччень большой, однако дозволяется её (эту модель) разбить на модули, и обсчитывать на машинах в сети. Как лучше поступить в этом случае? Использовать RMI или ...? Я с этим абсолютно не сталкивался, так делал мелочевку в SDK, а тут приспичило. ![]() Самое мерзопакостное заключается в том, что может понадобится обсчитывать несколько моделей сразу, притом что основная работа (CAD) не должна прерываться. Да еще и задел на будущее нужен: это чтобы серверная часть производила мониторинг обновления файлов клиента, и при необходимости обновляла их серверные копии...
0
|
|
| 27.11.2011, 15:20 | |
|
Ответы с готовыми решениями:
25
GUI-приложение, выполняющее указанные функции Приложение выполняющее эту операцию указанному файлу не сопоставлено Приложение выполняющее эту операцию,указанному файлу не сопоставлено |
|
1 / 1 / 0
Регистрация: 12.06.2011
Сообщений: 68
|
|
| 27.11.2011, 21:35 | |
|
RMI - это у тебя будет синхронная модель, т.е. треды будут висеть и ждать ответов, если моделей и ответов много, то и третов будет много. Сделай на событиях - ты посылаешь событие (объект, на самом деле), они тебе потом обратно. Сделай на select''ах и channel''ах, будет ресурсы есть по минимуму, работать асонхронно и максимально быстро.
На очччень умный совет не тяну, но...
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
||
| 27.11.2011, 22:22 [ТС] | ||
0
|
||
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
| 27.11.2011, 22:41 | |
|
Насколько интенсивным планируется взаимодействие между модулями?
Не стоит отбрасывать идею RMI, если использовать RMI лишь для передачи обработанной информации, то я не вижу здесь места утверждению: "треды будут висеть и ждать ответов", хотя select/channel подход и является одним из наименее ресурсоемких (т.к. это прямое использование socket''ов), но проектирование протокола общения, обработку ошибок передачи и многое другое придется программировать самостоятельно. Стоит также обратить внимание на JMS, возможно это будет вам небезынтересно, так как эта технология позволяет отправлять сообщения даже если клиент/получатель в настоящее время не доступен по причине сбоев работы сети. С уважением, Владимир
0
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 27.11.2011, 22:45 | |
|
Вы очень общий вопрос задали.
Если вопрос про синхронное или асинхронное общение между клиентом и сервером, то в вашем случае наверное предпочтительнее асинхронное, потому что задание выполняется сервером долго. И в RMI и в сокетах можно организовать обе модели.
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
|
| 28.11.2011, 08:40 [ТС] | |
|
to mselez:
Требуется приложение выполняющее задачи распределенных вычислений. Я думаю нагрузка на сервер должна быть относительно небольшой поскольку основную работу предстоит выполнять клиентам, между ними распределяется основной объем вычислительной нагрузки по обсчету модели, то биш сервер сбрасывает клиенту задание и далее либо периодически опрашивает клиентов о готовности своей части, либо ожидает их отчета. Так что, я думаю режим работы системы все же будет асинхронным. to boombastik: Насчет интенсивности взаимодействия между модулями, пока сказать сложно, по идее горизонтальных связей между модулями быть не должно, все взаимодействие должно происходить через сервер, с другой стороны с любой клиентской машины необходима возможность инициировать обсчет, и контролировать его состояние. Ко всем неприятностям добавляется еще то, что может потребоваться производить обсчет и не одной модели одновременно, а в довесок и мониторинг состояния файлов на машинах клиентов (хотя эту часть, мне кажется, лучше вынести в отдельный модуль). JMS...надо подумать... Спасибо Всем!
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
||
| 28.11.2011, 08:45 [ТС] | ||
0
|
||
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
|
| 28.11.2011, 14:37 [ТС] | |
|
Прошу еще немного пояснений, я тут немного поковырялся с сокетами вроде работает как надо, во всяком случае тестовая "коротышка", порылся в документации, и все равно остался в некотрых сомнениях - с чем все-таки удобнее работать с каналами, сокетами или все-же задействовать RMI, тем более что по первым прикидкам объем работы приблизительно одинаковый.
Или эти два механизма равноценны применительно к локальной сети?
0
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 28.11.2011, 16:52 | |
|
Каналы, сокеты или RMI ?
Каналы - это, очевидно, имеются в виду усовершенствованные сокеты (java.nio). Быстродействие самое высокое у каналов, а удобство программирования - у RMI. RMI автоматически меняет протокол связи при необходимости. Например, если клиент за файерволом и не может открыть сокетное соединение, то RMI использует HTTP протокол. А всего у него штук 6 внутренних протоколов. RMI могут быть существенно медленнее, чем сокеты, по быстродействию. Традиционные сокеты позволяют передавать обьекты (ObjectOutputStream), а в каналах все вращается вокруг ByteBuffer и чтобы передать/прочитать обьект нужны определенные усилия.
0
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 28.11.2011, 17:00 | |
|
PS Удобнее работать с тем, что вы лучше знаете. Мне кажется сокеты - нормальный вариант.
0
|
|
|
1 / 1 / 0
Регистрация: 12.06.2011
Сообщений: 68
|
|
| 28.11.2011, 23:40 | |
|
Чем удобны каналы, так это тем, что при самом высоком быстродействии не надо заботится от скорости соединения и, соответственно, времени отклика. Каналы регистрируются в контроллере, и твой код по обработке будет вызван в тот момент, когда канал заработает.
По поводу протоколов я бы лично не стал заморачиваться: задача явно не для публичного использования, поэтому протоколы могут быть открыты, какие надо. По поводу бОльшего знания - тоже. Судя по всему к моменту окончания работ, команда будет знать выбранный технологический путь на уровне его разработчиков (просто придется знать), тогда какой смысл брать то, что знаешь, а потом с этим мучаться?
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
||
| 29.11.2011, 16:20 [ТС] | ||
|
[bold]Доброго времени суток всем![/bold]
Чей-то мне больше понравилось работать с сокетами, да и общественное мнение склоняется в их пользу. ![]() Задача действительно локальная, от 5 до 25 машин в связке одновременно, за файрвол их прятать не надо, инет стоит отдельно... Хотя надо-б еще доки почитать, может быть и каналы пойдут... ...тем более, что вот это -
Здесь вроде бы ясно! [bold]RMI Отпадает.[/bold] Остаются вопросы следующего плана: Имеет-ли смысл парится над организацией передачи объектов через каналы или использовать отдельные сокеты? Насколько более удобна/эффективна работа тех и других инструментов? Мне это пока еще не очевидно, а "ошибка в начале пути" ... ... да-а-а, это почти крах проекта! ![]() [bold]Спасибо всем![/bold]
0
|
||
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
||
| 29.11.2011, 17:26 | ||
Преимуществ у каналов два - прямое размещение буфера в памяти и неблокирующий режим чтениязаписи.
0
|
||
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|||||||||
| 29.11.2011, 18:42 | |||||||||
http://java.sun.com/developer/... eases/nio/ http://java.sun.com/j2se/1.4.2... index.html
С уважением, Владимир
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
||
| 29.11.2011, 19:07 | ||
0
|
||
|
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
|
|
| 30.11.2011, 01:37 | |
|
хе-хе, вопрос конечно интересный, приведенный выше код работает, но стресс-тесты не проводились, надо будет выяснить, что говорят парни из Sun и др. программисты на этот счет
0
|
|
|
1 / 1 / 0
Регистрация: 15.02.2010
Сообщений: 311
|
||
| 30.11.2011, 09:49 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 24
|
||
| 30.11.2011, 10:33 [ТС] | ||
|
[bold]Доброго времени суток Всем читающим![/bold]
[bold]to boombastik & mselez[/bold] из вот этого (Спасибо boombastik!):
Может быть имеет смысл подтверждать доставку каждого объекта используя неблокирующий режим, или задействовать иные механизмы управления? Да-а-а, заморочка!... %) [bold]to mag2005[/bold] Я в принципе так и планирую сделать... ![]() Только вот с XML пока в раздумьях, готовить здесь, парсить там, потом наоборот... ...надо подумать, хотя гибкость управления моделями здесь будет просто великолепная, я бы сказал на высшем уровне!
0
|
||
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 30.11.2011, 17:13 | |
|
По поводу преимуществ неблокирующего режима. На этом форуме уже где-то обсуждали. Вкратце, основное преимущество неблокирующего режима заключается в том, что одним потоком обслуживаются все клиенты, т.е. вроде не надо на каждого клиента заводить свой поток. Этот один поток в цикле просматривает селектор, в котором зарегистрированы клиентские каналы, и обслуживает операции вводавывода для тех каналов, которые в данный момент к этому готовы.
Если работа сервера только в этом и состоит, что прочитать запрос и отправить готовый ответ, то этот один поток легко справится, сомнений нет. Если же ответы на запросы надо генерировать и все запросы разные по тяжести, то их целесообразно обрабатывать в отдельных потоках - worker threads. Таким образом, мы одним потоком не обойдемся, хотя требуемое количество worker threads наверняка меньше, чем количество клиентов (не все запросы равны по тяжести обработки). Впрочем, высказывалось мнение, что экономия в количестве открытых потоков может и не стоит того, чтобы затевать весь этот сыр-бор, а просто открывать на каждого клиента свой поток, который читает запрос -> готовит ответ -> отправляет ответ. Что касается проблемы с чтением обьектов, то не уверен, что и блокирующий режим от этого защищен. Просто не знаю. Мы пока работаем с байтами, т.е. определяем начало сообщения, ждем когда конец придет и только после этого обрабатываем. Если в буфере обнаружено начало сообщения, но нет конца, то делаем compact() . Такой подход был вынужденный, потому что компонент, который слал сообщения, был на С, а байты - они и в Африке байты. А сейчас мы и между java компонентами так продолжаем "общаться".
0
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 30.11.2011, 17:21 | |
|
PS. Склоняюсь к мнению, что преимущества неблокирующего режима очевидны, если количество одновременно подключенных клиентов исчисляется сотнями , если не тысячами. Если их 10, то скорее всего разницы не почувствуете.
0
|
|
| 30.11.2011, 17:21 | |
|
Помогаю со студенческими работами здесь
20
Приложение, выполняющее эту операцию, указанному файлу не сопоставлено Разработайте приложение, выполняющее построение флагов: Гайана, Куба Создать приложение, выполняющее логические операции над множествами Написать приложение выполняющее запрос к БД и возвращающее ответ используя CORBA
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|