Självstudie: Kommunikation med mikrotjänster med dapr-tjänstanrop

I den här självstudien skapar och kör du två mikrotjänster som kommunicerar säkert med hjälp av auto-mTLS och tillförlitligt med hjälp av inbyggda återförsök via DAPR-tjänstens anrops-API. Du kommer att:

  • Köra appen lokalt.
  • Distribuera programmet till Azure Container Apps via Azure Developer CLI med den angivna Bicep.

Exempelprojektet för tjänstanrop omfattar:

  1. En checkout tjänst som använder HTTP-proxying i en loop för att anropa en begäran om order-processor tjänsten.
  2. En order-processor tjänst som tar emot begäran från checkout tjänsten.

Diagram över tjänstanropstjänster.

Förutsättningar

Kör Node.js program lokalt

Innan du distribuerar programmet till Azure Container Apps börjar du med att köra order-processor tjänsterna och checkout lokalt med Dapr.

Förbereda projektet

  1. Klona exempelprogrammen till den lokala datorn.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-nodejs.git
    
  2. Navigera till exemplets rotkatalog.

    cd svc-invoke-dapr-nodejs
    

Kör programmen med Dapr CLI

Börja med att order-processor köra tjänsten.

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    npm install
    
  3. order-processor Kör tjänsten.

    dapr run --app-port 5001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start
    
  4. I ett nytt terminalfönster går du till checkout anropartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    npm install
    
  6. checkout Kör tjänsten.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- npm start
    

    Förväntad utdata

    I båda terminalerna checkout anropar tjänsten beställningar till order-processor tjänsten i en loop.

    checkout utdata:

    == 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 utdata:

    == 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 }
    
  7. Tryck på Cmd/Ctrl + C i båda terminalerna för att avsluta tjänst-till-tjänst-anropet.

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

cd svc-invoke-dapr-nodejs

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure Portal länkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure Portal. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure Portal kontrollerar du att checkout tjänsten skickar beställningar till order-processor tjänsten.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure Portal och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure Portal.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure Portal.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure Portal.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure Portal.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.

Köra Python-programmen lokalt

Innan du distribuerar programmet till Azure Container Apps börjar du med att köra order-processor tjänsterna och checkout lokalt med Dapr.

Förbereda projektet

  1. Klona exempelprogrammen till den lokala datorn.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-python.git
    
  2. Navigera till exemplets rotkatalog.

    cd svc-invoke-dapr-python
    

Kör programmen med Dapr CLI

Börja med att order-processor köra tjänsten.

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    pip3 install -r requirements.txt
    
  3. order-processor Kör tjänsten.

    dapr run --app-port 8001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- python3 app.py
    
  4. I ett nytt terminalfönster går du till checkout anropartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    pip3 install -r requirements.txt
    
  6. checkout Kör tjänsten.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- python3 app.py
    

    Förväntad utdata

    I båda terminalerna checkout anropar tjänsten beställningar till order-processor tjänsten i en loop.

    checkout utdata:

    == 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 utdata:

    == 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 }
    
  7. Tryck på Cmd/Ctrl + C i båda terminalerna för att avsluta tjänst-till-tjänst-anropet

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

  1. I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

    cd svc-invoke-dapr-python
    

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure Portal länkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure Portal. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure Portal kontrollerar du att checkout tjänsten skickar beställningar till order-processor tjänsten.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure Portal och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure Portal.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure Portal.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure Portal.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure Portal.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.

Kör .NET-programmen lokalt

Innan du distribuerar programmet till Azure Container Apps börjar du med att köra order-processor tjänsterna och checkout lokalt med Dapr.

Förbereda projektet

  1. Klona exempelprogrammen till den lokala datorn.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-csharp.git
    
  2. Navigera till exemplets rotkatalog.

    cd svc-invoke-dapr-csharp
    

Kör programmen med Dapr CLI

Börja med att köra samtalstjänst order-processor .

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    dotnet build
    
  3. order-processor Kör tjänsten.

    dapr run --app-port 7001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- dotnet run
    
  4. I ett nytt terminalfönster går du till checkout anropartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    dotnet build
    
  6. checkout Kör tjänsten.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- dotnet run
    

    Förväntad utdata

    I båda terminalerna checkout anropar tjänsten beställningar till order-processor tjänsten i en loop.

    checkout utdata:

    == 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 utdata:

    == 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 }
    
  7. Tryck på Cmd/Ctrl + C i båda terminalerna för att avsluta tjänst-till-tjänst-anropet.

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

cd svc-invoke-dapr-csharp

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure Portal länkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure Portal. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure Portal kontrollerar du att checkout tjänsten skickar beställningar till order-processor tjänsten.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure Portal och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure Portal.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure Portal.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure Portal.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure Portal.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet tar du bort de Azure-resurser som du har etablerat med följande kommando:

azd down

Nästa steg