Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение распределенной системы на J2EE, Проблема выбора технологии и распараллел 
:(
    Опции темы
zone51
  Дата 27.4.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



Всем доброго времени суток! В общем у меня стоит задача реализовать игру "судоку" на J2EE причем построить на основе этой технологии распределенное приложение, которое считало бы решение игры на нескольких машинах. Домашний сайт программы: sudoku.name
Описание игры здесь:
http://www.sudoku.name/rules/ru
Помогите пожалуйста разобраться в 2-вещах: выборе технологии распределения:
1)RMI
2)JINI
3)JavaSpaces
4)JMX
5)Jiro
6)CORBA
7)JXTA
Я более менее знаком с этими технологиями, мне кажется что лучше JINI или JavaSpaces. Но хотел бы услышать другие мнения. И если не трудно обьясните пожалуйста логическую вещь:распределенное приложение в моем случае это одно приложение, но работающее на нескольких машинах как на одной или это дробление задачи на подзадачи и распределение этих задач, то есть назначение, маштнам. Буду искренне благодарен за любую помощь.Заранее спасибо всем откликнувшимся. smile   

Это сообщение отредактировал(а) zone51 - 27.4.2006, 21:07


--------------------
The truth is out there
PM MAIL   Вверх
jimur
Дата 28.4.2006, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 1
Всего: 3



Цитата(zone51 @  27.4.2006,  21:06 Найти цитируемый пост)
это дробление задачи на подзадачи и распределение этих задач, то есть назначение, маштнам

в твоем случае скорее так
примерно представляю как реализовать с использовнаием RMI

А ты алгоритм решения не хочешь описать? Может там и распределеять нечего?

И какую задачу ты зочешь решать - генерацию новых начальныйх условий или решение существующих схем?

Для начала проще забить известные задачи-результаты smile

А J2EE тут зачем? 
PM MAIL   Вверх
zone51
Дата 28.4.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



Цитата

А ты алгоритм решения не хочешь описать? Может там и распределеять нечего?


Точно со слов препода известно что задача хорошо распарралеливается.
Над алгоритмом работаю.

Цитата

И какую задачу ты зочешь решать - генерацию новых начальныйх условий или решение существующих схем?


Начальная схема в виде апплета будет задаваться пользователем, как тут:
http://www.sudoku.name/sudoku-solver/ru

Цитата

Для начала проще забить известные задачи-результаты

Немного не понял..что значит известные? каждый раз игрок может от балды ввести начальное расположение

Цитата

А J2EE тут зачем? 

Ну вообще-то RMI,Jini и иже с ними это и есть J2EE или я ошибаюсь?

Спасибо.

  

Это сообщение отредактировал(а) zone51 - 28.4.2006, 11:56


--------------------
The truth is out there
PM MAIL   Вверх
wadissimo
Дата 28.4.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.4.2006

Репутация: 1
Всего: 1



тебе надо именно на j2ee написать? 
удобнее всего будет сделать кластер.
а jini , javaSpaces, jmx это не j2eе, но зато хорошие технологии для написания распределенных приложений, по-моему тебе следует обратить внимание на javaspaces. 
PM MAIL   Вверх
onsh76
Дата 28.4.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

Репутация: 4
Всего: 5



wadissimo
>>по-моему тебе следует обратить внимание на javaspaces.  
Я интересовался ранее и спрашивал форумчан про JINI и JavaSpaces. Имели ли Вы опыт работы с ними?
Непонятен статус этой/их технологий: живы ли они вообще? Посоветуйте, плиз. 
PM MAIL   Вверх
ALKS
Дата 28.4.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



технологии то живы а вот распостранены слабо... мало с их использованием пишут (не заню почему, может потому что прорекламировали слабо smile ) как следствие найти людей которые реально сталкиались практически не возможно 
PM   Вверх
zone51
Дата 28.4.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



2ALL
Так какой вы все мене дадите совет? Ориентироваться на RMI?
Спасибо. 


--------------------
The truth is out there
PM MAIL   Вверх
ALKS
Дата 28.4.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



А RMI входит в J2SE, а не в J2EE так что вам низзя smile 
PM   Вверх
zone51
Дата 28.4.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



Цитата

А RMI входит в J2SE, а не в J2EE так что вам низзя 

Да нет, это не жесткое условие, просто мой прошлый курсач был по ж2ее так я и хотел связать, главное чтоб Java2. Что скажете насчет RMI? Стоит ли?

 

Это сообщение отредактировал(а) zone51 - 28.4.2006, 22:04


--------------------
The truth is out there
PM MAIL   Вверх
powerOn
Дата 28.4.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



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


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
onsh76
Дата 29.4.2006, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

Репутация: 4
Всего: 5



Цитата(zone51 @ 28.4.2006,  19:13)
2ALL
Так какой вы все мене дадите совет? Ориентироваться на RMI?
Спасибо.

На мой взгляд все зависит от требований к приложению. 
Я был в аналогичной ситуации, где от нас требовалась horizontal scalability, т.е. масштабируемость количеством единиц умеющих производить некую бизнесс логику, a не мощностью какого-то сервака. Плюс ко всему исполнение бизнесс логики требовало separate JVM с хорошим количеством heap-а, т.к. 3-rd party component просто требовал этого.

RMI-based решение было одним из неск-х опций... 

После рассмотрения "за/против" повариантно, мы решили рискнуть и поставили на Hessian-based веб сервис, где обьекты передаютса в сериализованном виде over http. Ориентировались на то, что по скорости это будет близко к RMI. Web services кластеризуются(load balancing/failover) легче/дешевле решений основанных скажем на той же самой CORBA или RMI.   
PM MAIL   Вверх
jimur
Дата 29.4.2006, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 1
Всего: 3



Цитата(onsh76 @  29.4.2006,  00:26 Найти цитируемый пост)
После рассмотрения "за/против" повариантно, мы решили рискнуть и поставили на Hessian-based веб сервис, где обьекты передаютса в сериализованном виде over http. Ориентировались на то, что по скорости это будет близко к RMI. Web services кластеризуются(load balancing/failover) легче/дешевле решений основанных скажем на той же самой CORBA или RMI.   

У веб-сервисов в контексте этой задачи есть большой недостаток - с сервера нельзя изменять реализации вычислителей на клиентах.
RMI позволяет это делать:
- создаем интерфейс вычислителя, наследуем его от Serializable, включаем его в клиентскую джарку
- клиент регистрируется на сервере, при распределении вычислений клиентам даются нужные вычислители
Чтобы самому сильно не заморачиваться c RMI - воспользуйся этим
 
PM MAIL   Вверх
zone51
Дата 1.5.2006, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



Так, товарищи, спасибо вам за все ответы, но давайте подведем промеуточный результат.
Моя цель написать курсач без доказательства сверэффективности, оптимальности и т п.
Задача состоит в том чтобы реализовать древнюю японскую игру "Судоку". Она состоит в следующем:
Имеется поле 9х9 клеток, в этом поле 9 регионов 3х3, в правильном порядке, ну то есть разбито на блоки 3 на 3 клетки. В каждую клетку ставится цифра, имеется некоторое начальное расположение цифр. Задача заполнить все остальные клетки(не блоки) так, чтобы в каждой клетке была цифра, причем такой цифры больше не было бы в строке, содержащей эту клетку, столбце с этой клеткой и блоке, содержащем эту клетку.

Цитата с сайта http://www.sudoku.name/rules/ru

Цитата


Законы игры судоку 
В судоку играют на квадратном поле 9 на 9 клеток. Само поле поделено на районы (квадраты 3 на 3)
user posted image
В начале игры известны некоторое число цифр в определенных клетках
user posted image
Цель судоку заполнить все пустые клетки с помощью цифр 1-9 (по одной цифре на клетку), по следующим правилам: 

