Hi, ich habe eine Verständnisfrage bzgl. der Verwendung von Hibernate in einer Cluster-Umgebung (Tomcat).
Zum Hintergrund: Ich entwickle eine Lightweight-Container Webanwendung mit Spring, JSF und Hibernate im DataAccess-Layer. Diese Anwendung soll auf einem Apache Tomcat deployed und ausgeführt werden. Damit diese Anwendung später auch mit einer grossen Anzahl von gleichzeitigen Usern verwendet werden kann, möchte ich die Anwendung gerne auf einer Tomcat-Clustered-Umgebung ausführen. D.h. Ich verwende einen Loadbalancer (z.B. Apache httpd) und mehrere Tomcat-Instanzen im Cluster. Auf jeder einzelnen Cluster-Instanz wird meine Anwendung deployed. Das Session-Management für die Anwendung im Cluster verwalte ich über Tomcat (Session affinity/Sticky session).
Jetzt endlich zu meiner Frage: Ich habe noch Verständnisschwierigkeiten, ob ich Hibernate als ORM-Tool in diesem Szenario ohne Bedenken einsetzen kann. Da meine Anwendung inklusive Hibernate im Data Access Layer auf jeder einzelnen Tomcat-Instanz deployed wird, möchte ich gerne wissen, wie die Transaktionssicherheit beim Schreiben (gleichzeitige Schreibzugriffe von zwei Tomcat-Instanzen) in die Datenbank gewährleistet werden kann? Bei nur einer schreibenden Tomcat-Instanz kann ich mir noch gut vorstellen, dass Hibernate die Schreibzugriffe und Transaktionen managed. Wie funktioniert das alles aber in der oben beschriebenen Clustered-Umgebung? Hat dies etwas mit dem Hibernate-Second-Level-Cache zu tun? Kann über den Second-Level-Cache die Transaktionssicherheit und Probleme bei konkurenzierenden Schreibzugriffen gewährleistet werden? Es wäre nett, wenn mir hier jemand auf die Sprünge helfen könnte. Vielleicht habe ich ja auch etwas grundlegendes nicht verstanden!
Danke schonmal und LG
|