Архитектура: технологические вопросы - PullRequest
1 голос
/ 18 января 2011

Я хочу создать веб-приложение со следующей архитектурой:

Architecture of my app

Существует некоторая функциональность, которая инкапсулирована в модуле «Бизнес-логика» (1).Он использует MongoDB в качестве хранилища данных (5) и внешнего приложения (из командной строки) (4).

Функциональность приложения предоставляется конечным пользователям по двум каналам:

  1. Само веб-приложение (2) и
  2. открытый API (3), который позволяет сторонним приложениям и мобильным устройствам получать доступ к функциям бизнес-логики.

Веб-приложениенаписан на Java и основан на платформе Vaadin.В настоящее время он работает на веб-сервере Jetty.

Одно важное требование: веб-приложение должно быть масштабируемым, т. Е. Должно быть возможным увеличение количества пользователей / транзакций, которые оно может обслуживать, путем добавления нового оборудования.

У меня есть следующие вопросы относительно технической реализации этой архитектуры:

  1. Какую технологию можно использовать для реализации части бизнес-логики?Каковы разумные варианты создания сервера приложений SCALABLE?

  2. Какой веб-сервер я могу выбрать для части веб-интерфейса (2), чтобы сделать его масштабируемым?Какие есть варианты?

  3. Расчеты, выполняемые во внешней системе (4), потенциально нагружают процессор.Поэтому я хочу сделать их асинхронным способом, то есть

a) пользователь отправляет запрос на эту операцию (через веб-интерфейс или общедоступный API, 2 и 3 на изображении выше), что

b) запрос помещается в очередь, затем

c) выполняются интенсивные вычисления и

d) в какой-то момент времени ответотправлено пользователю.

Какие существуют технологические возможности для реализации этой очереди (кроме JMS)?

Заранее спасибо

Дмитрий

Ответы [ 2 ]

1 голос
/ 15 августа 2011

для масштабирования взаимодействий, вы смотрите на сетку Drools, Akka или JPPF?чтобы сделать масштабируемое веб-приложение, вы рассматривали возможности кластеризации Terracotta или Glassfish (Vaadin - партнер Glassfish, если я хорошо помню)?

0 голосов
/ 21 января 2011

Поскольку никто не ответил на мой вопрос, я сделаю это сам.

Из других ресурсов я узнал, что для реализации этой архитектуры могут использоваться следующие технологии:

1) Spring for Business logic(1)

2) GridGain или Apache Hadoop для масштабирования взаимодействий с внешней системой (4)

3) Hazelcast для обеспечения масштабируемости веб-приложения (2 сеанса на стороне сервера).

...