Lastausgleich bei Warteschlangenzielen
Wenn Sie einem Service Integration Bus einen Server-Cluster hinzufügen und eine oder mehrere Messaging-Engines im Cluster implementieren, können Sie Skalierbarkeit für das Busmember des Typs "Cluster" konfigurieren. Die Messaging-Workload der im Cluster implementierten Warteschlangenziele wird auf die Messaging-Engines im Busmember des Typs "Cluster" verteilt.
Der Artikel Konfigurationen für hohe Verfügbarkeit und Lastausgleich für die Serviceintegration enthält weitere Informationen zum Konfigurieren von Messaging-Engines für die Verteilung der Arbeitslast.
- Wenn nur eine Messaging-Engine im Cluster vorhanden ist, wird das Ziel von dieser Messaging-Engine lokalisiert. Das Ziel wird nicht partitioniert.
- Wenn der Cluster mehrere Messaging-Engines enthält, wird das Ziel auf alle Messaging-Engines im Cluster verteilt (partitioniert). Jede Messaging-Engine bearbeitet einen Teil der Nachrichten für das Ziel.
Nachrichten an ein partitioniertes Warteschlangenziel senden
Normalerweise erstellen Sie ein skalierbares Busmember des Typs "Cluster" und partitionieren ein Warteschlangenziel, wenn die Nachrichtenverarbeitungslast für die Warteschlange nicht von einem einzigen Server unterstützt werden kann. Für eine effektive Nutzung einer partitionierten Warteschlange sind mehrere Konsumenten mit jeweils mindestens einem Konsumenten pro Partition erforderlich. Typischerweise kommt ein Cluster mit nachrichtengesteuerten Beans (MDBs) zum Einsatz. Im Artikel So stellen nachrichtengesteuerte Beans eine Verbindung in einem Cluster her wird ausführlich beschrieben, wie eine MDB von einem Clusterziel konsumiert.
- Standardverhalten des Messaging-Systems, wenn die erzeugende Anwendung mit einer Messaging-Engine eines Busmembers des Typs "Cluster" verbunden ist, das das Warteschlangenziel enthält
Standardmäßig zieht es die erzeugende Anwendung vor, alle Nachrichten an den lokalen Warteschlangenpunkt zu senden. Dieses Verhalten maximiert den Durchsatz bei der Nachrichtenzustellung durch Minimierung des Übertragungswegs der Nachricht an den Warteschlangenpunkt.
Abbildung 1. Standardverhalten: Nachrichten werden an den lokalen Warteschlangenpunkt gesendetWenn der lokale Warteschlangenpunkt nicht verfügbar ist, werden die Nachrichten so verarbeitet, als wäre kein lokaler Warteschlangenpunkt vorhanden. Ein Warteschlangenpunkt ist für neue Nachrichten nicht verfügbar, wenn- die Messaging-Engine, die Eigner des Warteschlangenpunkts ist, nicht verfügbar ist (z. B., weil die Messaging-Engine gestoppt ist),
- der Warteschlangenpunkt den oberen Nachrichtenschwellenwert erreicht,
- die Funktionalität zum Senden von Nachrichten an der Warteschlangenpunkt am Warteschlangenpunkt inaktiviert wurde.
- Standardverhalten des Messaging-Systems, wenn die erzeugende Anwendung mit einer Messaging-Engine eines Busmembers verbunden ist, das das Warteschlangenziel nicht enthält
Standardmäßig verteilt das Messaging-System die Nachrichten auf die verfügbaren Warteschlangenpunkte.
In dieser Abbildung ist eine erzeugende Anwendung mit einer Messaging-Engine eines Busmembers verbunden, das das Warteschlangenziel nicht enthält, und ihre Nachrichten werden auf die verfügbaren Warteschlangenpunkte verteilt.
Abbildung 2. Standardverhalten: Nachrichten werden auf alle Warteschlangenpunkte verteilt
- Konfigurierbares Verhalten, wenn die erzeugende Anwendung mit einer Messaging-Engine eines Busmembers verbunden ist, das das Warteschlangenziel enthält
Wenn alle Nachrichten der erzeugenden Anwendung auf alle Warteschlangenpunkte eines Warteschlangenziels verteilt werden sollen, können Sie die Standardkonfigurationsoption Lokalen Warteschlangenpunkt bevorzugen im Nachrichtenerzeuger inaktivieren. Diese Option ist für JMS-Nachrichtenerzeuger und Nachrichten verfügbar, die von fremden Busverbindungen eingehen, die WebSphere Application Server Version 7.0 oder höher verwenden.
In dieser Abbildung ist eine erzeugende Anwendung ist mit einer Messaging-Engine eines Busmembers verbunden, das das Warteschlangenziel enthält. In der erzeugenden Anwendung ist die Option "Lokalen Warteschlangenpunkt bevorzugen" inaktiviert. Die Nachrichten der Anwendung werden auf alle Warteschlangenpunkte verteilt.
Abbildung 3. Option "Lokalen Warteschlangenpunkt bevorzugen" inaktivieren: Nachrichten werden auf alle Warteschlangenpunkte verteiltWenn jedoch Verbindungen mehrerer erzeugender Anwendungen auf alle Messaging-Engines im Busmember verteilt werden, sollten Sie aus Leistungsgründen das Verhalten Lokalen Warteschlangenpunkt bevorzugen beibehalten. Die Gründe hierfür sind, dass beim Standardverhalten- Nachrichten von allen erzeugenden Anwendungen auf alle Warteschlangenpunkte verteilt werden,
- die Notwendigkeit, Nachrichten von der verbundenen Messaging-Engine an eine andere Messaging-Engine in demselben Busmember des Typs "Cluster" zu senden, minimiert wird.
- Konfigurierbares Verhalten, wenn die erzeugende Anwendung mit einer Messaging-Engine in einem Busmember des Typs "Cluster" verbunden ist, das das Warteschlangenziel nicht enthält
Wenn alle Nachrichten, die in einer einzelnen Sitzung des Anwendungserzeugers erzeugt werden, an denselben Warteschlangenpunkt gesendet werden sollen, können Sie die Nachrichtenaffinität konfigurieren. In diesem Fall werden die Nachrichten nicht auf mehrere Warteschlangenpunkte verteilt.
Sie können die Nachrichtenaffinität für eine Anwendung konfigurieren, wenn ganze Nachrichtensätze an denselben Warteschlangenpunkt gesendet werden sollen, damit sie nacheinander von einer einzigen Instanz eines Konsumenten verarbeitet werden. Das System wählt den Warteschlangenpunkt, an den alle Nachrichten gesendet werden sollen, basierend auf der Einstellung der Konfigurationsoption Lokalen Warteschlangenpunkt bevorzugen für diesen Anwendungserzeuger aus. Diese Option ist für JMS-Nachrichtenerzeuger und Nachrichten verfügbar, die von fremden Busverbindungen eingehen, die WebSphere Application Server Version 7.0 oder höher verwenden.
In dieser Abbildung stellt eine erzeugende Anwendung eine Verbindung zu einer Messaging-Engine eines Busmembers her, das das Warteschlangenziel nicht enthält. In der erzeugenden Anwendung ist die Nachrichtenaffinität konfiguriert. Alle Nachrichten werden an einen einzigen Warteschlangenpunkt gesendet.
Abbildung 4. Nachrichtenaffinität: Alle erzeugten Nachrichten werden an denselben Warteschlangenpunkt gesendetWenn der ausgewählte Warteschlangenpunkt nicht verfügbar ist, werden alle weiteren Nachrichten, die von dieser Anwendung gesendet werden, für die Übertragung an den ausgewählten Warteschlangenpunkt in eine Warteschlange gestellt, oder die Sendeoperation wird zurückgewiesen. Dieses Verhalten entspricht dem Senden von Nachrichten an ein Warteschlangenziel mit einem einzigen Warteschlangenpunkt.
Nachrichten von einem partitionierten Warteschlangenziel konsumieren
Beim Erstellen einer Konsumentensitzung wird der Konsument an eine Partition des Ziels gebunden. Wenn der Konsument mit einer Messaging-Engine verbunden ist, die eine lokale Partition des Ziels besitzt, wird der Konsument an diese Partition gebunden. Sollte der Konsument mit einer Messaging-Engine verbunden sein, die keine Partition des Ziels besitzt, wird der Konsument an eine Partition in einer anderen Messaging-Engine gebunden, die dynamisch vom Workload Manager ausgewählt wird. Nach dem Festlegen einer Bindung kann ein Konsument nur Nachrichten von der gebundenen Partition empfangen. Wenn die Partition, an die ein Konsument gebunden ist, keine Nachrichten hat, empfängt der Konsument standardmäßig keine Nachrichten von anderen Partitionen, selbst wenn diese Partitionen Nachrichten enthalten.
Wenn Sie ein partitioniertes Ziel in einem Cluster konfigurieren, der keine lokalen Konsumenten hat, muss mindestens ein Konsument für jede Partition des Ziels vorhanden sein, damit gewährleistet ist, dass alle Nachrichten konsumiert werden. Sie erreichen dies, indem Sie einzelne Konsumenten so konfigurieren, dass sie eine Verbindung zu bestimmten Messaging-Engines herstellen, die einen Warteschlangenpunkt besitzen. Nachrichtengesteuerte Beans (MDB, Message-Driven Beans) sind ein bestimmter Typ von Nachrichtenkonsument. Einzelheiten zu ihrem Verhalten beim Konsum von einem partitionierten Ziel finden Sie im Artikel So stellen nachrichtengesteuerte Beans eine Verbindung in einem Cluster her.
Wenn ein Konsument Nachrichten von allen verfügbaren Warteschlangenpunkten eines Ziels empfangen soll, können Sie den Nachrichtenkonsumenten konfigurieren.
Wenn es sehr viele kleine Nachrichten Nachrichten gibt und die MDBs nur wenige Verarbeitungsoperationen durchführen, können Sie für Lastausgleich aktivierte Messaging-Engines mit partitionierten Warteschlangen verwenden, wie es in diesem Artikel beschrieben wird. Führen die MDBs jedoch für eine geringere Anzahl an Nachrichten mehr Verarbeitungsoperationen durch, benötigen Sie unter Umständen nur eine einzige Messaging-Engine, aber Sie müssen die MDBs in möglichst vielen Servern implementieren, unabhängig davon, ob diese Server Messaging-Engines haben oder nicht und selbst wenn diese Server nicht alle zu derselben Zelle gehören. Eine typische Situation ist die Aktualisierung einer Benutzerdatenbank durch MDBs. Einzelheiten zum Konfigurieren der MDB-Implementierung auf mehreren Servern finden Sie im Artikel MDB-Regulierung für den Standard-Messaging-Provider konfigurieren.
- Standardverhalten des Messaging-Systems, wenn ein Konsument von einem partitionierten Ziel konsumiert
Wenn eine Sitzung für eine konsumierende Anwendung erstellt wird, wird diese einem der Warteschlangenpunkte des Warteschlangenziels zugeordnet. Wenn das Warteschlangenziel mehrere Warteschlangenpunkte hat, wählt das System einen aus. Standardmäßig bevorzugt das Messaging-System, den Konsumenten dem lokalen Warteschlangenpunkt in der verbundenen Messaging-Engine zuzuordnen. Wenn kein lokaler Warteschlangenpunkt in der verbundenen Messaging-Engine verfügbar ist, wählt das System unter Verwendung des Workload-Managers von WebSphere Application Server, der einen gewichteten Umlaufalgorithmus verwendet, eine andere Warteschlange aus.
Das Standardverhalten ist darauf ausgerichtet, den Durchsatz beim Nachrichtenkonsum von Warteschlangenpunkten durch Begrenzung der für den Konsumenten verfügbaren Nachrichten auf die Nachrichten am zugeordneten Warteschlangenpunkt zu maximieren. Der Konsument kann keine Nachrichten von anderen Warteschlangenpunkten konsumieren, selbst wenn an dem ihm zugeordneten Warteschlangenpunkt keine Nachrichten vorhanden sind, aber an den anderen Warteschlangenpunkten schon.
In dieser Abbildung ist eine konsumierende Anwendung mit einer Messaging-Engine ohne lokalen Warteschlangenpunkt verbunden. Es werden nur Nachrichten von dem einen einzigen zugeordneten Warteschlangenpunkt konsumiert.
Abbildung 5. Standardverhalten: Es werden nur Nachrichten vom zugeordneten Warteschlangenpunkt konsumiert
- Konfigurierbares Verhalten des Messaging-Systems, wenn ein Konsument von einem partitionierten Ziel konsumiert
Sie können einen Nachrichtenkonsumenten so konfigurieren, dass der zugehörige Warteschlangenpunkt Nachrichten von allen verfügbaren Warteschlangenpunkten eines Ziels erfasst und sie für den Konsumenten sichtbar macht.
Sie können die Nachrichtenerfassung konfigurieren, wenn ein Konsument eine partitionierte Warteschlange als Warteschlange behandeln soll, die nicht partitioniert ist. Die Erfassung von Nachrichten von mehreren Warteschlangenpunkten ist jedoch erheblich langsamer als der Konsum von einem einzigen Warteschlangenpunkt. Rekonfigurieren Sie deshalb, sofern möglich, das Ziel mit einem einzigen Warteschlangenpunkt, oder verwenden Sie ein Aliasziel, um Nachrichtenerzeuger und -konsumenten auf einen einzigen Warteschlangenpunkt zu beschränken. Wenn die Skalierbarkeit mehrerer Warteschlangenpunkte erforderlich ist und Leistung ein wichtiger Faktor ist, sollten Sie alternative Lösungen für die Erfassung von Nachrichten in Betracht ziehen.
Bei der Betriebsart Nachrichtenerfassung sieht der Konsument die Nachrichten möglicherweise nicht in der Reihenfolge, in der sie an den Warteschlangenpunkten gehalten werden. Deshalb wird die Nachrichtenreihenfolge nicht verwaltet.
Diese Option ist für JMS-Nachrichtenerzeuger und Nachrichten verfügbar, die von fremden Busverbindungen eingehen, die WebSphere Application Server Version 7.0 oder höher verwenden.
In dieser Abbildung stellt eine konsumierende Anwendung eine Verbindung zu einer Messaging-Engine ohne lokalen Warteschlangenpunkt her. In der konsumierenden Anwendung ist die Nachrichtenerfassung aktiviert. Der zugeordnete Warteschlangenpunkt erfasst Nachrichten von allen verfügbaren Warteschlangenpunkten eines Ziels und macht sie für den Konsumenten verfügbar.
Abbildung 6. Nachrichtenerfassung: Nachrichtenkonsum von allen Warteschlangenpunkten