Архитектура веб-приложений и серверы приложений? - PullRequest
3 голосов
/ 11 июня 2010

Я создаю веб-приложение, и мне нужно использовать архитектуру, которая позволяет запускать его на двух серверах. Приложение периодически извлекает информацию с других сайтов и при вводе данных конечным пользователем. Для этого я использую Php + curl для очистки информации, Php или python для ее анализа и сохранения результатов в MySQLDB.

Затем я буду использовать Python для запуска некоторых алгоритмов для данных, это будет происходить как периодически, так и при вводе данных от конечного пользователя. Я собираюсь кэшировать некоторые результаты в БД MySQL, а иногда, если это специфично для пользователя, пропустить сохранение данных и передать их пользователю.

Я думаю о том, чтобы использовать Php для внешнего интерфейса веб-сайта на отдельном веб-сервере, запустив паук Php, MySQL DB и python на другом сервере.

Какую фреймворк (ы) я должен использовать для такой работы? Является ли MVC и Cakephp хорошим решением? Если так, я смогу контролировать и контролировать код Python, используя его?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 июня 2010

Как реализовать это?

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

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

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

с использованием чего-то более сложного, чем задание cron

Да, задание cron, вероятно, является неправильным путем по многим причинам.Если бы это был я, я бы посмотрел на создание демона, который бы планировал очистку (и принимал соединения из сценариев веб-страниц для постановки в очередь дополнительных сборок).Но я бы запускал процессы как отдельные процессы.

Является ли MVC хорошей архитектурой для этого?(Я новичок в MVC, архитектурах и т. Д.)

Нет.Не думайте, подходит ли шаблон приложению - шаблоны являются полезным инструментом для обучения, но опишите, какой код является , а не тем, чем он будет

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

C.

1 голос
/ 11 июня 2010

Я думаю, что у вас уже есть четкая идея о том, как организовать ваши слои.

Прежде всего вам потребуется веб-фреймворк для внешнего интерфейса.
У вас есть много вариантов здесь, Cakephp afaik - хороший выбор, и он предназначен для того, чтобы заставить вас следовать шаблону проектирования MVC .
Затем вам нужно будет создать свою базу данных для хранения того, что пользователи хотят видеть.
Ваша база данных будет доступна вашему веб-приложению для хранения запросов пользователей, вашему php-скрипту, чтобы узнать, что нужно очистить, и, наконец, вашей группе python, чтобы подтвердить пользователям, что запрашиваемые данные доступны.

Возможный упрощенный сценарий:

  1. Регистрация пользователя на вашем сайте
  2. Пользовательские команды для получения случайной страницы из Википедии
  3. Запросхранится в приложении CakePhp в db
  4. Запускается пакет Cron php и проверяется дБ на наличие новых запросов
  5. Пакетное обнаружение нового запроса и сводок из Википедии
  6. Пакетное обновление БД с помеченным флагом
  7. Пакет Cron Python запускается и проверяет БД на наличие нового флага соскоба
  8. Пакетно находит новый флаг соскоба и анализирует Википедию для извлечения некоторых тегов
  9. Пакетное обновление БД с флагом готово
  10. Пользователь находит запрашиваемую информацию в своем профиле.
...