2012-02-07 2 views
7

Мне было предложено перенести устаревшее приложение обработки данных на Java.Общая архитектура для долговременной обработки данных в Java?

Текущая версия системы состоит из нумератора (плохо написанных) листов Excel. Листы реализуют большой цикл: подсчитывается количество источников данных. Эти источники представляют собой смесь CSV и веб-сервисов на основе XML.

Процесс концептуально прост:

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

После публикации результатов цикл опроса начинается снова.

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

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

В настоящее время у пользователей есть пользовательский клиент, который проверяет файлы CSV, которые (надеюсь) не нуждаются в повторной записи. Если я смогу правильно выполнить эту работу, они не заметят, что движок, запускающий эту систему, был повторно реализован.

Я не разработчик java (я в основном делаю Python), но JVM - это требование в этом случае. Менеджер дал мне щедрое время, чтобы учиться.

Я хочу знать, как начать архивирование такого проекта. Я бы хотел использовать рамки & хорошие шаблоны. Есть ли какие-то большие строительные блоки, которые могут помочь мне быстрее запустить систему хорошего качества?

UPDATE0: Никто еще не упомянул весну. Есть ли в этой структуре роль в этом приложении?

+0

Я упомянул Spring как комментарий к ответу @Martin Spamer. – Rich

ответ

3

Вы можете использовать множество больших комплексных фреймворков, чтобы «помочь» вам это сделать. Изучение их может быть CV ++.

В вашем случае я предлагаю вам попробовать сделать систему максимально простой. Он будет работать лучше и будет легче обслуживать (его также более вероятно работать)

Так что я бы взял каждое из требований и спросить себя; Как я могу это сделать? Речь идет не о том, чтобы быть ленивым (вам нужно думать сложнее), но хорошая практика ИМХО.

1

1) Напишите код, обрабатывающий файлы, сохраните его простым по одному классу за задачу, вы можете найти полезные ссылки Apache CSV и Apache Commons. 2) Затем посмотрите на Java Thread Pools, чтобы создать отладчик процесса для этих классов в виде отдельных задач, если они ошибочно могут перезапустить их. 3) Лучший подход к запуску зависит от платформы, но я предполагаю, что ваше упоминание о Excel указывает на то, что это Windows PC.Простейшим решением было бы запустить run-run из меню Windows-> Startup. Немного лучше было бы использовать windows service wrapper. Или вы могли бы запустить это под чем-то вроде Apache ACD

+0

Для обработки CSV я бы рекомендовал Spring Batch. – Rich

0

Посмотрите инструмент Pentaho ETL или Talend OpenStudio.
Эти инструменты предоставляют доступ к файлам, базам данных и т. Д. Вы можете написать свой собственный плагин или адаптер, если вам это нужно. Talend создает Java-код, который вы можете компилировать и запускать.

1

В экосистеме Java есть инструмент, который решает все (почти) проблемы интеграции.

Это называется Apache Camel (http://camel.apache.org/). Он основан на концепции «Потребители и производители» и «Интеграционные схемы предприятия». Он обеспечивает возможности отказоустойчивости и одновременной обработки. Существует поддержка периодического опроса. Он содержит компоненты для XML, CSV и XMPP. Легко определить фоновые задания с учетом времени и интегрировать их с любой системой обмена сообщениями, которая вам нравится для очереди заданий.

Если вы будете писать такую ​​систему с нуля, потребуются недели и недели, и все же вы, вероятно, пропустите некоторые из условий ошибки.

Смежные вопросы