Was wir zeigen werden
In diesem Artikel zeigen wir, wie man schnell einen layline.io Workflow konfiguriert, um eine REST-API abzufragen, wobei wir die Yahoo Finance API als Beispiel verwenden. Wir werden einen Workflow erstellen, der Yahoo in regelmäßigen Abständen nach Aktienkursen abfragt.
Einrichten des Http-Service
Zuerst starten wir die Web-UI und erstellen ein neues Projekt "sample-http-client-yahoo". Dann erstellen wir ein Http-Service-Asset "Yahoo-Finance-Source".
Was sind Services?
Services in layline.io repräsentieren spezifische Assets, die komplexe Schnittstellendefinitionen kapseln und sie dann anderen Assets als einfache benannte Funktionsaufrufe zur einfachen Ausführung zur Verfügung stellen. REST-API-Definitionen passen zu diesem Muster, ebenso wie beispielsweise Datenbankanweisungen. Zu diesem Zweck bietet layline.io eine Reihe von Service-Assets, die auf die spezifischen Schnittstellentypen ausgerichtet sind, wie Http, JDBC, Aerospike und mehr. In unserem Beispiel werden wir das Http-Service-Asset verwenden, um auf die Yahoo Finance API zuzugreifen.
Die Yahoo Aktienkurse REST-API
Yahoo Finance bietet eine sehr umfassende API, um auf Finanzinformationen börsennotierter Unternehmen zuzugreifen. Für diese Demo gehen wir über Rapid-API, das als Proxy-Dienst fungiert. Wenn Sie Rapid-API nicht kennen, sollten Sie es sich ansehen. Es ist wirklich cool.
Sie können die genaue URL für den Dienst und seine Beschreibung hier nachschlagen und dann nach dem Pfad "market/v2/get-quotes" suchen.
Konfigurieren des Http-Service
Mit dem Configuration Center erstellen wir ein Http-Service-Asset:

Host
Als nächstes definieren wir die generische Hostadresse, unter der die Daten abgerufen werden können. Dies erfordert keine Anmeldedaten, sondern API-Schlüssel, die wir später definieren werden.

Anfragen
Bevor wir Funktionen definieren, stellen wir sicher, dass layline.io die Anfragen und entsprechenden Antworten versteht. Sie können eine beliebige Anzahl von Anfragen definieren. Hier definieren wir nur "GetQuotes", das die Aktienkurse und zugehörige Daten für eine bestimmte Anzahl von Aktiensymbolen abrufen soll. Hier wird auch der Pfad zur Anfrage definiert. Zusätzlich konfigurieren wir die Parameter, die zum Aufrufen der API erforderlich sind (Region und Symbole sowie der RapidAPI-Schlüssel und Host). Wir geben die Werte an, wenn wir das Source Asset im nächsten Schritt definieren.

Wenn wir andere Anfragen verwenden wollten, könnten wir sie einfach hier hinzufügen.
Antwort
Als nächstes definieren wir mögliche Antworten auf unsere Anfrage. Wir erwarten ein JSON-Dokument, das wir in "Quotes" definiert haben. layline.io ist stark typisiert. In unserem Fall ordnen wir die Antwort einfach dem internen "AnyMap"-Typ zu. Zusätzliche Antworten könnten 3xx bis 5xx Fehler sein, die uns ebenfalls interessieren.

Funktionen
Nachdem wir Anfragen und Antworten definiert haben, können wir die abstrakten Funktionen erstellen, die wir intern bereitstellen möchten.
Wir erstellen eine Funktion mit dem Namen "GetQuotes". Sie verweist auf die Anfrage mit demselben Namen, die wir oben erstellt haben, und ordnen mögliche Antworten dieser Anfrage zu ("Quotes").

Wir können jetzt auf die Yahoo Finance API zugreifen, indem wir einfach die Funktion "GetQuotes" aufrufen und die erforderlichen Parameter an sie übergeben. Ein Beispiel dafür werden wir sehen, wenn wir die Service Source unten definieren.
Zugegeben, es ist einiges zu konfigurieren für einen ersten Http-Service. Aber beachten Sie, dass zusätzliche Anfragen an denselben Host sehr schnell hinzugefügt werden können.
Konfigurieren der Service-Source
Wir planen, die API ständig nach den neuesten Börsendaten abzufragen und möchten sie als reguläre Datenquelle im Workflow behandeln. Dafür müssen wir ein Service-Source-Asset definieren. Ein Service-Source-Asset ist ein spezieller Typ von Quelle, der Funktionen verwendet, die in Service-Assets definiert sind, genau wie das, das wir oben definiert haben.

