Архитектура движущегося движка - интеграция Java / Perl - PullRequest
2 голосов
/ 22 декабря 2009

Я хочу разработать решение для управления и администрирования на основе наших perl-скриптов для веб-сканирования. По сути, сейчас наши скрипты сохраняются в SVN и вручную запускаются SysAdmin / devs и т. Д. Каждый раз, когда нам нужно получить данные из новых источников, нам нужно создать заявку с бизнес-инструкциями и целями. Как вы можете себе представить, не оптимальное решение.

В этой системе есть 3 согласованные темы:

  1. поиск данных имеет «концептуальную структуру» из-за отсутствия лучшей фразы, то есть поиск информации идет по определенному пути
  2. мы ищем только очень конкретную информацию, поэтому нам не нужно беспокоиться о длительном сканировании (подумайте, тысячи-десятки тысяч страниц против миллионов)
  3. Сканирования основаны на URL, а не на сайте.

Поскольку я улучшаю эту альфа-версию до бета-версии более производственного уровня, я хочу добавить автоматизацию и управление поиском данных. Кроме того, другие наши системы - это Java (в которой я более опытен), и я хотел бы разделить аспекты perl, чтобы нам не приходилось сильно полагаться на помощь извне.

Я оценил обычных подозреваемых Nutch , Droid и т. Д., Но время, потраченное на изменение этих структур в соответствии с нашей конкретной информацией, не может быть оправдано.

Так что я хотел бы, чтобы ваши мысли о следующей архитектуре.

Я хочу создать решение, которое

  • использовать Java в качестве интерфейса для управления и выполнения сценариев Perl
  • использовать Java для настройки и доступа к данным
  • флешка с perl для поиска

Пример использования:

  1. аналитик данных предоставляет нам требование для сканирования
  2. Perl Developer создает необходимый скрипт и использует это веб-приложение для отправки скрипта (который сохраняется в файловой системе)
  3. скрипт запускается из веб-приложения с определенными параметрами ....

Webapp должен иметь возможность создавать несколько потоков скрипта perl для запуска нескольких сканеров.

Так что вопросы

  1. что вы думаете
  2. насколько надежна интеграция между Java и Perl, в частности, из вызова perl из java
  3. кто-то использовал такую ​​систему, которая фактически является частью Perl-репозитория

На самом деле цель состоит в том, чтобы не иметь целую кучу неорганизованных сценариев Perl и не направлять управление и организацию на наш поиск информации. Кроме того, я знаю, что могу использовать perl, чтобы сделать веб-часть того, что мы хотим - но, как я уже говорил, - пытаться держать Perl сфокусированным. Но, похоже, это не так, я не против того, чтобы сделать это полностью перловым решением.

Открыт для любых предложений и мнений.

Спасибо

Ответы [ 3 ]

1 голос
/ 22 декабря 2009

У меня была своя большая доля создания сканеров с помощью Java с использованием Lucene, и на самом деле я уже отвечал на связанный с этим вопрос ранее о реальном процессе создания и структуре веб-сканера здесь . Это не относится непосредственно к вашему вопросу, но я думаю, что стоит упомянуть здесь.

В любом случае, я должен согласиться с Стивеном C , вам лучше использовать решение на чистой Java или на чистом Perl вместо сочетания обоих, однако мое мнение основано на том факте, что они полностью отличающиеся друг от друга, и объединение двух ( или более ) разных типов мышления обычно не самая оптимальная вещь, которую можно сделать.

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

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

Чтобы действительно высказать мнение, я думаю, вам следует минимизировать ту часть языка программирования, которую сложнее поддерживать. Я не знаю, какой это для вас, но я бы предположил, Perl. По сути, используйте один из языков и используйте его в полной мере, не используйте другой язык в качестве ярлыка.

1 голос
/ 22 декабря 2009

насколько надежна интеграция между Java и Perl, в частности, из вызова perl из java

IMO, лучший способ вызова Perl из Java - это запуск Java-программ на Perl в отдельных процессах. Вы можете попробовать вызвать Perl напрямую из Java, используя JNI / JNA, но это трудно сделать правильно. И если вы ошибетесь, вы будете иметь дело с разбитыми JVM.

Открыт для любых предложений и мнений.

IMO, вы получите более удобное решение, если вы используете чистый Perl или Java. Если это означает, что вы должны изучать Perl, пусть будет так. (Можно писать хорошо структурированные, поддерживаемые приложения на Perl. Вам просто нужно быть дисциплинированным об этом.)

0 голосов
/ 13 марта 2010

Вы можете попробовать веб-сканирование с помощью HtmlUnit или Selenium и выполнить планирование с помощью Quartz или поместить весь проект на сервер приложений, например Glassfish. Если вы хотите придерживаться Perl, вы можете использовать crontab. API-интерфейсы Perl, которые можно использовать для веб-сканирования, могут не иметь надлежащей обработки файлов cookie. Я надеюсь, что это не проблема для вас. Единственный взлом, который я знаю для этого, это вызов wget.

...