Softwarearchitektur verstehen und entscheiden

Aaron KreisÜber mich
Architekturstile

Broker Pattern

Vermittler zwischen Aufrufern und Anbietern

Die Idee und ihr Nutzen

Das Vergleichsportal einer Versicherung zeigt Kunden Preise für Kfz- und Hausratversicherungen. Die Preise berechnen eigene Programme der Versicherung, ein Kfz-Tarifrechner und ein Hausrat-Tarifrechner, die auf verschiedenen Servern laufen und manchmal umziehen. Statt die Adresse jedes Tarifrechners zu kennen, schickt das Vergleichsportal jede Preisanfrage an ein vermittelndes Programm. Dieses Programm wählt den zuständigen Tarifrechner, leitet die Anfrage an ihn weiter und gibt die Antwort des Tarifrechners an das Vergleichsportal zurück. Das vermittelnde Programm heißt Broker, das englische Wort für Vermittler.

Bausteine: Vergleichsportal: kennt nur den Broker; Broker: wählt den zuständigen Tarifrechner; Kfz-Tarifrechner: läuft auf wechselnden Servern; Hausrat-Tarifrechner: läuft auf wechselnden Servern. Verbindungen: Vergleichsportal — Broker (Preisanfrage); Vergleichsportal — Broker (Preis); Broker — Kfz-Tarifrechner; Broker — Hausrat-Tarifrechner. Das Vergleichsportal kennt nur den Broker; er leitet jede Preisanfrage an den zuständigen Tarifrechner und gibt den Preis zurück.

Wie funktioniert es?

Beim Start meldet sich jeder Tarifrechner beim Broker an. Jeder Tarifrechner nennt dabei die Tarifart, die er berechnen kann, und die Adresse, unter der er erreichbar ist. Der Broker trägt beides in sein Verzeichnis ein. An einem Montagvormittag vergleichen etwa dreimal so viele Kunden wie an anderen Vormittagen im Vergleichsportal Kfz-Tarife. Das Betriebsteam betreibt die Server der Versicherung. Für den Andrang am Montagvormittag startet das Betriebsteam zwei zusätzliche Exemplare des Kfz-Tarifrechners. Die beiden zusätzlichen Exemplare laufen gleichzeitig mit dem ersten und berechnen dieselben Preise. Beide melden sich beim Broker an, sodass nun drei Exemplare des Kfz-Tarifrechners im Verzeichnis des Brokers stehen. Eine Kundin gibt im Vergleichsportal die Angaben zu ihrem Auto und ihre Postleitzahl ein. Das Vergleichsportal schickt dem Broker eine Anfrage nach einem Kfz-Preis mit diesen Angaben. Es nennt nur die Tarifart „Kfz“, keine Adresse eines Tarifrechners. Der Broker schlägt in seinem Verzeichnis nach, welche Exemplare des Kfz-Tarifrechners eingetragen sind, wählt eines der drei Exemplare und leitet die Anfrage an dieses Exemplar weiter. Das gewählte Exemplar des Kfz-Tarifrechners berechnet einen Preis von 612 Euro im Jahr und schickt ihn an den Broker zurück. Der Broker gibt den Preis an das Vergleichsportal weiter, und das Vergleichsportal zeigt ihn der Kundin an. Eine gleichzeitige Hausrat-Anfrage schickt der Broker an den Hausrat-Tarifrechner. Am Abend schaltet das Betriebsteam die beiden zusätzlichen Exemplare wieder ab, und sie melden sich beim Broker ab. Das Vergleichsportal hat den ganzen Tag über dieselbe Adresse benutzt, nämlich die des Brokers.

Das Vergleichsportal ist der Aufrufer, der eine Anfrage stellt. Die Tarifrechner sind die Anbieter, die die Antwort liefern. Nur der Broker kennt die Adressen der Anbieter, und nur der Broker führt das Verzeichnis. Der Broker soll nur vermitteln: Die Berechnung des Kfz-Preises gehört in den Kfz-Tarifrechner. Neben dem Kfz-Tarifrechner und dem Hausrat-Tarifrechner betreibt die Versicherung weitere, etwa einen Tarifrechner für Haftpflichtversicherungen. Auch andere Programme der Versicherung brauchen Preise der Tarifrechner, nämlich das Maklerportal und die App der Versicherung. Maklerportal und App schicken ihre Anfragen ebenfalls an den Broker und nutzen so dasselbe Verzeichnis. Manche Umsetzungen haben beim Aufrufer und beim Anbieter kleine Hilfsprogramme, die die Anfrage für die Übertragung über das Netz verpacken und wieder auspacken. Diese Hilfsprogramme heißen Proxies. Das Vergleichsportal wartet bei jeder Anfrage auf die Antwort des Brokers. Ein Nachrichtenbroker arbeitet anders: Er nimmt Nachrichten an und stellt sie Empfängern zu, ohne dass der Absender auf eine Antwort wartet.

