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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль одного процесса другим. Межпроцессовые сообщения 
:(
    Опции темы
sergejzr
Дата 18.12.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Приветы!
Необходимо симулировать несколько сот серверов (P2P) и коммуникацию между ними. Я сделаю это через потоки одним процессом, но есть один нюанс. Вся система должна дополнительно реагировать на отдельные процессы PHP, которые будет запускаться по мере надобности.

Какие можно применить инструменты и/или паттерны?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
powerOn
Дата 18.12.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(sergejzr @  18.12.2006,  11:31 Найти цитируемый пост)
Какие можно применить инструменты и/или паттерны? 

Можно (если есть техническая возможность) использовать очереди сообщений (Java Message Queues), но для этого нужен J2EE сервер. Там есть рассылка 1 ко многим. Все процессы могли бы слушать очередь, и отправлять туда сообщения, тем самым иметь взаимодействие...
Но это только предположение, поскольку как тут PHP привязать я не знаю..  smile 


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

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


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



На ПХП можно запускать процессы (Java ессно тоже)...



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 18.12.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(sergejzr @  18.12.2006,  12:00 Найти цитируемый пост)
На ПХП можно запускать процессы (Java ессно тоже)...

Слишком ресурсоемко, лучше сокеты.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 18.12.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Сорри, ехал в поезде, не мог отвечать... Сейчас опять онлайн smile

Надо кое-что уточнить..
Цитата(powerOn @  18.12.2006,  10:52 Найти цитируемый пост)
Можно (если есть техническая возможность) использовать очереди сообщений (Java Message Queues), но для этого нужен J2EE сервер.

Насчёт Message Queues - это очень неплохой вариант. 
1) Сервер какой нужен, томкат, или можно просто процесс запустить?
2) Скорее всего нужен будет свободный порт. Не ругайте плиз за вопрос, но этот порт будет доступен из сети? Мне по идее надо было бы всё иметь локально."Лишние" входы в систему не желательны
3) Я так понимаю, Message Queues основана на событиях? (как в юниксах?)

Цитата(LSD @  18.12.2006,  11:02 Найти цитируемый пост)
Слишком ресурсоемко, лучше сокеты. 

1) Сокеты - это тоже через порты, или можно всю межпроцессорную коммуникацию локально сделать?
2) Это кроссплатформенно?
3) Примерчик бы..
4) (Частично в другой раздел smile )Как с сокетами работать на ПХП и ява?


--------
В ПХП также можно исполнять явя-байт-код. Не знаю, насколько это будет менее ресурсоёмко, чем запуск процессов. Также не знаю (пока), нужны ли для этого какие нибудь доп. модули... Но это я в ПХП спрошу.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 18.12.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
1) Сокеты - это тоже через порты, или можно всю межпроцессорную коммуникацию локально сделать?

Порты.

Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
2) Это кроссплатформенно?

Java часть - да. За PHP не скажу.

Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
3) Примерчик бы..

Код
  public static void main(String[] args)
  {
    try
    {
      ServerSocket serverSocket = new ServerSocket(7894);
      ArrayList<ControllerThread> list = new ArrayList<ControllerThread>();
      while(<condition>)
      {
        Socket socket = serverSocket.accept();
        ControllerThread controllerThread = new ControllerThread(socket);
        list.add(controllerThread);
        controllerThread.start();
      }
      for(ControllerThread controllerThread : list)
        controllerThread.stopProcess();
    }
    catch(IOException e)
    {
      e.printStackTrace();
    }
  }

  private static class ControllerThread extends Thread
  {
    private Socket socket;
    private boolean running = true;

    public ControllerThread(Socket socket)
    {
      super("ControllerThread");
      this.socket = socket;
    }


    public void run()
    {
      try
      {
        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
        InputStream in = socket.getInputStream();
        int b;
        while(running)
        {
          while((b = in.read()) != 0)
            out.write(b);
          String command = out.toString("UTF-8");
          out.reset();
          //process command
        }
      }
      catch(IOException e)
      {
        e.printStackTrace();
      }
      try
      {
        socket.close();
      }
      catch(IOException e)
      {
        e.printStackTrace();
      }
    }

    public void stopProcess()
    {
      running = false;
    }
  }