1. Цифра может появиться только один раз в каждой строчке

Можно user posted image
Нельзя user posted image

2. Цифра может появиться только один раз в каждом столбике

Можно user posted image
Нельзя user posted image

3. Цифра может появиться только один раз в каждом районе

Можно user posted image
Нельзя user posted image

Проще говоря, одна и та же цифра может появиться только один раз в каждой строчке, столбике и районе

MoonCat
Цитата

А ты вообще как себе это все представляешь? 


Обьясняю. По идее, если решать без распределенного принципа, это делается приблизительно так:

Цитата

class sudoku{
 private int pole[8][8];
 public int newN(int i,int j);//Вычисление нового элемента поля с индексом i,j
 public boolean isStr(int i,int num);//Проверка есть ли в строке
 public boolean isCol(int j,int num);//Проверка есть ли в столбце
 public boolean isReg(int i,int j,int num);//Проверка есть ли в регионе


Реализация функции newN:
Цитата

int newN(int i,int j){
 //Перебор цифр 
 for(int k=0;k<=9;k++)if(isStr(i,k) && isCol(j,k) && isReg(i,j,k))return k; 
 }  

Предполагается что эта цифра все таки в каждой конкретной ситуации существует.

Главные вопросы:
1) Как это грамотно распарралелить. То есть как разумно распределить эти функции на машины.
2)Получается что все вычисления идут последовательно, то есть просчет
следующей клетки идет только после просчета предыдущей, ведь если выполнять на всех машинах
одновременно просчет, то появятся одинаковые клетки, нужна синхронизация, как ускорить и уп
ростить процесс вычислений? Ознакомился с RMI и решил что буду реализовывать на RMI, просто и
сердито. Прошу помочь с разрешением этих 2-х вопросов, буду оччень признателен и благодарен.
Огромное спасибо. 

Это сообщение отредактировал(а) zone51 - 1.5.2006, 19:48


--------------------
The truth is out there
PM MAIL   Вверх
sandello
Дата 3.5.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 18.5.2005
Где: Пермь

Репутация: нет
Всего: 2



На сколько я помню институтские разговоры про паралельные вычисления, метод реализации - это мелочь. Самое главное - суметь разделить вычисления на несколько слабосвязанных задач. Т.е. что бы обмен был сравнительно редок. В противном случае тормоза сетевого обмена сожрут все преимущества распределенных вычислений.

Применительно к текущей задаче. Возможные варианты распределения: У тебя есть какой-то головной цикл, и куча "дочерних" различной вложености. Цикл от 1 до 9. Делим задачу на два куска: запускаем параллельно два головных цикла
1. 1 <= i <= 5 
2. 6 <= j <= 9

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


--------------------
user posted image
PM MAIL Jabber   Вверх
zone51
Дата 3.5.2006, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 17.2.2006

Репутация: нет
Всего: 1



sandello
Цитата

Делим задачу на два куска: запускаем параллельно два головных цикла
1. 1 <= i <= 5 
2. 6 <= j <= 9

Так понимаете в чем дело, я вообще запутался и сомневаюсь можно ли эту задачу вообще распарралелить. Ведь дело то в чем: параллельно то вычисляцца ниче не может, так как цифры в клетках заполняются одна за одной..Ну ладно, параллельно я вычислил значения в двух клетках, а как обеспечить несовпадения этих цифр? ведь одна часть приложения не знает что делает вторая..как быть?А ели разбить цикл на 2 кусак, ну допустим один кусок посчитает первую часть матрицы, второй вторую, и где гарантии что в столбцах, строках и регионах все цифры будут разные? Вот в чем сопрос. Если можно, я обращаюсь ко всем, поделитесь соображениями кто может..очень надо.Заранее огромное спасибо. 


--------------------
The truth is out there
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0930 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.