Tutorial: Microservices-Kommunikation mithilfe des Dapr-Dienstaufrufs
In diesem Tutorial gehen Sie wie folgt vor:
- Erstellen und führen Sie lokal zwei Microservices aus, die sicher mithilfe von auto-mTLS kommunizieren und zuverlässig integrierte Wiederholungen über die Dienstaufruf-API von Dapr verwenden.
- 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 von Dapr in einer Schleife verwendet, um eine Anforderung an 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 Dapr-Beispielanwendung 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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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.
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung mithilfe von Azure-Container-Apps bereit azd
.
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 Dapr-Anwendung in 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 Dapr-Beispielanwendung 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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung mithilfe von Azure-Container-Apps bereitazd
.
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 Dapr-Anwendung in 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 Dapr-Beispielanwendung 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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
Führen Sie zunächst den order-processor
Anrufdienst mit Dapr 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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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.
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung mithilfe von Azure-Container-Apps bereitazd
.
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 Dapr-Anwendung in 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
.