SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
Javaaktuell
Javaaktuell
03-2013 | Herbst | www. ijug.eu
Praxis. Wissen. Networking. Das Magazin für Entwickler
Java trägt Früchte
Neue Technologie
Java-API für Batch-Anwendungen, Seite 8
Entwicklungsstrategien
Software modular aufbauen, Seite 19
Mehr selbst entwickeln, Seite 23
Web-Entwicklung
Das Web als Social Network, Seite 32
Neu: Wicket 6, Seite 40
Java und Oracle
ADF Essential Mobile, Seite 52
D:4,90EUR A:5,60EUR CH:9,80CHF Benelux:5,80EUR ISSN2191-6977
iii
iiiiii
iii
iJUG
Verbund Sonderdruck
4  |
Inhalt
3	Editorial
5	 Das Java-Tagebuch
Andreas Badelt,
Leiter der DOAG SIG Java
8	 Java-API für Batch-Anwendungen
Peter Doschkinow
11	 Skalierbare Cluster-Topologien mit
dem JBoss AS 7
Heinz Wilming und Immanuel Sims
15	 Lightweight AOP mit CDI und JPA
Prof. Dr. Michael Helbig
19	 Software modular bauen
Ulf Fildebrandt
23	 Software – weniger kaufen,
mehr bauen
Erik Dörnenburg
27	 Diagramm-Bibliotheken für Android
Falko Krische
32	 WebID: Das Web als Social Network
Angelo Veltens
37	 Vermittlungsinstanzen sind gefragt
Tobias Hartwig
40	 Anspruchsvolle Web-Anwendungen
mit Wicket 6
Jochen Mader
44	 „Java ist Grundlage für meine
Software-Projekte …“
Interview mit Dirk Dittert
45	 Nachgefragt …
Uwe Sauerbrei
49	 Den Rollladen steuern mit Pi
René Jahn
52	 ADF Essentials Mobile – Ein unlös­
bares Problem?
Markus Klenke
55	 Performance-Falle beim Logging:
Die Zeitstempel-Formatierung
Jürgen Lampe
61	 Unbekannte Kostbarkeiten des SDK
Heute: Web-Services
Bernd Müller
63	 Integration von Java via JNI in traditi-
onelle Cobol-Batch-Anwendungen
Marc Bauer und Martin Kiefer
43	 Unsere Inserenten
66	Impressum
Ein Lastverteiler sorgt dafür, dass Lastverteilung und Failover nur innerhalb eines Subclusters
stattfinden. Skalierbare Cluster-Topologien mit dem JBoss AS 7, Seite 11
Wer auf keine Funktion verzichten möchte und schon immer von einer eigenen Rollladensteuerung
träumte, findet hier eine Anleitung für den Raspberry Pi, Seite 49
Java aktuell 3-2013 |  11
www.ijug.eu
iii
iiiiii
iii
Skalierbare Cluster-Topologien mit dem JBoss AS 7
Heinz Wilming und Immanuel Sims, akquinet AG
Hohe Verfügbarkeit und hohe Skalierbarkeit sind für viele Anwendungen im Unternehmensumfeld eine
unabdingbare Anforderung. Der Einsatz von Clustertechnologien verspricht hier Lösungen, gestaltet sich
in der Praxis aber herausfordernder als angenommen. Neben der technischen Komplexität ist auch das
Spannungsfeld zwischen Skalierbarkeit und Hochverfügbarkeit aufzulösen.
In der letzten Ausgabe der Java aktuell wur-
den die grundlegenden Clustering-Kon-
zepte des JBoss Application Server in der
Version 7 dargestellt. Dieser Artikel stellt
unterschiedliche Cluster-Topologien vor,
die auch den Anforderungen an die Skalier-
barkeit und die Verfügbarkeit genügen und
dabei die Restriktionen der Netzwerk-Infra-
struktur und die Besonderheiten größerer
Cluster-Umgebungen berücksichtigen.
Einführung
Eine hohe Verfügbarkeit eines Clusters be-
zeichnet die Fähigkeit einer Cluster-Topo-
logie, bei einem Ausfall einzelner Knoten
die Aufgaben nahtlos an andere Knoten
der Cluster-Topologie zu übertragen.
Hierzu ist es erforderlich, dass sowohl Sys-
temkomponenten als auch transiente Sit-
zungsdaten redundant vorgehalten wer-
den. Die Verfügbarkeit wird dabei durch
Hinzufügen weiterer Knoten erhöht. Dies
geht jedoch zulasten der Skalierbarkeit, da
die Replikation von Daten mit anderen Kno-
ten der Topologie den Kommunikations-
aufwand und Ressourcenbedarf erhöht.
Bei einem Cluster mit beispielsweise vier
Knoten und jeweils einem Gigabyte Spei-
cher stehen bei einer Replikation auf allen
Knoten nicht insgesamt vier, sondern nur
ein Gigabyte Speicher für transiente Daten
zur Verfügung, da jedes Datum vierfach
vorgehalten wird.
Durch das Hinzufügen weiterer Knoten
wird der verfügbare Speicher also nicht
erhöht, da alle anderen Knoten die Daten
des neuen Knotens vorhalten und der
neue Knoten die Daten der bereits vorhan-
denen. Darüber hinaus ist auch ein erhöh-
ter Aufwand für die Verteilung der Daten
zu berücksichtigen. Allerdings wird eine
höhere Verfügbarkeit durch die Erhöhung
der Redundanz erreicht.
Die Schwierigkeit bei der Konzeption
eines Clusters ist, sowohl eine hohe Verfüg-
barkeit als auch eine ausreichende Skalier-
barkeit zu erreichen. Die Skalierbarkeit ei-
nes Clusters bezeichnet dabei die Fähigkeit
der Bewältigung wachsender Last durch
Hinzufügen zusätzlicher Ressourcen. Eine
gute Skalierung ist beispielsweise beim Be-
trieb mehrerer voneinander unabhängiger
Server gegeben, die keinerlei Kenntnis da-
von haben, dass sie gemeinsam in einem
Cluster arbeiten. Ein Lastverteiler sorgt
dafür, dass jeder Knoten gleichmäßig mit
Anfragen versorgt wird. Dieses Konzept
skaliert sehr gut, aber wenn ein Knoten
ausfällt, gehen die transienten Sitzungs-
daten verloren – Pech für den Nutzer, der
gerade seinen virtuellen Einkaufswagen
randvoll geladen hat.
Eine vollständige Replikation und der
Betrieb unabhängiger Server sind zwei
extreme Konzepte. Es gibt auch Topologi-
en, die sowohl eine gute Skalierbarkeit als
auch eine gute Verfügbarkeit aufweisen.
Replikation und Distribution
Im JBoss AS 7 dient der verteilte Cache
Infinispan [1] der Replikation transienter
Sitzungsdaten. Beispielsweise werden die
Sitzungsdaten einer HTTP-Session oder
die Daten einer zustandsbehafteten EJB-
Komponente in sogenannten„Cache-Con-
tainern“ in unterschiedlichen Regionen
verwaltet. Bei einem Ausfall kann somit
der Klient transparent auf einen anderen
Server ausweichen und mit den redundant
vorgehaltenen Sitzungsdaten weiterarbei-
ten. Ein Infinispan-Cache-Container kann
dabei in verschiedenen Modi betrieben
werden. Für Hochverfügbarkeit sind die
zwei Varianten„Replikation“ und„Distribu-
tion“ interessant. Replikation wird in den
Standard-HA-Konfigurationen des JBoss
AS 7 verwendet und entspricht dem, was
wir als vollständige Replikation bezeichnet
haben (siehe Abbildung 1). Im Distribu-
tions-Modus kann im Gegensatz zur Repli-
kation festgelegt werden, wie häufig ein
Datum redundant vorgehalten wird (siehe
Abbildung 2).
Bei dieser Art der Verteilung wird eine
bessere Skalierung erreicht, da die Anzahl
der Redundanz unabhängig von der An-
zahl der Konten in einem Cluster ist. Da-
durch wird es möglich, den Cluster durch
das dynamische Hinzufügen beziehungs-
weise Entfernen von Knoten in den Dimen-
sionen„Speicher“ und„Rechenleistung“ zu
skalieren. Falls ein Knoten ausfällt, reorga-
nisiert sich der Cache, sodass die vorge-
schriebene Anzahl von Redundanzen wie-
der erreicht wird.
Ein Nachteil ist jedoch, dass bei Dis-
tribution ein Datum nicht unbedingt auf
dem Knoten vorgehalten wird, auf dem
es angefragt wurde. Der jeweilige Knoten
wird mithilfe einer konsistenten Hash-Funk-
tion [2] ermittelt. Es entsteht eine höhere
Netzwerk-Kommunikation. Um diese zu
verringern, kann bei Distribution ein First-
Level-Cache vor dem eigentlichen Cache
eingerichtet sein. Hierbei ist jedoch der
zusätzliche Koordinationsaufwand für die
Invalidierung von nicht mehr gültigen Da-
ten zu berücksichtigen. Ein solcher Cache
kann sich somit auch negativ auf die Ska-
lierbarkeit auswirken.
Synchrone und asynchroneVerteilung
Sowohl im Replikations- als auch im Dis-
tributions-Modus können die Daten syn-
chron oder asynchron verteilt sein. Bei ei-
ner synchronen Verteilung wird der Aufruf
bis zur vollständigen Verteilung blockiert.
Im Fehlerfall erfolgt ein Rollback der Trans-
aktion. Bei einer asynchronen Verteilung
12  |
JBoss
<subsystem xmlns=“urn:jboss:domain:infinispan:1.3“>
...
<cache-container name=“web“ default-cache=“dist“ ...>
<replicated-cache name=“repl“ ...>
...
</replicated-cache>
<distributed-cache name=“dist“ ...>
...
</distributed-cache>
...
</cache-container>
<cache-container name=“ejb“ default-cache=“dist“ ...>
<replicated-cache name=“repl“ ...>
...
</replicated-cache>
<distributed-cache name=“dist“ ...>
...
</distributed-cache>
...
</cache-container>
<cache-container name=“hibernate“ ...>
...
</cache-container>
...
</subsystem>
werden hingegen die jeweiligen Knoten
benachrichtigt und der Aufruf nicht blo-
ckiert. Kommt es zu einem Fehler während
der Verteilung, erfolgt kein Rollback der
Transaktion. Fehler werden lediglich proto-
kolliert. Diese Verteilungsart erfordert auf-
grund der Asynchronität zudem eine As-
soziation der jeweiligen Session mit dem
aktuellen Knoten, da Änderungen gegebe-
nenfalls noch in einer internen Queue auf
ihre Verarbeitung warten und somit noch
nicht auf anderen Knoten verfügbar sind.
Cache-Konfiguration
Der JBoss AS 7 ist bereits für den Betrieb
eines Clusters vorkonfiguriert und bietet
entsprechende Konfigurationsprofile an.
Die Profile „HA“ und „Full-HA“ enthalten
im Infinispan-Subsystem unter anderem
die Cache-Container „web“, „ejb“ und
„hibernate“ (siehe Listing 1). Der letztge-
nannte agiert als Second-Level-Cache für
Hibernate. Hierfür wird der spezielle Mo-
dus„Invalidierung“ [2] genutzt.
Der Container „web“ speichert die
HTTP-Sitzungsdaten. Im Container „ejb“
werden die transienten Daten von zu-
standsbehafteten EJB-Komponenten ab-
gelegt. Für „web“ und „ejb“ ist sowohl
eine Variante für Replikation („repl“) als
auch eine Variante für Distribution („dist“)
vorkonfiguriert. Um anstelle des Repli-
kations-Modus den Distributions-Modus
zu verwenden, kann das „default cache“-
Attribut des jeweiligen Cache-Containers
den vorkonfigurierten Distribution Cache
referenzieren.
Effiziente Kommunikation mit JGroups
Infinispan nutzt für die Cluster-Kommu-
nikation JGroups [4]. Es ist ebenfalls als
eigenständiges Subsystem im JBoss AS 7
eingebunden und unterstützt sowohl
Punkt-zu-Punkt-Kommunikation (Unicast)
als auch Gruppen-Kommunikation (Mul-
Listing 1
Abbildung 1: Infinispan-Replikation Abbildung 2: Infinispan-Distribution
ticast). Dabei abstrahiert JGroups von der
jeweiligen Netzwerk-Topologie auf Basis
eines Transportprotokolls und eines kon-
figurierbaren Protokollstapels. JBoss AS 7
verwendet standardmäßig UDP als Trans-
portprotokoll. Neben UDP können auchTCP
undTUNNELalsTransportprotokollzum Ein-
satz kommen. TUNNEL ist, wie der Name
suggeriert, zur Vereinfachung der Penetra-
tion von Firewalls gedacht, indem die Ver-
Java aktuell 3-2013 |  13
www.ijug.eu
iii
iiiiii
iii
teilung an die Empfänger über einen Rou-
ter erfolgt. UDP verwendet IP-Multicasts,
TCP versendet an jeden Empfänger einen
TCP-Unicast. Bei UDP und TUNNEL muss
jeder Multicast vom Server nur einmal
versendet werden, während bei TCP jeder
Multicast an jeden Clusterknoten geson-
dert zugestellt wird.
Aufbauend auf dem jeweiligen Trans-
portprotokoll liegen diverse zusätzliche
Protokolle im Stapel. Beim Senden durch-
läuft eine Nachricht den Stapel von oben
nach unten, sie passiert also zuletzt das
Transportprotokoll. Beim Empfangen wird
der Stapel genau umgekehrt durchlaufen.
Neben Protokollen zur Cluster-Formierung
und dem Auffinden fehlerhafter Knoten
befinden sich in der Standard-Konfigu-
ration von JGroups die Protokolle UFC
(Unicast-Flow-Control) und MFC (Multi-
cast-Flow-Control). Diese stellen sicher,
dass Pakete in einer Frequenz versendet
werden, in der die Empfänger diese auch
empfangen und verarbeiten können. Ist
die Bandbreite des Netzwerks durch hohes
Kommunikationsvolumen ausgereizt, aber
noch Prozessorkapazität vorhanden, dann
kann JGroups den Netzwerkverkehr kom-
primieren. Hierzu wird der Protokollstapel
um das Protokoll COMPRESS erweitert, wie
Listing 2 zeigt.
lerdings steigt mit der Größe des Clusters
die Netzwerklast.
Im JGroups-Subsystem des JBoss AS 7
ist bereits ein kompletter, auf TCP basie-
render Protokollstapel bereitgestellt. Der
TCP-Protokollstapel wird durch Ändern des
„default-stack“-Attributs in Benutzung ge-
nommen (siehe Listing 3).
Damit ist die Sache aber leider noch
nicht erledigt, denn in diesem Protokoll-
stapel wird zum Auffinden anderer Clus-
terknoten IP-Multicast über das Protokoll
MPING verwendet. Daher muss ein ande-
res Protokoll als Alternative zum Auffinden
anderer Clusterknoten her. JGroups bietet
eine große Auswahl an PING-Protokollen
an, angefangen bei FILE_PING, das ein ge-
meinsames Dateisystem nutzt, über Proto-
kolle wie S3_PING und RACKSPACE_PING,
die Cloud Storages verwenden, bis hin zu
TCPPING. Bei dem Protokoll TCPPING wer-
den die Clusterknoten jeweils Anhand ei-
ner statischen Liste initialer Clusterknoten
konfiguriert. Über diese Liste versucht je-
der Clusterknoten, eineVerbindung zu den
konfigurierten Knoten aufzubauen. Sobald
eine Verbindung zu einer initialen Min-
destanzahl an Knoten vorhanden ist, wird
der Cluster formiert. Im folgenden Listing
ist eine Beispielkonfiguration für TCPPING
gezeigt (siehe Listing 4).
Das Subcluster-Konzept
Wie bereits angerissen, ist die Infinispan-
Konfigurations-Distribution eine Lösung,
die sowohl Hochverfügbarkeit als auch
Skalierbarkeit bietet und mit JGroups eine
effiziente Kommunikation auch in größe-
ren Umgebungen ermöglicht. Eine weitere
Möglichkeit ist die Unterteilung größerer
Cluster-Topologien in mehrere Subcluster.
Innerhalb eines jeden Subclusters werden
die transienten Sitzungsdaten redundant
vorgehalten, aber nicht über die Grenzen
eines Subclusters hinweg (siehe Abbil-
dung 3). Somit kann der Cluster gut ska-
lieren, indem Subcluster hinzufügt bezie-
hungsweise entfernt werden.
Die Größe eines Subclusters kann das
Maß an Verfügbarkeit bestimmen. Auf ei-
nem so aufgebauten Cluster kann auch ein
sogenanntes „Rollendes Update“ durch-
geführt werden, indem jeweils ein kom-
pletter Subcluster aktualisiert wird. Im Ge-
gensatz zu Distribution besteht auch nicht
das Problem, dass der Abruf eines Datums
häufig über das Netzwerk erfolgen muss,
da jeder Subcluster-Knoten alle replizier-
ten Daten vorhält.
Subcluster konfigurieren
Um das Subcluster-Konzept umzusetzen,
sind im Wesentlichen zwei Konfigurationen
erforderlich. Zu einem muss die Replika-
tion auf bestimmte Knoten begrenzt und
zum anderen der jeweilige Lastverteiler so
anpasst werden, dass ein Failover nur über
die Grenzen eines Subclusters hinweg er-
folgt, wenn keine Server des Subclusters
mehr verfügbar sind. Die Größe eines
<protocol type=“TCPPING“>
<property name=“initial_hosts“>
1.2.3.4[7600],1.2.3.5[7600]
</property>
<property name=“num_initial_members“>2</property>
<property name=“timeout“>2000</property>
</protocol>
Listing 4
<!-- ... -->
<protocol type=“FRAG2“/>
<protocol type=“COMPRESS“/>
<!-- ... -->
Listing 2
Angepasst an das Netzwerk mit JGroups
In manchen Netzwerken, insbesondere in
Netzwerken aus verteilten Sub-Netzen, ist
IP-Multicast nicht verfügbar. Damit schei-
det UDP als Transportprotokoll aus. Eine
Alternative ist das TCP-Transportprotokoll.
Da JGroups für Gruppennachrichten mit
TCP die Kommunikation durch einzelneVer-
bindungen zu jedem Gruppenmitglied rea-
lisiert, wird die Kommunikation in diesem
Fall mit steigender Clustergröße immer
ineffizienter. In der Praxis sind jedoch vie-
le Switches und Router für TCP optimiert.
Deshalb kann TCP trotzdem sowohl eine
höhere Nachrichtenrate als auch einen hö-
heren Nachrichtendurchsatz liefern [5]. Al-
<subsystem xmlns=“urn:jboss:domain:jgroups:1.1“ default-stack=“tcp“>
<stack name=“udp“>
...
</stack>
<stack name=“tcp“>
...
</stack>
</subsystem>
Listing 3
14  |
JBoss
Subclusters lässt sich mit der Standard-HA-
Konfiguration beschränken. Dazu wird für
jeden Subcluster eine gesonderte Multi-
cast-Adresse verwendet. Diese kann so-
wohl bei der „domain.sh“ als auch bei der
„standalone.sh“ über den Parameter „-u“
angegeben werden. Ein Aufruf sieht dann
beispielsweise so aus: „./standalone.sh -c
standalone-ha.xml -u 230.0.1.4“.
Die Lastverteilung lässt sich bei Verwen-
dung von mod_cluster über sogenannte
„Lastverteilungsgruppen“ realisieren. Last-
verteilungsgruppen arbeiten so, dass Last-
verteilung und Failover nur innerhalb ei-
ner solchen Gruppe erfolgen, es sei denn,
es existieren keine Server mehr in dieser
Gruppe. Dafür muss jeder Subcluster eine
eigene Lastverteilungsgruppe haben. Die-
se werden auf Seiten des JBoss AS 7 im
mod_cluster-Subsystem konfiguriert (sie-
he Listing 5).
<subsystem xmlns=“urn:jboss:domain:modcluster:1.1“>
<mod-cluster-config load-balancing-group=“LBGroup1“ ...>
...
</mod-cluster-config>
</subsystem>
Listing 5
Abbildung 3: Innerhalb eines Subclusters wird Infinispan-Replikation betrieben. Ein Lastverteiler
sorgt dafür, dass Lastverteilung und Failover nur innerhalb eines Subclusters stattfinden
Fazit
Mit den grundlegenden Technologien
„JGroups“ und „Infinispan“ für die Cluster-
Kommunikation und für die Verteilung
transienter Daten sind mit einer etwas
angepassten Konfiguration auch größere
Cluster-Topologien realisierbar. DieTeilung
einer großen Cluster-Topologie in Subclus-
ter ermöglicht neben einer guten Skalie-
rung auch die Aktualisierung einzelner
Komponenten des Clusters ohne Ausfall-
zeiten der gesamten Umgebung. Hierbei
müssen jedoch weitere Restriktionen, wie
zum Beispiel ein gemeinsames Datenbank-
Schema, berücksichtigt werden. Die Bei-
spiele aus diesem Artikel beruhen auf der
aktuellen Version des JBoss AS 7. Für den
Einsatz in Produktiv-Umgebungen ist je-
doch die gesondert qualitätsgesicherte
Enterprise Application Platform (EAP 6)
von Red Hat empfohlen. Diese ist ebenfalls
Quell-offen und basiert auf dem JBoss AS 7
der Community.
Links
[1] http://www.jboss.org/infinispan
[2] http://en.wikipedia.org/wiki/Consistent_hashing
[3] https://docs.jboss.org/author/display/ISPN/
Clustering+modes#Clusteringmodes-Invalida-
tionMode
[4] http://www.jgroups.org/manual-3.x/html/in-
dex.html
[5] http://www.jgroups.org/perf/perf2006/Report.
html
HeinzWilmingistLeiterdesJBossCompetenceCentersderakqui-
net AG. Er beschäftigt sich dort mit Technologien und Architek-
turen für verteilte Anwendungen. Sein Fokus liegt dabei auf der
Java-EE-Plattform und auf Open-Source-Technologien.
Immanuel Sims ist als Werkstudent bei der akquinet AG tätig. Er
studiert Informatik an der Humboldt Universität Berlin und hat
sichintensivmitdemThema„Clustering“imKontextdesJBossAS
7 beschäftigt.
Heinz Wilming
heinz.wilming@akquinet.de
Immanuel Sims
immanuel.sims@akquinet.de
*Allgemeine Geschäftsbedingungen:
Zum Preis von 18 Euro (inkl. MwSt.) pro Kalenderjahr erhalten Sie vier Ausgaben der Zeitschrift“Java aktuell - das iJUG-Magazin“ direkt nach Erscheinen per Post zugeschickt. Die Abonnementgebühr wird jeweils im
JanuarfüreinJahrfällig.SieerhalteneineentsprechendeRechung.Abonnementverträge,diewährendeinesJahresbeginnen,werdenmit4,90Euro(inkl.MwSt.)jevollesQuartalberechnet.DasAbonnementverlän-
gert sich automatisch um ein weiteres Jahr, wenn es nicht bis zum 31. Oktober eines Jahres schriftlich gekündigt wird. DieWiederrufsfrist beträgt 14Tage abVertragserklärung inTextform ohne Angabe von Gründen.
Für Oracle-Anwender und Interessierte gibt es das Java aktuell
Abonnement auch mit zusätzlich sechs Ausgaben im Jahr der
Fachzeitschrift DOAG News und vier Ausgaben im Jahr Busi-
ness News zusammen für 70 EUR.Weitere Informationen unter
www.doag.org/shop/
faxen Sie das ausgefüllte formular an
0700 11 36 24 39
oder bestellen Sie online
go.ijug.eu/go/abo
Interessenverbund der Java User Groups e.V.
TempelhoferWeg 64
12347 Berlin
www.ijug.eu