Wir verknüpfen das Http-Service, das wir definiert haben, mit dieser Quelle:

Schließlich richten wir die API-Abfragefrequenz und die tatsächlichen API-Aufrufparameter ein.

Über eine cron-tab-ähnliche Einstellung definieren wir ein Abfrageintervall von 10 Sekunden. Object name bezeichnet den Namen des Objekts, das von jeder Abfrage zurückgegeben wird. Beachten Sie, dass wir dem Objektnamen Datum und Uhrzeit hinzufügen, um jedes Antwortobjekt zu unterscheiden. Wir verwenden einen konstanten Parameter für die Abfrage, was nichts anderes bedeutet, als dass wir fest kodierte Parameter an die Service-Funktion übergeben möchten, anstatt dynamische Parameter. In unserem Beispiel rufen wir die Funktion also immer für dieselben Aktiensymbole auf. Der Constant Type beschreibt den Pfad zur tatsächlichen Service-Funktion, die wir aufrufen möchten, und ihr Anfrageobjekt. Vorerst muss dies manuell eingegeben werden, wird aber bald benutzergeführt sein. Wir geben hier Yahoo.Finance.Functions.GetQuotes.Request ein.
Zuletzt geben wir die Parameter an, die wir an die GetQuotes-Funktion im JSON-Format übergeben möchten. Denken Sie daran, dass wir sie definiert haben, als wir das Http-Service-Asset erstellt haben.
Das war's, wir können jetzt den eigentlichen Workflow erstellen.
Erstellen des Workflows
Wir gehen zur Workflow-UI und richten einen einfachen Workflow mit einem Stream-Input und einem JavaScript-Prozessor ein.

In den Einstellungen für das Service-Input-Asset verknüpfen wir es mit der Http-Source, die wir gerade erstellt haben.

Für den Javascript-Prozessor fügen wir ein sehr einfaches Skript hinzu, das die empfangene Nachricht an das Stream-Protokoll ausgibt. So können wir die Ergebnisse über den Audit Trail in der UI überprüfen. Natürlich würden Sie normalerweise die Ergebnisse nicht an das Protokoll ausgeben, sondern sie im Workflow weiterverarbeiten.

Bereitstellung im Cluster und Ausführung
Wir sind bereit, den Workflow zu testen. Dazu müssen wir ihn in einem Reactive Engine Cluster bereitstellen. Sie können einfach den auf Ihrem Laptop verwenden (einzelner Knoten). Oder wenn Sie einen größeren layline.io-Cluster woanders haben, können Sie ihn dort bereitstellen. Um die Bereitstellung zu starten, wechseln wir zur DEPLOYMENT-Registerkarte des Projekts:

Wir erstellen eine Engine-Konfiguration, um das Projekt bereitzustellen. Dies definiert die Teile des Projekts, die wir bereitstellen möchten. In unserem Beispiel wäre das der eine Workflow, den wir definiert haben, sowie das dazugehörige Environment Asset.
Da wir in den lokalen Cluster bereitstellen möchten, wählen wir "Deploy to Cluster" und dann unsere vordefinierte "Local Cluster"-Konfiguration. Jede Bereitstellung benötigt ein Tag. Wir verwenden "yahoo-quotes-" gefolgt von einem Makro "${build-timestamp}", um die Bereitstellung zu identifizieren. Das Makro wird bei der Bereitstellungsübertragung durch einen Zeitstempel ersetzt. Dies stellt sicher, dass wir immer ein anderes Tag mit jeder Bereitstellung erhalten.
Wir wählen aus, alle Workflows bereitzustellen, die wir erstellt haben (nur einen). Zuletzt starten wir die Übertragung der Bereitstellung, indem wir "TRANSFER DEPLOYMENT TO CLUSTER" klicken (stellen Sie sicher, dass der Cluster, in den Sie bereitstellen, läuft).
Wenn die Bereitstellung erfolgreich war, sollten Sie dies sehen:

Andernfalls wird eine Fehlermeldung angezeigt, die Ihnen hilft, das Problem zu beheben.
Aktivierung der Bereitstellung
Wir sollten jetzt bereit sein, die Bereitstellung zu aktivieren. Dazu wechseln wir zur "CLUSTER"-Registerkarte. Dies gibt uns eine Übersicht über alle "Cluster"-Dinge. Falls Sie mehr als einen Cluster verwalten, stellen Sie sicher, dass Sie den richtigen aus dem Dropdown-Menü oben links ausgewählt haben.

