![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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. Но хотел бы услышать другие мнения. И если не трудно обьясните пожалуйста логическую вещь:распределенное приложение в моем случае это одно приложение, но работающее на нескольких машинах как на одной или это дробление задачи на подзадачи и распределение этих задач, то есть назначение, маштнам. Буду искренне благодарен за любую помощь.Заранее спасибо всем откликнувшимся. ![]() Это сообщение отредактировал(а) zone51 - 27.4.2006, 21:07 -------------------- The truth is out there |
|||
|
||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
в твоем случае скорее так примерно представляю как реализовать с использовнаием RMI А ты алгоритм решения не хочешь описать? Может там и распределеять нечего? И какую задачу ты зочешь решать - генерацию новых начальныйх условий или решение существующих схем? Для начала проще забить известные задачи-результаты ![]() А J2EE тут зачем? |
|||
|
||||
zone51 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Точно со слов препода известно что задача хорошо распарралеливается. Над алгоритмом работаю.
Начальная схема в виде апплета будет задаваться пользователем, как тут: http://www.sudoku.name/sudoku-solver/ru
Немного не понял..что значит известные? каждый раз игрок может от балды ввести начальное расположение
Ну вообще-то RMI,Jini и иже с ними это и есть J2EE или я ошибаюсь? Спасибо. Это сообщение отредактировал(а) zone51 - 28.4.2006, 11:56 -------------------- The truth is out there |
||||||||
|
|||||||||
wadissimo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 28.4.2006 Репутация: 1 Всего: 1 |
тебе надо именно на j2ee написать?
удобнее всего будет сделать кластер. а jini , javaSpaces, jmx это не j2eе, но зато хорошие технологии для написания распределенных приложений, по-моему тебе следует обратить внимание на javaspaces. |
|||
|
||||
onsh76 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: 4 Всего: 5 |
wadissimo,
>>по-моему тебе следует обратить внимание на javaspaces. Я интересовался ранее и спрашивал форумчан про JINI и JavaSpaces. Имели ли Вы опыт работы с ними? Непонятен статус этой/их технологий: живы ли они вообще? Посоветуйте, плиз. |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
технологии то живы а вот распостранены слабо... мало с их использованием пишут (не заню почему, может потому что прорекламировали слабо
![]() |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
2ALL
Так какой вы все мене дадите совет? Ориентироваться на RMI? Спасибо. -------------------- The truth is out there |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
А RMI входит в J2SE, а не в J2EE так что вам низзя
![]() |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Да нет, это не жесткое условие, просто мой прошлый курсач был по ж2ее так я и хотел связать, главное чтоб Java2. Что скажете насчет RMI? Стоит ли? Это сообщение отредактировал(а) zone51 - 28.4.2006, 22:04 -------------------- The truth is out there |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
А ты вообще как себе это все представляешь?
Ты средство под задачу подстраивать будешь или задачу под средство??? Сначало было бы не плохо определиться что и как работать должно, а потом уж думать о реализации... |
|||
|
||||
onsh76 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: 4 Всего: 5 |
На мой взгляд все зависит от требований к приложению. Я был в аналогичной ситуации, где от нас требовалась horizontal scalability, т.е. масштабируемость количеством единиц умеющих производить некую бизнесс логику, a не мощностью какого-то сервака. Плюс ко всему исполнение бизнесс логики требовало separate JVM с хорошим количеством heap-а, т.к. 3-rd party component просто требовал этого. RMI-based решение было одним из неск-х опций... После рассмотрения "за/против" повариантно, мы решили рискнуть и поставили на Hessian-based веб сервис, где обьекты передаютса в сериализованном виде over http. Ориентировались на то, что по скорости это будет близко к RMI. Web services кластеризуются(load balancing/failover) легче/дешевле решений основанных скажем на той же самой CORBA или RMI. |
|||
|
||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
У веб-сервисов в контексте этой задачи есть большой недостаток - с сервера нельзя изменять реализации вычислителей на клиентах. RMI позволяет это делать: - создаем интерфейс вычислителя, наследуем его от Serializable, включаем его в клиентскую джарку - клиент регистрируется на сервере, при распределении вычислений клиентам даются нужные вычислители Чтобы самому сильно не заморачиваться c RMI - воспользуйся этим |
|||
|
||||
zone51 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Так, товарищи, спасибо вам за все ответы, но давайте подведем промеуточный результат.
Моя цель написать курсач без доказательства сверэффективности, оптимальности и т п. Задача состоит в том чтобы реализовать древнюю японскую игру "Судоку". Она состоит в следующем: Имеется поле 9х9 клеток, в этом поле 9 регионов 3х3, в правильном порядке, ну то есть разбито на блоки 3 на 3 клетки. В каждую клетку ставится цифра, имеется некоторое начальное расположение цифр. Задача заполнить все остальные клетки(не блоки) так, чтобы в каждой клетке была цифра, причем такой цифры больше не было бы в строке, содержащей эту клетку, столбце с этой клеткой и блоке, содержащем эту клетку. Цитата с сайта http://www.sudoku.name/rules/ru
MoonCat,
Обьясняю. По идее, если решать без распределенного принципа, это делается приблизительно так:
Реализация функции newN:
Предполагается что эта цифра все таки в каждой конкретной ситуации существует. Главные вопросы: 1) Как это грамотно распарралелить. То есть как разумно распределить эти функции на машины. 2)Получается что все вычисления идут последовательно, то есть просчет следующей клетки идет только после просчета предыдущей, ведь если выполнять на всех машинах одновременно просчет, то появятся одинаковые клетки, нужна синхронизация, как ускорить и уп ростить процесс вычислений? Ознакомился с RMI и решил что буду реализовывать на RMI, просто и сердито. Прошу помочь с разрешением этих 2-х вопросов, буду оччень признателен и благодарен. Огромное спасибо. Это сообщение отредактировал(а) zone51 - 1.5.2006, 19:48 -------------------- The truth is out there |
||||||||
|
|||||||||
sandello |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
На сколько я помню институтские разговоры про паралельные вычисления, метод реализации - это мелочь. Самое главное - суметь разделить вычисления на несколько слабосвязанных задач. Т.е. что бы обмен был сравнительно редок. В противном случае тормоза сетевого обмена сожрут все преимущества распределенных вычислений.
Применительно к текущей задаче. Возможные варианты распределения: У тебя есть какой-то головной цикл, и куча "дочерних" различной вложености. Цикл от 1 до 9. Делим задачу на два куска: запускаем параллельно два головных цикла 1. 1 <= i <= 5 2. 6 <= j <= 9 Подобным образом можно бить задачу на любом вложенном цикле. Это вариант "в лоб". Скорее всего, если подумать, можно найти другой алгоритм решения (если он, конечно, есть) и построить более эффективное разделение задачи на куски. -------------------- ![]() |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
sandello,
Так понимаете в чем дело, я вообще запутался и сомневаюсь можно ли эту задачу вообще распарралелить. Ведь дело то в чем: параллельно то вычисляцца ниче не может, так как цифры в клетках заполняются одна за одной..Ну ладно, параллельно я вычислил значения в двух клетках, а как обеспечить несовпадения этих цифр? ведь одна часть приложения не знает что делает вторая..как быть?А ели разбить цикл на 2 кусак, ну допустим один кусок посчитает первую часть матрицы, второй вторую, и где гарантии что в столбцах, строках и регионах все цифры будут разные? Вот в чем сопрос. Если можно, я обращаюсь ко всем, поделитесь соображениями кто может..очень надо.Заранее огромное спасибо. -------------------- The truth is out there |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |