Tutorial: Microservices-Kommunikation mithilfe des Dapr-Dienstaufrufs
In diesem Tutorial werden zwei Microservices erstellen und ausführen, die mithilfe von auto-mTLS sicher kommunizieren und zuverlässig integrierte Wiederholungen über die Dienstaufruf-API von Dapr verwenden. Sie werden folgende Aufgaben durchführen:
- Lokales Ausführen der Anwendung
- Stellen Sie die Anwendung über die Azure Developer CLI mit der bereitgestellten Bicep für die Azure-Container-Apps bereit.
Das Projekt für eine Vorlage eines Dienstaufrufs umfasst:
- Ein
checkout
-Dienst, der die HTTP-Proxyfunktion in einer Schleife verwendet, um eine Anforderung für denorder-processor
-Dienst aufzurufen. - Ein
order-processor
-Dienst, der die Anforderung vomcheckout
-Dienst empfängt.
Voraussetzungen
- Installieren Sie die Azure Developer CLI
- Installieren und initialisieren Sie Dapr
- Docker Desktop
- Git
Führen Sie die Node.js-Anwendungen lokal aus
Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst die order-processor
Dienste lokal checkout
mit Dapr aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendungen auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-nodejs.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-nodejs
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst denorder-processor
Dienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
npm install
Führen Sie den Dienst
order-processor
aus.dapr run --app-port 5001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start
Navigieren Sie in einem neuen Terminalfenster, vom Stammverzeichnis des Beispiels zum
checkout
Dienst des Anrufers.cd checkout
Installieren Sie die Abhängigkeiten.
npm install
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- npm start
Erwartete Ausgabe
In beiden Terminals ruft der
checkout
Dienst Aufträge an denorder-processor
Dienst in einer Schleife ab.checkout
Output== APP == Order passed: {"orderId":1} == APP == Order passed: {"orderId":2} == APP == Order passed: {"orderId":3} == APP == Order passed: {"orderId":4} == APP == Order passed: {"orderId":5} == APP == Order passed: {"orderId":6} == APP == Order passed: {"orderId":7} == APP == Order passed: {"orderId":8} == APP == Order passed: {"orderId":9} == APP == Order passed: {"orderId":10} == APP == Order passed: {"orderId":11} == APP == Order passed: {"orderId":12} == APP == Order passed: {"orderId":13} == APP == Order passed: {"orderId":14} == APP == Order passed: {"orderId":15} == APP == Order passed: {"orderId":16} == APP == Order passed: {"orderId":17} == APP == Order passed: {"orderId":18} == APP == Order passed: {"orderId":19} == APP == Order passed: {"orderId":20}
order-processor
Output== APP == Order received: { orderId: 1 } == APP == Order received: { orderId: 2 } == APP == Order received: { orderId: 3 } == APP == Order received: { orderId: 4 } == APP == Order received: { orderId: 5 } == APP == Order received: { orderId: 6 } == APP == Order received: { orderId: 7 } == APP == Order received: { orderId: 8 } == APP == Order received: { orderId: 9 } == APP == Order received: { orderId: 10 } == APP == Order received: { orderId: 11 } == APP == Order received: { orderId: 12 } == APP == Order received: { orderId: 13 } == APP == Order received: { orderId: 14 } == APP == Order received: { orderId: 15 } == APP == Order received: { orderId: 16 } == APP == Order received: { orderId: 17 } == APP == Order received: { orderId: 18 } == APP == Order received: { orderId: 19 } == APP == Order received: { orderId: 20 }
Drücken Sie Cmd/STRG + C auf beiden Terminals, um den Dienst-zu-Dienst-Aufruf zu verlassen.
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-nodejs
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
Parameter BESCHREIBUNG Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde. Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. Nach Abschluss des
azd up
Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
Verzeichnis mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die die von derazd
Vorlage verwendeten Bicep-Module enthält
- Stellt den Code mithilfe von
azd deploy
bereit
Erwartete Ausgabe
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-order-processor-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/ (✓) Done: Deploying service worker SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Bestellungen an den order-processor
Dienst weiterleitet.
Kopieren Sie den Namen der
checkout
Container-App aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Vom Portal aus können Sie die voll funktionsfähige App durchsuchen.
Führen Sie die Python-Anwendungen lokal aus
Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst die order-processor
Dienste lokal checkout
mit Dapr aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendungen auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-python.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-python
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst denorder-processor
Dienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
pip3 install -r requirements.txt
Führen Sie den Dienst
order-processor
aus.dapr run --app-port 8001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- python3 app.py
Navigieren Sie in einem neuen Terminalfenster, vom Stammverzeichnis des Beispiels zum
checkout
Dienst des Anrufers.cd checkout
Installieren Sie die Abhängigkeiten.
pip3 install -r requirements.txt
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- python3 app.py
Erwartete Ausgabe
In beiden Terminals ruft der
checkout
Dienst Aufträge an denorder-processor
Dienst in einer Schleife ab.checkout
Output== APP == Order passed: {"orderId":1} == APP == Order passed: {"orderId":2} == APP == Order passed: {"orderId":3} == APP == Order passed: {"orderId":4} == APP == Order passed: {"orderId":5} == APP == Order passed: {"orderId":6} == APP == Order passed: {"orderId":7} == APP == Order passed: {"orderId":8} == APP == Order passed: {"orderId":9} == APP == Order passed: {"orderId":10} == APP == Order passed: {"orderId":11} == APP == Order passed: {"orderId":12} == APP == Order passed: {"orderId":13} == APP == Order passed: {"orderId":14} == APP == Order passed: {"orderId":15} == APP == Order passed: {"orderId":16} == APP == Order passed: {"orderId":17} == APP == Order passed: {"orderId":18} == APP == Order passed: {"orderId":19} == APP == Order passed: {"orderId":20}
order-processor
Output== APP == Order received: { orderId: 1 } == APP == Order received: { orderId: 2 } == APP == Order received: { orderId: 3 } == APP == Order received: { orderId: 4 } == APP == Order received: { orderId: 5 } == APP == Order received: { orderId: 6 } == APP == Order received: { orderId: 7 } == APP == Order received: { orderId: 8 } == APP == Order received: { orderId: 9 } == APP == Order received: { orderId: 10 } == APP == Order received: { orderId: 11 } == APP == Order received: { orderId: 12 } == APP == Order received: { orderId: 13 } == APP == Order received: { orderId: 14 } == APP == Order received: { orderId: 15 } == APP == Order received: { orderId: 16 } == APP == Order received: { orderId: 17 } == APP == Order received: { orderId: 18 } == APP == Order received: { orderId: 19 } == APP == Order received: { orderId: 20 }
Drücken Sie Cmd/STRG + C auf beiden Terminals, um den Dienst-zu-Dienst-Aufruf zu verlassen
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-python
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
Parameter BESCHREIBUNG Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde. Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. Nach Abschluss des
azd up
Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
Verzeichnis mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die die von derazd
Vorlage verwendeten Bicep-Module enthält
- Stellt den Code mithilfe von
azd deploy
bereit
Erwartete Ausgabe
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-order-processor-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/ (✓) Done: Deploying service worker SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Bestellungen an den order-processor
Dienst weiterleitet.
Kopieren Sie den Namen der
checkout
Container-App aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Vom Portal aus können Sie die voll funktionsfähige App durchsuchen.
Lokales Ausführen der .NET-Anwendungen
Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst die order-processor
Dienste lokal checkout
mit Dapr aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendungen auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-csharp.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-csharp
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst den order-processor
-Anrufdienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
dotnet build
Führen Sie den Dienst
order-processor
aus.dapr run --app-port 7001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- dotnet run
Navigieren Sie in einem neuen Terminalfenster, vom Stammverzeichnis des Beispiels zum
checkout
Dienst des Anrufers.cd checkout
Installieren Sie die Abhängigkeiten.
dotnet build
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- dotnet run
Erwartete Ausgabe
In beiden Terminals ruft der
checkout
Dienst Aufträge an denorder-processor
Dienst in einer Schleife ab.checkout
Output== APP == Order passed: {"orderId":1} == APP == Order passed: {"orderId":2} == APP == Order passed: {"orderId":3} == APP == Order passed: {"orderId":4} == APP == Order passed: {"orderId":5} == APP == Order passed: {"orderId":6} == APP == Order passed: {"orderId":7} == APP == Order passed: {"orderId":8} == APP == Order passed: {"orderId":9} == APP == Order passed: {"orderId":10} == APP == Order passed: {"orderId":11} == APP == Order passed: {"orderId":12} == APP == Order passed: {"orderId":13} == APP == Order passed: {"orderId":14} == APP == Order passed: {"orderId":15} == APP == Order passed: {"orderId":16} == APP == Order passed: {"orderId":17} == APP == Order passed: {"orderId":18} == APP == Order passed: {"orderId":19} == APP == Order passed: {"orderId":20}
order-processor
Output== APP == Order received: { orderId: 1 } == APP == Order received: { orderId: 2 } == APP == Order received: { orderId: 3 } == APP == Order received: { orderId: 4 } == APP == Order received: { orderId: 5 } == APP == Order received: { orderId: 6 } == APP == Order received: { orderId: 7 } == APP == Order received: { orderId: 8 } == APP == Order received: { orderId: 9 } == APP == Order received: { orderId: 10 } == APP == Order received: { orderId: 11 } == APP == Order received: { orderId: 12 } == APP == Order received: { orderId: 13 } == APP == Order received: { orderId: 14 } == APP == Order received: { orderId: 15 } == APP == Order received: { orderId: 16 } == APP == Order received: { orderId: 17 } == APP == Order received: { orderId: 18 } == APP == Order received: { orderId: 19 } == APP == Order received: { orderId: 20 }
Drücken Sie Cmd/STRG + C auf beiden Terminals, um den Dienst-zu-Dienst-Aufruf zu verlassen.
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd svc-invoke-dapr-csharp
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
Parameter BESCHREIBUNG Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde. Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. Nach Abschluss des
azd up
Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
Verzeichnis mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die die von derazd
Vorlage verwendeten Bicep-Module enthält
- Stellt den Code mithilfe von
azd deploy
bereit
Erwartete Ausgabe
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-order-processor-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/ (✓) Done: Deploying service worker SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Bestellungen an den order-processor
Dienst weiterleitet.
Kopieren Sie den Namen der
checkout
Container-App aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Vom Portal aus können Sie die voll funktionsfähige App durchsuchen.
Bereinigen von Ressourcen
Wenn Sie diese Anwendung nicht weiterhin verwenden werden, löschen Sie die Azure-Ressourcen, die Sie mit dem folgenden Befehl bereitgestellt haben:
azd down
Nächste Schritte
- Erfahren Sie mehr über die Bereitstellung von Dapr-Anwendungen in Azure-Container-Apps.
- Aktivieren der Tokenauthentifizierung für Dapr-Anforderungen
- Erfahren Sie mehr über die Azure Developer CLI und machen Sie Ihre Anwendungen kompatibel mit
azd
.