Sichern Sie sich
4 Ausgaben für 18 EUR
Anschrift
Name,Vorname
Firma
Abteilung
Straße, Hausnummer
PLZ, Ort
ggf. ABWEICHENDE rechnungsanschrift
Straße, Hausnummer
PLZ, Ort
E-Mail
Telefonnummer
Die allgemeinen Geschäftsbedingungen* erkenne ich an, Datum, Unterschrift
Jetzt
Abobestellen
+ + + ausfüllen + + + ausschneiden + + + abschicken + + + ausfüllen + + + ausschneiden + + + abschicken + + + ausfüllen
 Ja, ich bestelle das Abo Java aktuell – das IJUG-Magazin: 4 Ausgaben zu 18 EUR/Jahr
 Ja, ich bestelle den kostenfreien Newsletter: Java aktuell – der iJUG-Newsletter
Javaaktuell
Javaaktuell
Nr. 04 | Winter 2012 | www. ijug.eu
D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977
Das Magazin der Java-Community
iii
iii
iii
iii
iJUG
Verbund
Die„Bohne“in voller Blüte
419197830490304
Besser mit Javaentwickeln
Java EE 7 für die Cloud, Seite 14Apache Camel Security,Seite 30
Eclipse Code Recommenders,Seite 44
Tools für Web-Applikations-Lasttests, Seite 52
Java aktuellUpdate
Fortschritte bei JAX-RS 2.0,Seite 9
Neue Features inJava FX2.1,Seite 18
Javaaktuell
Javaaktuell
Nr. 1-2013 | Dezember, Januar, Februar | www. ijug.eu
D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977
Praxis. Wissen. Networking. Das Magazin für Entwickler
Java –
Programmiersprache
mit Tiefgang
Neu auf dem MarktEclipse 4, Seite 18
Geronimo 3.0, Seite 65
Mainframe
Modernisieren mit Java, Seite 27
Wissen für EntwicklerGarbage Collection, Seite 36
Scrum & Kanban, Seite 61
Java und Oracle
Kostenlose ADF-Version, Seite 45PL/SQL-Logik in Java-Anwendungen, Seite 46Debugging für Forms 11g, Seite 50 iii
iii
iii
iii
iJUG
Verbund
419197830490301
JavaaktuellJavaaktuell
2-2013 | Sommer | www. ijug.eu
D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977
Praxis. Wissen. Networking. Das Magazin für Entwickler
Java verbreitet sich überall
Ausblicke
JDeveloper 12c, Seite 8
Android goes Gradle, Seite 29
Hochverfügbarkeit
JBoss AS7, Seite 21
Web-Entwicklung
Play!, Seite 32
Linked Data, Seite 38
Java und Oracle
Continous Integration, Seite 59
419197830490302
iii
iiiiii
iii
iJUG
Verbund
Javaaktuell
Javaaktuell
03-2013 | Herbst | www. ijug.eu
Praxis. Wissen. Networking. Das Magazin für Entwickler
Java trägt Früchte
Neue Technologie
Java-API für Batch-Anwendungen, Seite 8
Entwicklungsstrategien
Software modular aufbauen, Seite 19
Mehr selbst entwickeln, Seite 23
Web-Entwicklung
Das Web als Social Network, Seite 32
Neu: Wicket 6, Seite 40
Java und Oracle
ADF Essential Mobile, Seite 52
D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977
iii
iii
iii
iii
iJUG
Verbund

