Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Кластер на базе сервлет контейнера


Автор: Girin 19.3.2008, 20:43
Хочу создать кластер на базе Tomcat , для поддержки распределенных вычислений по сети. Архитектура взаимодействия такая -  есть севрлет контейнер, который  парсит запросы от клиентов и передает их на обработку удаленным агентам для вычисления по сети. Вопрос какую технологию использовать для связи с удаленным агентами и передачи им определенной подзадачи , чтобы интерфейс взаимодействия был достаточно высокого уровня абстракции и сильно не зависел от специфики распределяемой задачи ?  Конкретный набор задач хранится в директориях томката, и может расширяться

Просто ранее занимался распараллеливанием задач на С++ с использованием MPI и Pthreads , но тогда все это выполнялось на одной машине. И в случае с MPI приходилось погружаться в специфику конкретной задачи и распределять с учетом начальных условий, т.е. желаемая переносимость приложения была трудно достижима

Автор: COVD 19.3.2008, 21:32
Цитата

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


что означает "передает их на обработку" ?
 - редиректит клиента на другой сервер ? 
 - сам пересылает запрос на другой сервер , ждет ответа и, получив/не получив ответ, возвращает его клиенту ?
 - сам пересылает запрос на другой сервер, и сообщает клиенту, чтобы задание принято/не принято на выполнение ?   

Автор: Girin 19.3.2008, 22:10
В моем случае томкат работает как диспетчер задач и посредник между клиентом и агентами . 
То есть выполняет и это
Цитата

 сам пересылает запрос на другой сервер , ждет ответа и, получив/не получив ответ, возвращает его клиенту 
и это 
Цитата

сам пересылает запрос на другой сервер, и сообщает клиенту, чтобы задание принято/не принято на выполнение 

Планирование, сихронизация, сбор результатов - все осуществляется узлом на котором запущен сервлет контейнер 

Автор: COVD 19.3.2008, 22:28
Первое - это синхронный способ - сервер может использовать RMI для общения с агентом, или решения на его основе.
Второе - асинхронный - общение сервера с агентами может реализовываться с использованием messaging систем.   

Наверное, в качестве универсального решения можно применить messaging для интеграции сервера и агентов. Если же применять application server, то в его составе, насколько я знаю, реализованы оба варианта коммуникации (синхронный\асинхронный). И Томкат будет частью аппсервера, а не отдельным приложением.  

Автор: Girin 19.3.2008, 22:49
Цитата

Первое - это синхронный способ - сервер может использовать RMI для общения с агентом, или решения на его основе.

Да RMI интересный вариант решения попробую его сначала...
Цитата

Наверное, в качестве универсального решения можно применить messaging для интеграции сервера и агентов. 

Имеется ввиду JMS и ее реализация в виде ActiveMQ ? 
Еще пока не ясно как абстрагировать распределяемую задачу , использовать сериализацию или определить на удаленных агентах набор тривиальных функций 
Цитата

Если же применять application server, то в его составе, насколько я знаю, реализованы оба варианта коммуникации (синхронный\асинхронный). И Томкат будет частью аппсервера, а не отдельным приложением.

Можно пояснить .. Вы говорите о серверах приложений навроде JBoss или WebSphere, которые включают контейнер сервлетов и будут предоставлять большую функциональность чем просто томкат ? 

Автор: COVD 20.3.2008, 00:04
Цитата

Имеется ввиду JMS и ее реализация в виде ActiveMQ ?


Да. А реализаций много.

Цитата

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


Как можно противопоставлять сериализацию и функции? Одно необходимо для передачи данных, другое - набор инструкций для операций над данными. Сервер может послать агенту только данные - команду и исходные условия, а агент должен иметь функции ( методы ) для формирования данных, которые будут посланы обратно серверу.

Цитата

Можно пояснить .. Вы говорите о серверах приложений навроде JBoss или WebSphere, которые включают контейнер сервлетов и будут предоставлять большую функциональность чем просто томкат ?


Да. И эта дополнительная функциональность включает в себя встроенный механизм взаимодействия с другими серверами (агентами), которые в данном случае, очевидно, тоже должны быть реализованы на аппсерверах.

Автор: Girin 20.3.2008, 00:35
Цитата

Как можно противопоставлять сериализацию и функции? Одно необходимо для передачи данных, другое - набор инструкций для операций над данными

Возможно ли реализовать набор решаемых агентом задач с помощью плагинов(JPF) ? 
Цитата

Да. И эта дополнительная функциональность включает в себя встроенный механизм взаимодействия с другими серверами (агентами), которые в данном случае, очевидно, тоже должны быть реализованы на аппсерверах

А если агента реализовать как сервис , на основе Java Service Wrapper и jmdns (для работы с сервисом обнаружения ) ,а для доступа к службе сообщений  использовать библиотеки ActiveMQ JMS Provider? Или ставить на каждого агента монстров типа JBoss ? 

Автор: mindflyer 20.3.2008, 12:29
JBoss сам по себе не такой уж и монстр. Зато при его использовании сразу получишь кучу встроенных вкусностей - помимо уже перечисленных механизмов взаимодействия, ещё кластеризацию, возможность хот-деплоймента (например, модули для новых типов задач) и многое другое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)