Als Standardbereitstellung festlegen
Wählen Sie "Deployment Storage" aus dem Baum auf der linken Seite. Hier finden wir alle Bereitstellungen, die dem ausgewählten Cluster derzeit bekannt sind. In unserem Beispiel-Screenshot sehen wir im Abschnitt "Deployment Configuration" 1 "DeploymentRoot": Dies ist die grundlegende leere Standardbereitstellung, die immer vorhanden ist. 2 "yahoo-quotes-20221011093550": Dies ist die Bereitstellung, die wir gerade an den Cluster übertragen haben. Um nun die neue Bereitstellung im Cluster zu aktivieren, wählen Sie sie aus und aktivieren Sie das Kontrollkästchen "is the cluster's default deployment".

Zeitplan
Jetzt, da die Bereitstellung im Cluster aktiv ist, müssen wir überprüfen, ob tatsächlich Instanzen des Workflows ausgeführt werden. Wenn dies das erste Mal ist, dass Sie diesen Workflow bereitgestellt haben, lautet die Antwort wahrscheinlich "nein". Lassen Sie uns überprüfen:
- Wählen Sie die Registerkarte "Cluster"
- Wählen Sie den Eintrag "Scheduler Master" im Baum auf der linken Seite

- Wählen Sie im Scheduler-Einstellungsfeld den Scheduler-Knoten im Baum aus
- Stellen Sie als Nächstes sicher, dass die Zielanzahl der Instanzen auf mindestens 1 eingestellt ist. Eine höhere Zahl startet mehr Instanzen desselben Workflows. Innerhalb weniger Sekunden sollten Sie sehen, dass die Instanz gestartet wurde. Dies müssen Sie nur einmal tun. Beim nächsten Mal, wenn Sie den Workflow bereitstellen, merkt sich der Reactive Engine die Anzahl der Instanzen, die Sie von diesem Workflow ausführen möchten. Sie können die Scheduler-Einstellungen, die Sie möchten, auch als Teil einer Bereitstellung definieren. Das ist jedoch für eine andere Präsentation.
Engine-Status
Wechseln Sie zur Registerkarte "Engine". Stellen Sie sicher, dass alle Engine-Kategorien grün sind. Überprüfen Sie auch den Status einzelner Assets im Baum links.

Ergebnisse überprüfen
Sobald Sie den Workflow geplant haben (oben), beginnt er alle paar Sekunden die Yahoo Finance-Schnittstelle nach Ergebnissen abzufragen.
Gehen Sie zur Registerkarte Audit Trail, um die Ergebnisse im Stream-Protokoll im JSON-Format anzuzeigen:

Natürlich ist diese Ausgabe nur zu Demonstrationszwecken. In einer realen Arbeitsumgebung würden Sie diese Daten im Workflow weiterverarbeiten.
Zusammenfassung
Diese Präsentation zeigt, wie Sie einen Http-Client-Workflow im Handumdrehen erstellen können, ohne viel Aufwand. Und Sie erhalten noch viel mehr direkt aus der Box:
- Reaktiv — Nutzt das reaktive Verarbeitungsparadigma. Vollständig auf reaktives Stream-Management im Kern aufgebaut
- Hohe Skalierbarkeit — Skaliert innerhalb einer Engine-Instanz und darüber hinaus über mehrere Engines und verteilte Knoten
- Resilienz — Ausfallsicher in verteilten Umgebungen. Voller 24/7-Betrieb und Upgrade-Fähigkeit
- Automatische Bereitstellung — Geänderte Konfigurationen mit einem Klick bereitstellen
- Echtzeit und Batch — Sowohl Echtzeit- als auch Batch-Datenintegrationen mit derselben Plattform ausführen
- Metriken — Automatische Metrikgenerierung zur Verwendung in Ihrem bevorzugten Überwachungs- und Alarmierungstoolkit (z.B. Prometheus)
Es gibt zu viele Funktionen, um sie hier zu erklären. Für weitere Informationen lesen Sie bitte die Dokumentation oder kontaktieren Sie uns einfach unter hello@layline.io. Danke fürs Lesen!
Ressourcen
| # | Ressource |
|---|---|
| 1 | Github: Sample Http-Client for Yahoo Finance (input test files in the directory _test_files of the Project) |
| # | Dokumentation |
|---|---|
| 1 | Getting Started |
| 2 | Generic Format Asset |
- Lesen Sie mehr über layline.io hier.
- Kontaktieren Sie uns unter hello@layline.io.