Mais conteúdo relacionado

Semelhante a JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7

Private Cloud mit Open Source
Private Cloud mit Open SourcePrivate Cloud mit Open Source
Private Cloud mit Open SourceDaniel Schneller
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitStefan Witwicki
 
Cloud-native Applikationen
Cloud-native ApplikationenCloud-native Applikationen
Cloud-native ApplikationenQAware GmbH
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Dateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingDateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingLothar Wieske
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering hwilming
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Gunther Pippèrr
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcosRalf Ernst
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbargedoplan
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...Lukas Eder
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsLothar Wieske
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
JBoss 7 als Plattform für hochverfügbare Anwendungen
JBoss 7 als Plattform für hochverfügbare AnwendungenJBoss 7 als Plattform für hochverfügbare Anwendungen
JBoss 7 als Plattform für hochverfügbare Anwendungengedoplan
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantMarek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantInformatik Aktuell
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollWolfgang Weigend
 

Semelhante a JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7 (20)

Private Cloud mit Open Source
Private Cloud mit Open SourcePrivate Cloud mit Open Source
Private Cloud mit Open Source
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - Hochverfügbarkeit
 
Cloud-native Applikationen
Cloud-native ApplikationenCloud-native Applikationen
Cloud-native Applikationen
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
Dateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud ComputingDateisysteme und Datenbanken im Cloud Computing
Dateisysteme und Datenbanken im Cloud Computing
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering
 
Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbar
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud Computings
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
JBoss 7 als Plattform für hochverfügbare Anwendungen
JBoss 7 als Plattform für hochverfügbare AnwendungenJBoss 7 als Plattform für hochverfügbare Anwendungen
JBoss 7 als Plattform für hochverfügbare Anwendungen
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
Jumping Jack Flash
Jumping Jack FlashJumping Jack Flash
Jumping Jack Flash
 
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantMarek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
 