Zieht der Kfz-Tarifrechner auf einen anderen Server um, meldet er dem Broker seine neue Adresse, und das Vergleichsportal muss nichts ändern. Antwortet das gewählte Exemplar eines Tarifrechners nicht, kann der Broker die Anfrage an ein weiteres eingetragenes Exemplar weiterleiten. Ist kein weiteres eingetragen, bleibt dem Broker nur, dem Vergleichsportal einen Fehler zu melden. Der Broker prüft regelmäßig, ob die eingetragenen Anbieter noch erreichbar sind. So wählt der Broker nicht immer wieder ein Exemplar, unter dessen Adresse niemand mehr antwortet.

Broker Pattern: Vermittler zwischen Aufrufern und Anbietern

Broker Pattern: Vermittler zwischen Aufrufern und Anbietern

Wann ist es sinnvoll und wann nicht?

Ein Broker lohnt sich

  • Die Adressen der Anbieter ändern sich häufig. Ohne Broker stehen die Adressen der Tarifrechner fest in der Einstellungsdatei des Vergleichsportals. Zieht ein Tarifrechner auf einen anderen Server um, muss diese Datei geändert werden. Bis das geschieht, scheitern alle Anfragen an die alte Adresse.
  • Die Zahl der Exemplare eines Anbieters ändert sich häufig. Ohne Broker müsste das Vergleichsportal selbst wissen, welche Exemplare des Kfz-Tarifrechners gerade laufen, und entscheiden, welches es fragt. Am Montag hätte das Team des Vergleichsportals dafür die Einstellungen zweimal ändern müssen, am Vormittag und am Abend. Der Broker kann die Kfz-Anfragen außerdem auf die drei angemeldeten Exemplare verteilen.
  • Mehrere Aufrufer sollen nicht jeder für sich wissen müssen, wo die Anbieter laufen. Ohne Broker müssten Vergleichsportal, Maklerportal und App die Adressen der Tarifrechner einzeln pflegen, und die Teams dieser Programme müssten ihre Einstellungen jedes Mal ändern, wenn das Betriebsteam einen Tarifrechner verlegt oder ein Exemplar startet.
  • Das Betriebsteam will alle Preisanfragen in einem einzigen Programm überwachen. Ohne Broker gehen die Anfragen von Vergleichsportal, Maklerportal und App direkt an die einzelnen Tarifrechner, und das Betriebsteam muss die Zahlen jedes Tarifrechners einzeln zusammentragen. Mit Broker überwacht das Betriebsteam alle Preisanfragen im Broker, weil alle Preisanfragen über ihn laufen.
  • Jeder Aufrufer braucht eine Antwort auf seine Anfrage, und welches Exemplar eines Anbieters sie liefert, ist für den Aufrufer gleichgültig.

Ein Broker ist nicht das Richtige

  • Nur das Vergleichsportal fragt Preise ab, und nur ein einziger Tarifrechner liefert sie, dauerhaft auf demselben Server. Der Broker hätte dann nichts zu wählen, denn in seinem Verzeichnis stünde nur ein Eintrag. Stattdessen trägt das Team des Vergleichsportals die Adresse des Tarifrechners in die Einstellungsdatei des Vergleichsportals ein, und das Vergleichsportal ruft den Tarifrechner direkt auf. Der Umweg über den Broker entfällt, und das Betriebsteam muss keinen Broker betreiben.
  • Es gibt sehr viele, sehr kurze Anfragen, und die zusätzliche Zeit für die Vermittlung fällt spürbar ins Gewicht. Dann nutzt jeder Aufrufer Service Discovery: Der Aufrufer erfragt bei einem Verzeichnis nur die aktuelle Adresse eines Anbieters und ruft den Anbieter danach direkt auf. Jede Anfrage spart so den Umweg über den Broker. Zwischen den Exemplaren eines Tarifrechners wählt dann jeder Aufrufer selbst, das Vergleichsportal am Montag also zwischen den drei Exemplaren des Kfz-Tarifrechners.
  • Nur die Zahl der Exemplare eines einzelnen Tarifrechners ändert sich, etwa beim Kfz-Tarifrechner am Montag, und kein Tarifrechner zieht auf einen anderen Server um. Ein Verzeichnis für alle Tarifrechner braucht es dafür nicht, nur die Verteilung der Kfz-Anfragen auf die Exemplare. Dann richtet das Betriebsteam für den Kfz-Tarifrechner einen Lastverteiler ein, ein Programm, das unter einer festen Adresse jede Anfrage annimmt und an eines der Exemplare weiterleitet. Das heißt Load Balancing. Die Aufrufer schicken ihre Kfz-Anfragen an die feste Adresse des Lastverteilers. Ein Broker mit einem Verzeichnis für alle Tarifrechner entfällt.
  • Der Absender braucht keine Antwort und will Nachrichten nur zustellen lassen. Beim Broker wartet der Aufrufer dagegen bei jeder Anfrage auf die Antwort. Stattdessen übergibt der Absender seine Nachrichten einem Nachrichtenbroker, der sie den Empfängern zustellt. Das heißt Messaging. Der Absender muss nicht warten, bis ein Empfänger die Nachricht verarbeitet hat.

