Lastverteilung (Load Balancing)
Bei der Lastverteilung wird das Problem von vielen gleichzeitigen Anfragen und deren Bearbeitung adressiert. Es sollen mehr Anfragen gleichzeitig bearbeitet werden, indem mehrere X4 Server-Instanzen hinter einem lasterverteilenden System geschalten sind und dadurch eine höhere Rechenleistung erreicht wird. Dies ermöglicht eine hohe, bedarfsgerechte Skalierbarkeit. Es muss jedoch gewährleistet sein, dass die geteilten Daten der X4 Systeme allen Systemen bekannt sind. Hierfür gibt es je nach Anwendungsfall unterschiedliche Szenarien.
Szenario I – Wenige hauptsächlich lesende Datenbankzugriffe
Wenn hauptsächlich Berechnungen in den Prozessen vorhanden sind oder weitere Services angesprochen werden, kann eine Lastverteilung über mehrere X4 Server, die jeweils ihre Systemdatenbank verwalten, und einer weiteren Datenbank, die die gemeinsamen Daten enthält, realisiert werden. Hierbei kann man zwei Ausbaustufen unterscheiden.
Einfach – Direkter Datenbankzugriff

Abb. Direkter Datenbankzugriff
Man kann den Zugriff auf die gemeinsamen Daten direkt über die Zugriffsschicht der Datenbank regeln. Dies ist die einfachste Lösung des Problems und ist für kleine Systeme eine gute Lösung, da die Datenbank selbst nicht ohne weiteres entkoppelt werden kann.
Komplex – Gemeinsamer Zugriff über eine X4 Instanz

Abb. Gemeinsamer Datenbankzugriff über eine X4 Instanz
Möchte man die Datenbank entkoppeln, so bietet es sich an, eine Service-Schicht zwischen die Datenbank und den X4 Servern einzuziehen. Diese kapselt die gemeinsame Datenbank und macht dadurch die Datenhaltungsschicht austauschbar. Dies ist für größere Systeme von Bedeutung, um dort die Wartbarkeit, Testbarkeit und Integrität besser gewährleisten zu können.
Szenario II – Gemeinsamer Zugriff über Message Queue

Abb. Gemeinsamer Zugriff über Message Queue
Eine weitere Möglichkeit, die Datenbank zu entkoppeln, besteht über eine Middleware. Dies ist bei kritischen Anwendungen zu empfehlen, wenn keine Nachrichten zwischen den X4 Servern und dem X4 Server der geteilten Datenbank verloren gehen dürfen. Die Middleware stellt sicher, dass Nachrichten so lange persistent gehalten werden, bis sie von dem Empfänger abgearbeitet wurden.