Mais de hwilming

Introduction Machine Learning - Microsoft
Introduction Machine Learning - MicrosoftIntroduction Machine Learning - Microsoft
Introduction Machine Learning - Microsofthwilming
 
A practical introduction to data science and machine learning
A practical introduction to data science and machine learningA practical introduction to data science and machine learning
A practical introduction to data science and machine learninghwilming
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
 
Creating Mobile Enterprise Applications with Red Hat / JBoss
Creating Mobile Enterprise Applications with Red Hat / JBossCreating Mobile Enterprise Applications with Red Hat / JBoss
Creating Mobile Enterprise Applications with Red Hat / JBosshwilming
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologieshwilming
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clusteringhwilming
 
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7hwilming
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEhwilming
 
Optimierung von JPA-­Anwendungen
Optimierung von JPA-­AnwendungenOptimierung von JPA-­Anwendungen
Optimierung von JPA-­Anwendungenhwilming
 
Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
 
Aerogear Java User Group Presentation
Aerogear Java User Group PresentationAerogear Java User Group Presentation
Aerogear Java User Group Presentationhwilming
 
The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012hwilming
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
 

Mais de hwilming (14)

Introduction Machine Learning - Microsoft
Introduction Machine Learning - MicrosoftIntroduction Machine Learning - Microsoft
Introduction Machine Learning - Microsoft
 
