2011-01-18 3 views
1

Je veux créer une application web avec l'architecture suivante:Architecture: les questions technologiques

Architecture of my app

Il y a certaines fonctionnalités, whiсh est encapsulé dans le module "logique métier" (1). Il utilise MongoDB comme magasin de données (5) et externe (ligne de commande) (4).

La fonctionnalité de l'application est apportée aux utilisateurs finaux via deux canaux:

  1. L'application Web lui-même (2) et
  2. API publique (3), qui permet à des applications tierces et mobiles périphériques pour accéder à la fonctionnalité de logique métier. L'application web est écrite en Java et basée sur la plate-forme Vaadin.

Actuellement, il fonctionne sur le serveur web de Jetty.

Une exigence importante: L'application Web doit être évolutive, i. e. il doit être possible d'augmenter le nombre d'utilisateurs/de transactions qu'il peut desservir en ajoutant un nouveau matériel.

Je suit les questions concernant la mise en œuvre technique de cette architecture:

  1. Quelle technologie peut être utilisée pour mettre en œuvre la partie de la logique métier? Quelles sont les options sensées pour créer un serveur d'application SCALABLE?

  2. Quel serveur Web puis-je choisir pour la partie d'interface Web (2) pour la rendre évolutive? Quelles sont les options?

  3. Les calculs effectués dans le système externe (4) sont potentiellement gourmands en ressources processeur. Par conséquent, je veux les faire de manière asynchrone, je. e.

a) l'utilisateur envoie une demande à cet effet (par l'intermédiaire de l'interface web ou API publique, 2 et 3 dans l'image ci-dessus), que

b) demande est mise dans une file d'attente, puis

c) les calculs à forte intensité de processeur sont effectués et

d) à un moment donné, la réponse est envoyée à l'utilisateur. Quelles sont les options technologiques pour implémenter cette mise en file d'attente (en dehors de JMS)?

Merci à l'avance

Dmitri

+0

Voici ma première tentative pour répondre à cette question: http://dl.dropbox.com/u/11776689/pcc/2011_01_19_architecture.png –

Répondre

0

Comme personne n'a répondu à ma question, je vais le faire moi-même.

des autres ressources, j'ai appris que les technologies suivantes peuvent être utilisées pour la mise en œuvre de cette architecture:

1) Spring pour la logique d'entreprise (1)

2) GridGain ou Apache Hadoop pour étendre les interactions avec l'extérieur système (4)

3) Hazelcast pour rendre l'application Web évolutive (2 sessions côté serveur).

1

pour mettre à l'échelle les interactions, avez-vous regarder la grille Drools, Akka ou JPPF? pour rendre l'application Web évolutive, avez-vous des capacités de mise en grappes Terracotta ou Glassfish (Vaadin est un partenaire de verre si je me souviens bien)?