Nachteile und typische Fehler

Jede Anfrage läuft über den Broker. Der Broker muss deshalb so viele Anfragen gleichzeitig weiterleiten können, wie alle Aufrufer zusammen schicken, und auch beim Ausfall eines Servers erreichbar bleiben. Das gelingt zum Beispiel, indem mehrere Exemplare des Brokers laufen. Diese Exemplare müssen dasselbe Verzeichnis kennen, damit jedes von ihnen jede Anfrage weiterleiten kann. Der zusätzliche Umweg über den Broker verlängert die Antwortzeit jeder Anfrage. Alle Aufrufer hängen vom Broker ab: Vergleichsportal, Maklerportal und App können nur so zuverlässig Preise anzeigen, wie der Broker erreichbar ist. Das Betriebsteam muss deshalb den Broker selbst, sein Verzeichnis und die regelmäßige Prüfung der eingetragenen Anbieter betreiben und überwachen.

Typische Fehler und woran man sie erkennt:

  • Verwaister Eintrag: Ein Tarifrechner stürzt ab, ohne sich abzumelden. Er steht dann noch im Verzeichnis, und der Broker schickt Anfragen an eine Adresse, unter der niemand antwortet. Erkennbar ist das an Kfz-Anfragen, die erst nach einer Wartezeit scheitern, während andere Exemplare des Kfz-Tarifrechners frei sind.
  • Preisberechnung im Broker: Der Broker berechnet Preise selbst. Dann muss er bei jeder Tarifänderung angepasst werden, und ein Fehler dabei kann auch Hausrat- und Haftpflichtanfragen stören, obwohl sich deren Tarife nicht geändert haben. Erkennbar ist das, wenn eine Tarifänderung eine neue Version des Brokers verlangt.
  • Nur ein Broker: Es läuft nur ein Exemplar des Brokers. Fällt es aus, erreicht das Vergleichsportal keinen Tarifrechner mehr, obwohl alle Tarifrechner laufen. Erkennbar ist das an Fehlern für alle Tarifarten zur selben Zeit.
  • Falsch angemeldete Tarifart: Ein Tarifrechner meldet sich mit der falschen Tarifart an, zum Beispiel als „Kfz“ statt „Hausrat“. Der Broker leitet ihm dann Anfragen zu, die dieser Tarifrechner nicht berechnen kann. Erkennbar ist das an Fehlermeldungen eines einzelnen Exemplars, das immer wieder Anfragen einer fremden Tarifart erhält.

Weiterführend

Verwandte Ansätze

  • Enterprise Service Bus: verbindet die Vermittlung mit weiteren Aufgaben, etwa der Umwandlung von Datenformaten.
  • Remote Procedure Call: beschreibt einen Aufruf über das Netz, bei dem der Aufrufer auf die Antwort wartet. Ein Broker kann solche Aufrufe vermitteln.

Werkzeuge und Umsetzungen

Die folgenden Werkzeuge vermitteln Anfragen zwischen Aufrufer und Anbieter. Reine Nachrichtenbroker wie RabbitMQ stellen dagegen vor allem Nachrichten an Empfänger zu und entsprechen nicht dem hier beschriebenen Vermittler für Anfragen mit Antwort.

  • NATS: Vermittlungssystem für Nachrichten, das auch Anfragen mit Antwort unterstützt. Anbieter melden sich für ein Thema an, zum Beispiel „tarif.kfz“, und NATS stellt jede Anfrage zu diesem Thema einem der angemeldeten Anbieter zu.
  • omniORB: vermittelt Aufrufe zwischen Programmen auf verschiedenen Rechnern nach dem älteren Standard CORBA. omniORB entspricht dem Aufbau mit Broker und Proxies besonders genau.

Quellen