A practical introduction to data science and machine learning
A practical introduction to data science and machine learningA practical introduction to data science and machine learning
A practical introduction to data science and machine learning
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
 
Creating Mobile Enterprise Applications with Red Hat / JBoss
Creating Mobile Enterprise Applications with Red Hat / JBossCreating Mobile Enterprise Applications with Red Hat / JBoss
Creating Mobile Enterprise Applications with Red Hat / JBoss
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clustering
 
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7
JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SE
 
Optimierung von JPA-­Anwendungen
Optimierung von JPA-­AnwendungenOptimierung von JPA-­Anwendungen
Optimierung von JPA-­Anwendungen
 
Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012
 
Aerogear Java User Group Presentation
Aerogear Java User Group PresentationAerogear Java User Group Presentation
Aerogear Java User Group Presentation
 
The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EE
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EE
 

JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7

  • 1. Javaaktuell Javaaktuell 03-2013 | Herbst | www. ijug.eu Praxis. Wissen. Networking. Das Magazin für Entwickler Java trägt Früchte Neue Technologie Java-API für Batch-Anwendungen, Seite 8 Entwicklungsstrategien Software modular aufbauen, Seite 19 Mehr selbst entwickeln, Seite 23 Web-Entwicklung Das Web als Social Network, Seite 32 Neu: Wicket 6, Seite 40 Java und Oracle ADF Essential Mobile, Seite 52 D:4,90EUR A:5,60EUR CH:9,80CHF Benelux:5,80EUR ISSN2191-6977 iii iiiiii iii iJUG Verbund Sonderdruck
  • 2. 4  | Inhalt 3 Editorial 5 Das Java-Tagebuch Andreas Badelt, Leiter der DOAG SIG Java 8 Java-API für Batch-Anwendungen Peter Doschkinow 11 Skalierbare Cluster-Topologien mit dem JBoss AS 7 Heinz Wilming und Immanuel Sims 15 Lightweight AOP mit CDI und JPA Prof. Dr. Michael Helbig 19 Software modular bauen Ulf Fildebrandt 23 Software – weniger kaufen, mehr bauen Erik Dörnenburg 27 Diagramm-Bibliotheken für Android Falko Krische 32 WebID: Das Web als Social Network Angelo Veltens 37 Vermittlungsinstanzen sind gefragt Tobias Hartwig 40 Anspruchsvolle Web-Anwendungen mit Wicket 6 Jochen Mader 44 „Java ist Grundlage für meine Software-Projekte …“ Interview mit Dirk Dittert 45 Nachgefragt … Uwe Sauerbrei 49 Den Rollladen steuern mit Pi René Jahn 52 ADF Essentials Mobile – Ein unlös­ bares Problem? Markus Klenke 55 Performance-Falle beim Logging: Die Zeitstempel-Formatierung Jürgen Lampe 61 Unbekannte Kostbarkeiten des SDK Heute: Web-Services Bernd Müller 63 Integration von Java via JNI in traditi- onelle Cobol-Batch-Anwendungen Marc Bauer und Martin Kiefer 43 Unsere Inserenten 66 Impressum Ein Lastverteiler sorgt dafür, dass Lastverteilung und Failover nur innerhalb eines Subclusters stattfinden. Skalierbare Cluster-Topologien mit dem JBoss AS 7, Seite 11 Wer auf keine Funktion verzichten möchte und schon immer von einer eigenen Rollladensteuerung träumte, findet hier eine Anleitung für den Raspberry Pi, Seite 49
  • 3. Java aktuell 3-2013 |  11 www.ijug.eu iii iiiiii iii Skalierbare Cluster-Topologien mit dem JBoss AS 7 Heinz Wilming und Immanuel Sims, akquinet AG Hohe Verfügbarkeit und hohe Skalierbarkeit sind für viele Anwendungen im Unternehmensumfeld eine unabdingbare Anforderung. Der Einsatz von Clustertechnologien verspricht hier Lösungen, gestaltet sich in der Praxis aber herausfordernder als angenommen. Neben der technischen Komplexität ist auch das Spannungsfeld zwischen Skalierbarkeit und Hochverfügbarkeit aufzulösen. In der letzten Ausgabe der Java aktuell wur- den die grundlegenden Clustering-Kon- zepte des JBoss Application Server in der Version 7 dargestellt. Dieser Artikel stellt unterschiedliche Cluster-Topologien vor, die auch den Anforderungen an die Skalier- barkeit und die Verfügbarkeit genügen und dabei die Restriktionen der Netzwerk-Infra- struktur und die Besonderheiten größerer Cluster-Umgebungen berücksichtigen. Einführung Eine hohe Verfügbarkeit eines Clusters be- zeichnet die Fähigkeit einer Cluster-Topo- logie, bei einem Ausfall einzelner Knoten die Aufgaben nahtlos an andere Knoten der Cluster-Topologie zu übertragen. Hierzu ist es erforderlich, dass sowohl Sys- temkomponenten als auch transiente Sit- zungsdaten redundant vorgehalten wer- den. Die Verfügbarkeit wird dabei durch Hinzufügen weiterer Knoten erhöht. Dies geht jedoch zulasten der Skalierbarkeit, da die Replikation von Daten mit anderen Kno- ten der Topologie den Kommunikations- aufwand und Ressourcenbedarf erhöht. Bei einem Cluster mit beispielsweise vier Knoten und jeweils einem Gigabyte Spei- cher stehen bei einer Replikation auf allen Knoten nicht insgesamt vier, sondern nur ein Gigabyte Speicher für transiente Daten zur Verfügung, da jedes Datum vierfach vorgehalten wird. Durch das Hinzufügen weiterer Knoten wird der verfügbare Speicher also nicht erhöht, da alle anderen Knoten die Daten des neuen Knotens vorhalten und der neue Knoten die Daten der bereits vorhan- denen. Darüber hinaus ist auch ein erhöh- ter Aufwand für die Verteilung der Daten zu berücksichtigen. Allerdings wird eine höhere Verfügbarkeit durch die Erhöhung der Redundanz erreicht. Die Schwierigkeit bei der Konzeption eines Clusters ist, sowohl eine hohe Verfüg- barkeit als auch eine ausreichende Skalier- barkeit zu erreichen. Die Skalierbarkeit ei- nes Clusters bezeichnet dabei die Fähigkeit der Bewältigung wachsender Last durch Hinzufügen zusätzlicher Ressourcen. Eine gute Skalierung ist beispielsweise beim Be- trieb mehrerer voneinander unabhängiger Server gegeben, die keinerlei Kenntnis da- von haben, dass sie gemeinsam in einem Cluster arbeiten. Ein Lastverteiler sorgt dafür, dass jeder Knoten gleichmäßig mit Anfragen versorgt wird. Dieses Konzept skaliert sehr gut, aber wenn ein Knoten ausfällt, gehen die transienten Sitzungs- daten verloren – Pech für den Nutzer, der gerade seinen virtuellen Einkaufswagen randvoll geladen hat. Eine vollständige Replikation und der Betrieb unabhängiger Server sind zwei extreme Konzepte. Es gibt auch Topologi- en, die sowohl eine gute Skalierbarkeit als auch eine gute Verfügbarkeit aufweisen. Replikation und Distribution Im JBoss AS 7 dient der verteilte Cache Infinispan [1] der Replikation transienter Sitzungsdaten. Beispielsweise werden die Sitzungsdaten einer HTTP-Session oder die Daten einer zustandsbehafteten EJB- Komponente in sogenannten„Cache-Con- tainern“ in unterschiedlichen Regionen verwaltet. Bei einem Ausfall kann somit der Klient transparent auf einen anderen Server ausweichen und mit den redundant vorgehaltenen Sitzungsdaten weiterarbei- ten. Ein Infinispan-Cache-Container kann dabei in verschiedenen Modi betrieben werden. Für Hochverfügbarkeit sind die zwei Varianten„Replikation“ und„Distribu- tion“ interessant. Replikation wird in den Standard-HA-Konfigurationen des JBoss AS 7 verwendet und entspricht dem, was wir als vollständige Replikation bezeichnet haben (siehe Abbildung 1). Im Distribu- tions-Modus kann im Gegensatz zur Repli- kation festgelegt werden, wie häufig ein Datum redundant vorgehalten wird (siehe Abbildung 2). Bei dieser Art der Verteilung wird eine bessere Skalierung erreicht, da die Anzahl der Redundanz unabhängig von der An- zahl der Konten in einem Cluster ist. Da- durch wird es möglich, den Cluster durch das dynamische Hinzufügen beziehungs- weise Entfernen von Knoten in den Dimen- sionen„Speicher“ und„Rechenleistung“ zu skalieren. Falls ein Knoten ausfällt, reorga- nisiert sich der Cache, sodass die vorge- schriebene Anzahl von Redundanzen wie- der erreicht wird. Ein Nachteil ist jedoch, dass bei Dis- tribution ein Datum nicht unbedingt auf dem Knoten vorgehalten wird, auf dem es angefragt wurde. Der jeweilige Knoten wird mithilfe einer konsistenten Hash-Funk- tion [2] ermittelt. Es entsteht eine höhere Netzwerk-Kommunikation. Um diese zu verringern, kann bei Distribution ein First- Level-Cache vor dem eigentlichen Cache eingerichtet sein. Hierbei ist jedoch der zusätzliche Koordinationsaufwand für die Invalidierung von nicht mehr gültigen Da- ten zu berücksichtigen. Ein solcher Cache kann sich somit auch negativ auf die Ska- lierbarkeit auswirken. Synchrone und asynchroneVerteilung Sowohl im Replikations- als auch im Dis- tributions-Modus können die Daten syn- chron oder asynchron verteilt sein. Bei ei- ner synchronen Verteilung wird der Aufruf bis zur vollständigen Verteilung blockiert. Im Fehlerfall erfolgt ein Rollback der Trans- aktion. Bei einer asynchronen Verteilung
  • 4. 12  | JBoss <subsystem xmlns=“urn:jboss:domain:infinispan:1.3“> ... <cache-container name=“web“ default-cache=“dist“ ...> <replicated-cache name=“repl“ ...> ... </replicated-cache> <distributed-cache name=“dist“ ...> ... </distributed-cache> ... </cache-container> <cache-container name=“ejb“ default-cache=“dist“ ...> <replicated-cache name=“repl“ ...> ... </replicated-cache> <distributed-cache name=“dist“ ...> ... </distributed-cache> ... </cache-container> <cache-container name=“hibernate“ ...> ... </cache-container> ... </subsystem> werden hingegen die jeweiligen Knoten benachrichtigt und der Aufruf nicht blo- ckiert. Kommt es zu einem Fehler während der Verteilung, erfolgt kein Rollback der Transaktion. Fehler werden lediglich proto- kolliert. Diese Verteilungsart erfordert auf- grund der Asynchronität zudem eine As- soziation der jeweiligen Session mit dem aktuellen Knoten, da Änderungen gegebe- nenfalls noch in einer internen Queue auf ihre Verarbeitung warten und somit noch nicht auf anderen Knoten verfügbar sind. Cache-Konfiguration Der JBoss AS 7 ist bereits für den Betrieb eines Clusters vorkonfiguriert und bietet entsprechende Konfigurationsprofile an. Die Profile „HA“ und „Full-HA“ enthalten im Infinispan-Subsystem unter anderem die Cache-Container „web“, „ejb“ und „hibernate“ (siehe Listing 1). Der letztge- nannte agiert als Second-Level-Cache für Hibernate. Hierfür wird der spezielle Mo- dus„Invalidierung“ [2] genutzt. Der Container „web“ speichert die HTTP-Sitzungsdaten. Im Container „ejb“ werden die transienten Daten von zu- standsbehafteten EJB-Komponenten ab- gelegt. Für „web“ und „ejb“ ist sowohl eine Variante für Replikation („repl“) als auch eine Variante für Distribution („dist“) vorkonfiguriert. Um anstelle des Repli- kations-Modus den Distributions-Modus zu verwenden, kann das „default cache“- Attribut des jeweiligen Cache-Containers den vorkonfigurierten Distribution Cache referenzieren. Effiziente Kommunikation mit JGroups Infinispan nutzt für die Cluster-Kommu- nikation JGroups [4]. Es ist ebenfalls als eigenständiges Subsystem im JBoss AS 7 eingebunden und unterstützt sowohl Punkt-zu-Punkt-Kommunikation (Unicast) als auch Gruppen-Kommunikation (Mul- Listing 1 Abbildung 1: Infinispan-Replikation Abbildung 2: Infinispan-Distribution ticast). Dabei abstrahiert JGroups von der jeweiligen Netzwerk-Topologie auf Basis eines Transportprotokolls und eines kon- figurierbaren Protokollstapels. JBoss AS 7 verwendet standardmäßig UDP als Trans- portprotokoll. Neben UDP können auchTCP undTUNNELalsTransportprotokollzum Ein- satz kommen. TUNNEL ist, wie der Name suggeriert, zur Vereinfachung der Penetra- tion von Firewalls gedacht, indem die Ver-
  • 5. Java aktuell 3-2013 |  13 www.ijug.eu iii iiiiii iii teilung an die Empfänger über einen Rou- ter erfolgt. UDP verwendet IP-Multicasts, TCP versendet an jeden Empfänger einen TCP-Unicast. Bei UDP und TUNNEL muss jeder Multicast vom Server nur einmal versendet werden, während bei TCP jeder Multicast an jeden Clusterknoten geson- dert zugestellt wird. Aufbauend auf dem jeweiligen Trans- portprotokoll liegen diverse zusätzliche Protokolle im Stapel. Beim Senden durch- läuft eine Nachricht den Stapel von oben nach unten, sie passiert also zuletzt das Transportprotokoll. Beim Empfangen wird der Stapel genau umgekehrt durchlaufen. Neben Protokollen zur Cluster-Formierung und dem Auffinden fehlerhafter Knoten befinden sich in der Standard-Konfigu- ration von JGroups die Protokolle UFC (Unicast-Flow-Control) und MFC (Multi- cast-Flow-Control). Diese stellen sicher, dass Pakete in einer Frequenz versendet werden, in der die Empfänger diese auch empfangen und verarbeiten können. Ist die Bandbreite des Netzwerks durch hohes Kommunikationsvolumen ausgereizt, aber noch Prozessorkapazität vorhanden, dann kann JGroups den Netzwerkverkehr kom- primieren. Hierzu wird der Protokollstapel um das Protokoll COMPRESS erweitert, wie Listing 2 zeigt. lerdings steigt mit der Größe des Clusters die Netzwerklast. Im JGroups-Subsystem des JBoss AS 7 ist bereits ein kompletter, auf TCP basie- render Protokollstapel bereitgestellt. Der TCP-Protokollstapel wird durch Ändern des „default-stack“-Attributs in Benutzung ge- nommen (siehe Listing 3). Damit ist die Sache aber leider noch nicht erledigt, denn in diesem Protokoll- stapel wird zum Auffinden anderer Clus- terknoten IP-Multicast über das Protokoll MPING verwendet. Daher muss ein ande- res Protokoll als Alternative zum Auffinden anderer Clusterknoten her. JGroups bietet eine große Auswahl an PING-Protokollen an, angefangen bei FILE_PING, das ein ge- meinsames Dateisystem nutzt, über Proto- kolle wie S3_PING und RACKSPACE_PING, die Cloud Storages verwenden, bis hin zu TCPPING. Bei dem Protokoll TCPPING wer- den die Clusterknoten jeweils Anhand ei- ner statischen Liste initialer Clusterknoten konfiguriert. Über diese Liste versucht je- der Clusterknoten, eineVerbindung zu den konfigurierten Knoten aufzubauen. Sobald eine Verbindung zu einer initialen Min- destanzahl an Knoten vorhanden ist, wird der Cluster formiert. Im folgenden Listing ist eine Beispielkonfiguration für TCPPING gezeigt (siehe Listing 4). Das Subcluster-Konzept Wie bereits angerissen, ist die Infinispan- Konfigurations-Distribution eine Lösung, die sowohl Hochverfügbarkeit als auch Skalierbarkeit bietet und mit JGroups eine effiziente Kommunikation auch in größe- ren Umgebungen ermöglicht. Eine weitere Möglichkeit ist die Unterteilung größerer Cluster-Topologien in mehrere Subcluster. Innerhalb eines jeden Subclusters werden die transienten Sitzungsdaten redundant vorgehalten, aber nicht über die Grenzen eines Subclusters hinweg (siehe Abbil- dung 3). Somit kann der Cluster gut ska- lieren, indem Subcluster hinzufügt bezie- hungsweise entfernt werden. Die Größe eines Subclusters kann das Maß an Verfügbarkeit bestimmen. Auf ei- nem so aufgebauten Cluster kann auch ein sogenanntes „Rollendes Update“ durch- geführt werden, indem jeweils ein kom- pletter Subcluster aktualisiert wird. Im Ge- gensatz zu Distribution besteht auch nicht das Problem, dass der Abruf eines Datums häufig über das Netzwerk erfolgen muss, da jeder Subcluster-Knoten alle replizier- ten Daten vorhält. Subcluster konfigurieren Um das Subcluster-Konzept umzusetzen, sind im Wesentlichen zwei Konfigurationen erforderlich. Zu einem muss die Replika- tion auf bestimmte Knoten begrenzt und zum anderen der jeweilige Lastverteiler so anpasst werden, dass ein Failover nur über die Grenzen eines Subclusters hinweg er- folgt, wenn keine Server des Subclusters mehr verfügbar sind. Die Größe eines <protocol type=“TCPPING“> <property name=“initial_hosts“> 1.2.3.4[7600],1.2.3.5[7600] </property> <property name=“num_initial_members“>2</property> <property name=“timeout“>2000</property> </protocol> Listing 4 <!-- ... --> <protocol type=“FRAG2“/> <protocol type=“COMPRESS“/> <!-- ... --> Listing 2 Angepasst an das Netzwerk mit JGroups In manchen Netzwerken, insbesondere in Netzwerken aus verteilten Sub-Netzen, ist IP-Multicast nicht verfügbar. Damit schei- det UDP als Transportprotokoll aus. Eine Alternative ist das TCP-Transportprotokoll. Da JGroups für Gruppennachrichten mit TCP die Kommunikation durch einzelneVer- bindungen zu jedem Gruppenmitglied rea- lisiert, wird die Kommunikation in diesem Fall mit steigender Clustergröße immer ineffizienter. In der Praxis sind jedoch vie- le Switches und Router für TCP optimiert. Deshalb kann TCP trotzdem sowohl eine höhere Nachrichtenrate als auch einen hö- heren Nachrichtendurchsatz liefern [5]. Al- <subsystem xmlns=“urn:jboss:domain:jgroups:1.1“ default-stack=“tcp“> <stack name=“udp“> ... </stack> <stack name=“tcp“> ... </stack> </subsystem> Listing 3
  • 6. 14  | JBoss Subclusters lässt sich mit der Standard-HA- Konfiguration beschränken. Dazu wird für jeden Subcluster eine gesonderte Multi- cast-Adresse verwendet. Diese kann so- wohl bei der „domain.sh“ als auch bei der „standalone.sh“ über den Parameter „-u“ angegeben werden. Ein Aufruf sieht dann beispielsweise so aus: „./standalone.sh -c standalone-ha.xml -u 230.0.1.4“. Die Lastverteilung lässt sich bei Verwen- dung von mod_cluster über sogenannte „Lastverteilungsgruppen“ realisieren. Last- verteilungsgruppen arbeiten so, dass Last- verteilung und Failover nur innerhalb ei- ner solchen Gruppe erfolgen, es sei denn, es existieren keine Server mehr in dieser Gruppe. Dafür muss jeder Subcluster eine eigene Lastverteilungsgruppe haben. Die- se werden auf Seiten des JBoss AS 7 im mod_cluster-Subsystem konfiguriert (sie- he Listing 5). <subsystem xmlns=“urn:jboss:domain:modcluster:1.1“> <mod-cluster-config load-balancing-group=“LBGroup1“ ...> ... </mod-cluster-config> </subsystem> Listing 5 Abbildung 3: Innerhalb eines Subclusters wird Infinispan-Replikation betrieben. Ein Lastverteiler sorgt dafür, dass Lastverteilung und Failover nur innerhalb eines Subclusters stattfinden Fazit Mit den grundlegenden Technologien „JGroups“ und „Infinispan“ für die Cluster- Kommunikation und für die Verteilung transienter Daten sind mit einer etwas angepassten Konfiguration auch größere Cluster-Topologien realisierbar. DieTeilung einer großen Cluster-Topologie in Subclus- ter ermöglicht neben einer guten Skalie- rung auch die Aktualisierung einzelner Komponenten des Clusters ohne Ausfall- zeiten der gesamten Umgebung. Hierbei müssen jedoch weitere Restriktionen, wie zum Beispiel ein gemeinsames Datenbank- Schema, berücksichtigt werden. Die Bei- spiele aus diesem Artikel beruhen auf der aktuellen Version des JBoss AS 7. Für den Einsatz in Produktiv-Umgebungen ist je- doch die gesondert qualitätsgesicherte Enterprise Application Platform (EAP 6) von Red Hat empfohlen. Diese ist ebenfalls Quell-offen und basiert auf dem JBoss AS 7 der Community. Links [1] http://www.jboss.org/infinispan [2] http://en.wikipedia.org/wiki/Consistent_hashing [3] https://docs.jboss.org/author/display/ISPN/ Clustering+modes#Clusteringmodes-Invalida- tionMode [4] http://www.jgroups.org/manual-3.x/html/in- dex.html [5] http://www.jgroups.org/perf/perf2006/Report. html HeinzWilmingistLeiterdesJBossCompetenceCentersderakqui- net AG. Er beschäftigt sich dort mit Technologien und Architek- turen für verteilte Anwendungen. Sein Fokus liegt dabei auf der Java-EE-Plattform und auf Open-Source-Technologien. Immanuel Sims ist als Werkstudent bei der akquinet AG tätig. Er studiert Informatik an der Humboldt Universität Berlin und hat sichintensivmitdemThema„Clustering“imKontextdesJBossAS 7 beschäftigt. Heinz Wilming heinz.wilming@akquinet.de Immanuel Sims immanuel.sims@akquinet.de
  • 7. *Allgemeine Geschäftsbedingungen: Zum Preis von 18 Euro (inkl. MwSt.) pro Kalenderjahr erhalten Sie vier Ausgaben der Zeitschrift“Java aktuell - das iJUG-Magazin“ direkt nach Erscheinen per Post zugeschickt. Die Abonnementgebühr wird jeweils im JanuarfüreinJahrfällig.SieerhalteneineentsprechendeRechung.Abonnementverträge,diewährendeinesJahresbeginnen,werdenmit4,90Euro(inkl.MwSt.)jevollesQuartalberechnet.DasAbonnementverlän- gert sich automatisch um ein weiteres Jahr, wenn es nicht bis zum 31. Oktober eines Jahres schriftlich gekündigt wird. DieWiederrufsfrist beträgt 14Tage abVertragserklärung inTextform ohne Angabe von Gründen. Für Oracle-Anwender und Interessierte gibt es das Java aktuell Abonnement auch mit zusätzlich sechs Ausgaben im Jahr der Fachzeitschrift DOAG News und vier Ausgaben im Jahr Busi- ness News zusammen für 70 EUR.Weitere Informationen unter www.doag.org/shop/ faxen Sie das ausgefüllte formular an 0700 11 36 24 39 oder bestellen Sie online go.ijug.eu/go/abo Interessenverbund der Java User Groups e.V. TempelhoferWeg 64 12347 Berlin www.ijug.eu  Sichern Sie sich 4 Ausgaben für 18 EUR Anschrift Name,Vorname Firma Abteilung Straße, Hausnummer PLZ, Ort ggf. ABWEICHENDE rechnungsanschrift Straße, Hausnummer PLZ, Ort E-Mail Telefonnummer Die allgemeinen Geschäftsbedingungen* erkenne ich an, Datum, Unterschrift Jetzt Abobestellen + + + ausfüllen + + + ausschneiden + + + abschicken + + + ausfüllen + + + ausschneiden + + + abschicken + + + ausfüllen  Ja, ich bestelle das Abo Java aktuell – das IJUG-Magazin: 4 Ausgaben zu 18 EUR/Jahr  Ja, ich bestelle den kostenfreien Newsletter: Java aktuell – der iJUG-Newsletter Javaaktuell Javaaktuell Nr. 04 | Winter 2012 | www. ijug.eu D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977 Das Magazin der Java-Community iii iii iii iii iJUG Verbund Die„Bohne“in voller Blüte 419197830490304 Besser mit Javaentwickeln Java EE 7 für die Cloud, Seite 14Apache Camel Security,Seite 30 Eclipse Code Recommenders,Seite 44 Tools für Web-Applikations-Lasttests, Seite 52 Java aktuellUpdate Fortschritte bei JAX-RS 2.0,Seite 9 Neue Features inJava FX2.1,Seite 18 Javaaktuell Javaaktuell Nr. 1-2013 | Dezember, Januar, Februar | www. ijug.eu D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977 Praxis. Wissen. Networking. Das Magazin für Entwickler Java – Programmiersprache mit Tiefgang Neu auf dem MarktEclipse 4, Seite 18 Geronimo 3.0, Seite 65 Mainframe Modernisieren mit Java, Seite 27 Wissen für EntwicklerGarbage Collection, Seite 36 Scrum & Kanban, Seite 61 Java und Oracle Kostenlose ADF-Version, Seite 45PL/SQL-Logik in Java-Anwendungen, Seite 46Debugging für Forms 11g, Seite 50 iii iii iii iii iJUG Verbund 419197830490301 JavaaktuellJavaaktuell 2-2013 | Sommer | www. ijug.eu D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977 Praxis. Wissen. Networking. Das Magazin für Entwickler Java verbreitet sich überall Ausblicke JDeveloper 12c, Seite 8 Android goes Gradle, Seite 29 Hochverfügbarkeit JBoss AS7, Seite 21 Web-Entwicklung Play!, Seite 32 Linked Data, Seite 38 Java und Oracle Continous Integration, Seite 59 419197830490302 iii iiiiii iii iJUG Verbund Javaaktuell Javaaktuell 03-2013 | Herbst | www. ijug.eu Praxis. Wissen. Networking. Das Magazin für Entwickler Java trägt Früchte Neue Technologie Java-API für Batch-Anwendungen, Seite 8 Entwicklungsstrategien Software modular aufbauen, Seite 19 Mehr selbst entwickeln, Seite 23 Web-Entwicklung Das Web als Social Network, Seite 32 Neu: Wicket 6, Seite 40 Java und Oracle ADF Essential Mobile, Seite 52 D:4,90EURA:5,60EURCH:9,80CHFBenelux:5,80EURISSN2191-6977 iii iii iii iii iJUG Verbund