Struktur von Webanwendung hinsichtlich Clustering / load balancing

JanHH

Top Contributor
Hallo,

demnächst steht der Umbau einer ziemlich alten, rein Servlet-basierten Webanwendung an. Dabei sind die Themen "Clustering", "load balancing" und "Hochverfügbarkeit" auch relevant. Zwar nicht zwingend von Anfang an, aber die Unfähigkeit, das mit der bestehenden Struktur zu realisieren, ist einer der Hauptgründe für den Umbau.

Was muss man da beachten? Spontan denkt man natürlich an "EJB", und es wird wohl eh ein Seam-Projekt werden, und da ist die EJB3.0-Unterstützung ja einfach und fest integriert. Was muss ich da beachten? Reicht es aus, die Applikation schön sauber in stateless- und stateful-session-beans und entity-beans aufzuteilen (wobei da selbstverständlich ein wirklich klares, sauberes Design rauskommen wird), und dann geht das alles "einfach so", oder was muss man da sonst noch bei beachten?

Wie gesagt, es soll nicht von Anfang an gleich eine Server-Farm betrieben werden, ein einzelner Application Server dürfte für die meisten Fälle ausreichen, aber die Architektur sollte so sein, dass sowas zumindest problemlos möglich ist, wenns dann doch mal notwendig wird.

Als Server wird wohl JBoss eingesetzt und als Datenbank PostgreSQL, aber zwingend festgelegt ist das nicht.. aber bei einem Seam-Projekt ja eine naheliegende Konfiguration.

Gruß+Danke
Jan
 

XHelp

Top Contributor
Clustering im Sinne Clustering-verfahren, oder Computer-Cluster?
Cloudcomputing und Map&Reduce wäre eine überlegung Wert. Bei großen Datenmengen skaliert das sehr gut. Bei kleinen Datenmengen ist es allerdings ganz offizient.
[EDIT]Wobei wenn ich länger darüber nachdenke wäre es nicht sinnvoll dafür, da das ganze interaktiv zu gestalten nicht ohne weiteres geht.[/EDIT]
 
Zuletzt bearbeitet:

JanHH

Top Contributor
Na es geht einerseits um Ausfallsicherheit, aber vor allem um Skalierbarkeit. In einigen Situationen reicht ein einzelner Server (Tomcat) nicht aus. Die Anwendung sollte problemlos auf mehreren Servern laufen, um wirklich hohe Auslastungen bewältigen zu können.
 

mvitz

Top Contributor
Wie immer gilt für das Clustering, möglichst Stateless zu arbeiten. Also möglichst wenige Statefull und möglichst viele Stateless Beans einsetzen.
 

Ullenboom

Bekanntes Mitglied
Weiterhin: Keine Zustand in statischen Variablen speichern und alle Session-Objekte serialisierbar machen. Der Server kann zu jedem Zeitpunkt die Session auf einen Server verschieben. Zustand hält man in einem verteilten Cache oder in der Datenbank.

Grüße

Christian
 

JanHH

Top Contributor
Es gibt aber eine stateful session bean pro aktivem User. Aber das dürfte an sich auch kein Problem sein. Wenn sowas nicht ginge, wäre das ganze EJB-Konzept ja eher sinnlos.
 

mvitz

Top Contributor
Natürlich gehen auch Statefull Session Beans, aber da ist der Aufwand diese bei jeder Änderung in jeden Cluster zu ändern sehr hoch, deshalb sollte man halt hiervon möglichst wenige nutzen. Weiterhin muss man bei JSF, je nach eingesetzter Implementierung generell aufpassen, da hier wohl relativ viel in Sessions gespeichert wird (siehe z.B. Richfaces Session Speicherverbrauch – Analyse eines Memory-Leaks | blog.codecentric.de), da dann die Session auch jedes mal wieder im Cluster in allen Knoten upgedatet werden muss.
 

JanHH

Top Contributor
Bin mittlerweile soweit dass man auch ohne einen Riesenumbaue auskommt, sondern bei dem Servlet bleiben kann, wenn man sich von der Hochverfügbarkeit verabschiedet, und sich vorerst mit Skalierbarkeit begnügt (also load balancing). Immerhin etwas.. wird wohl erstmal darauf hinauslaufen. Der Aufwand, das ganze Ding in eine EJB-Anwendung umzubauen, ist wohl zur Zeit doch noch etwas zu gross.

Kann man eigentlich von einem Servlet aus auf EJBs zugreifen (also, vorausgesetzt, man hat ein "richtiges" EAR-Projekt vor sich)? Per JNDI oder so? Das wäre noch eine Variante.. vieles verleibt im Servlet aber die ganzen User mit ihren Sessions fliegen als EJBs rum.
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Wie das genau mit EAR aussieht, weiß ich nicht, aber man kann EJBs mit ins WAR packen und sich diese sogar durch DI holen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J grosse Textdatei in Webanwendung importieren Application Tier 7

Ähnliche Java Themen

Neue Themen


Oben