Zum Inhalt springen

Effektive Ports und URL-Umschreibung

Zwei der lästigsten Dinge beim manuellen Starten mehrerer Micros —kollidierende Ports und URLs, die neu gezeigt werden müssen— löst MicroLab von selbst, und zwar ohne den Code der Repos zu verändern.

Fast alle Micros deklarieren denselben Port (typischerweise 8080). Wenn Sie mehrere starten, kollidieren sie. MicroLab bildet die Ports zur Laufzeit um: Jeder Micro erhält einen freien effektiven Port, und das ist der, den er wirklich verwendet. Der im Manifest deklarierte Port kann sich beim Start ändern; in den Szenario-Ansichten sehen Sie den effektiven Port jedes Micros.

Wenn ein Micro einen anderen Core aufruft, hängt die verwendete URL davon ab, wie Sie diese Abhängigkeit aufgelöst haben (local, Cloud oder Mock). MicroLab berechnet die effektive URL und injiziert sie als Konfiguration beim Start: Systemeigenschaften in der JVM-Familie (-D…), Umgebungsvariablen in Node/Python. Das Repo wird nicht berührt; alles geschieht durch Injektion.

Die korrekte Adresse desselben Dienstes hängt davon ab, von wo er aufgerufen wird: Ein nativer Micro erreicht ihn über localhost:<Port>, aber einer im Container braucht die interne Adresse des Docker-Netzwerks. Das nennt man Perspektive: MicroLab löst die Hosts mit der Perspektive jedes Clients auf (Maschine oder Container), damit die Kommunikation im gemischten Modus funktioniert.

Aus demselben Grund wird Kafka mit einem doppelten Listener konfiguriert: Der Advertised Listener, den es ankündigt, muss von dort erreichbar sein, wo jeder Client läuft.