Это приблизительный пример, и его надо еще доработать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
powerOn
Дата 18.12.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
Сервер какой нужен, томкат, или можно просто процесс запустить?

Нужен Sun Java System Message Queue - Java Message Service (JMS)
или любой другой J2EE сервер поддерживающий JMS, например JBoss или Sun Java System Application Server.

Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
Скорее всего нужен будет свободный порт. Не ругайте плиз за вопрос, но этот порт будет доступен из сети? Мне по идее надо было бы всё иметь локально."Лишние" входы в систему не желательны

Порт будет нужен. Я не знаю возможно ли настроить политику безопасности так, что бы к этому порту могли подсоединяться только localhost клиенты... на доку почитать... Еще вроде как существует способность очередей производить аутентификацию. Где-то слышал, что есть такая фишка...

Цитата(sergejzr @  18.12.2006,  15:15 Найти цитируемый пост)
Я так понимаю, Message Queues основана на событиях?

Вот здесь можно почитать про JMS. :-)


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

PM MAIL   Вверх
tux
Дата 18.12.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(powerOn @  18.12.2006,  16:06 Найти цитируемый пост)
Нужен Sun Java System Message Queue - Java Message Service (JMS)
или любой другой J2EE сервер поддерживающий JMS, например JBoss или Sun Java System Application Server.

Можно и без использования тяжелых серверов JMS использовать, есть независимые реализации. Вот, например, Tomcat+JMS.
PM MAIL Skype GTalk Jabber YIM   Вверх
sergejzr
Дата 18.12.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



LSD, спасибо! Основы понятны.

Цитата(powerOn @  18.12.2006,  15:06 Найти цитируемый пост)
Нужен Sun Java System Message Queue - Java Message Service (JMS)

Это за денежку... не пойдёт. Т.к. проект научный - т.е всё должно быть желательно open source..

Цитата(powerOn @  18.12.2006,  15:06 Найти цитируемый пост)
любой другой J2EE сервер поддерживающий JMS, например JBoss или Sun Java System Application Server.

Вообще, конечно хотелось бы без доп. серверов. т.к. система будет несколько месяцев работать на "чужом" серваке и кому-то придётся всё это сапортить smile

Цитата(powerOn @  18.12.2006,  15:06 Найти цитируемый пост)
Порт будет нужен. Я не знаю возможно ли настроить политику безопасности так, что бы к этому порту могли подсоединяться только localhost клиенты... на доку почитать... Еще вроде как существует способность очередей производить аутентификацию. Где-то слышал, что есть такая фишка...

Насколько я знаю, только через фаерволл...

Цитата(powerOn @  18.12.2006,  15:06 Найти цитируемый пост)
Вот здесь можно почитать про JMS. :-) 

Спасибо за хорошую доку! почитаю...

ПС:
Пока оба варианта подходят в принципе, хотя оба не идеальны... наверное буду делать чтото вроде гибрида.. Пока обьясню, в чём общая фишка:

1) Имеется идея хитрого поиска по десктопам в сети P2P. 
Ну система на бумаге кое-какая есть, но теперь её надо закодить, парочку экспериментов поставить и протестить как следует.
Вот эта система будет симулироваться отдельным явским процессом.

2) Параллельно имеется CMS, на ПХП, очень похожа на то, что мы реализовываем, но без поиска. Нам дадут пользоваться данными для эксперимента, если мы им встроим наш поиск.

3) Т.е поиск будет инициироваться через вызов ПХП странички и Ява-система отработав отдаст ей результаты поиска.


Схема:




Поэтому хотелось бы как можно меньше оверхеда...



Присоединённый файл ( Кол-во скачиваний: 70 )
Присоединённый файл  system.png 13,27 Kb


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 10.1.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Ух! Ребята, как же я вам благодарен smile Всё работает почти как швейцарские часы! На досуге выставлю примерчик коммуникации php-java приложений через сокеты.

Есть вопросы насчёт сокетов и Stream'ов, но это будет в другой теме smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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