Een toepassing voorbereiden voor implementatie in Azure Spring Cloud

Azure Spring Cloud biedt robuuste services voor het hosten, bewaken, schalen en bijwerken van een Steeltoe-app. In dit artikel wordt beschreven hoe u een bestaande Steeltoe-toepassing voorbereidt voor implementatie in Azure Spring Cloud.

In dit artikel worden de afhankelijkheden, configuratie en code uitgelegd die nodig zijn voor het uitvoeren van een .NET Core Steeltoe-app in Azure Spring Cloud. Zie Deploy your first Spring Boot app in Azure Spring Cloud (Uw eerste app implementeren in Azure Spring Cloud) voor meer informatie over het implementeren van een Azure Spring Cloud.

Notitie

Steeltoe-ondersteuning voor Azure Spring Cloud wordt momenteel aangeboden als openbare preview. Met openbare preview-aanbiedingen kunnen klanten voorafgaand aan de officiële release met nieuwe functies experimenteren. Openbare preview-functies en -services zijn niet bedoeld voor gebruik in productie. Voor meer informatie over ondersteuning tijdens previews kunt u de Veelgestelde vragen raadplegen of een Ondersteuningsaanvraag indienen.

Ondersteunde versies

Azure Spring Cloud ondersteunt:

  • .NET Core 3.1
  • Steeltoe 2.4 en 3.0

Afhankelijkheden

Voeg voor Steeltoe 2.4 het meest recente pakket Microsoft.Azure.SpringCloud.Client 1.x.x toe aan het projectbestand:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="1.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.ExporterCore" Version="2.4.4" />
</ItemGroup>

Voeg voor Steeltoe 3.0 het meest recente pakket Microsoft.Azure.SpringCloud.Client 2.x.x toe aan het projectbestand:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="3.0.0" />
</ItemGroup>

Program.cs bijwerken

Roep in Program.Main de methode de methode UseAzureSpringCloudService aan.

Voor Steeltoe 2.4.4 roept u na en na aan UseAzureSpringCloudService ConfigureWebHostDefaults als deze wordt AddConfigServer aangeroepen:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer()
        .UseAzureSpringCloudService();

Roep voor Steeltoe 3.0.0 aan UseAzureSpringCloudService vóór ConfigureWebHostDefaults en vóór een Steeltoe-configuratiecode:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseAzureSpringCloudService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer();

Eureka Server-servicedetectie inschakelen

Stel in de configuratiebron die wordt gebruikt wanneer de app wordt uitgevoerd in Azure Spring Cloud in op dezelfde naam als de Azure Spring Cloud-app waarop het spring.application.name project wordt geïmplementeerd.

Als u bijvoorbeeld een .NET-project met de naam implementeert in een Azure Spring Cloud-app met de naam EurekaDataProvider planet-weather-provider het bestand appSettings.json moet de volgende JSON bevatten:

"spring": {
  "application": {
    "name": "planet-weather-provider"
  }
}

Servicedetectie gebruiken

Als u een service wilt aanroepen met behulp van de Eureka Server-servicedetectie, moet u HTTP-aanvragen indienen waarbij de waarde http://<app_name> app_name van de spring.application.name doel-app is. Met de volgende code wordt bijvoorbeeld de planet-weather-provider service aanroepen:

using (var client = new HttpClient(discoveryHandler, false))
{
    var responses = await Task.WhenAll(
        client.GetAsync("http://planet-weather-provider/weatherforecast/mercury"),
        client.GetAsync("http://planet-weather-provider/weatherforecast/saturn"));
    var weathers = await Task.WhenAll(from res in responses select res.Content.ReadAsStringAsync());
    return new[]
    {
        new KeyValuePair<string, string>("Mercury", weathers[0]),
        new KeyValuePair<string, string>("Saturn", weathers[1]),
    };
}

In dit onderwerp ziet u hoe u een bestaande Java Spring-toepassing voorbereidt voor implementatie naar Azure Spring Cloud. Indien correct geconfigureerd, biedt Azure Spring Cloud krachtige services voor het bewaken, schalen en bijwerken van uw Java Spring Cloud toepassing.

Voordat u dit voorbeeld kunt uitvoeren, kunt u de eenvoudige quickstart uitproberen.

In andere voorbeelden wordt uitgelegd hoe u een toepassing implementeert Azure Spring Cloud wanneer het POM-bestand is geconfigureerd.

In dit artikel worden de vereiste afhankelijkheden uitgelegd en wordt uitgelegd hoe u deze toevoegt aan het POM-bestand.

Java Runtime-versie

Azure Spring Cloud ondersteunt zowel Java 8 als Java 11. Over het algemeen ondersteunt Azure PaaS alleen Java LTS-versies en Azure Spring Cloud ondersteuning voor Java 17 LTS. De hostingomgeving bevat de nieuwste versie van Azul Zulu OpenJDK for Azure. Zie Install the JDK(De JDK installeren) voor meer informatie over Azul Zulu OpenJDK voor Azure.

Spring Boot- en Spring Cloud-versies

Als u een bestaande Spring Boot-toepassing wilt voorbereiden voor implementatie naar Azure Spring Cloud moet u de afhankelijkheden Spring Boot en Spring Cloud opnemen in het POM-bestand van de toepassing, zoals wordt weergegeven in de volgende secties.

Azure Spring Cloud ondersteuning voor de meest recente Spring Boot of Spring Cloud release binnen één maand nadat deze is uitgebracht. U kunt ondersteunde versies Spring Boot van Spring Boot Releases en Spring Cloud versies van Spring Cloud Releases.

De volgende tabel bevat de ondersteunde Spring Boot en Spring Cloud combinaties:

Spring Boot versie Spring Cloud-versie
2.3.x Hoxton.SR8+
2.4.x, 2.5.x 2020.0 oftewel Ilford +

Notitie

Afhankelijkheden voor Spring Boot versie 2.3

Voeg Spring Boot versie 2.3 de volgende afhankelijkheden toe aan het POM-bestand van de toepassing.

    <!-- Spring Boot dependencies -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

    <!-- Spring Cloud dependencies -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

Afhankelijkheden voor Spring Boot versie 2.4/2.5

Voor Spring Boot versie 2.4/2.5 voegt u de volgende afhankelijkheden toe aan het POM-bestand van de toepassing.

    <!-- Spring Boot dependencies -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.8</version>
    </parent>

    <!-- Spring Cloud dependencies -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

Waarschuwing

Geef niet op server.port in uw configuratie. Azure Spring Cloud wordt deze instelling overgezet naar een vast poortnummer. Respecteer deze instelling ook en geef geen serverpoort op in uw code.

Als u de ingebouwde functies van Azure Spring Cloud serviceregister naar gedistribueerde tracering wilt inschakelen, moet u ook de volgende afhankelijkheden in uw toepassing opnemen. U kunt een aantal van deze afhankelijkheden verwijderen als u geen bijbehorende functies voor de specifieke apps nodig hebt.

Serviceregister

Als u de beheerde Azure Service Registry-service wilt gebruiken, moet u de afhankelijkheid opnemen in het spring-cloud-starter-netflix-eureka-client pom.xml bestand, zoals hier wordt weergegeven:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

Het eindpunt van de Service Registry-server wordt automatisch opgenomen als omgevingsvariabelen met uw app. Toepassingen kunnen zichzelf registreren bij de Service Registry-server en andere afhankelijke microservices ontdekken.

EnableDiscoveryClient-aantekening

Voeg de volgende aantekening toe aan de broncode van de toepassing.

@EnableDiscoveryClient

Zie bijvoorbeeld de piggymetrics-toepassing uit eerdere voorbeelden:

package com.piggymetrics.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy

public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

Gedistribueerde configuratie

Als u Gedistribueerde configuratie wilt inschakelen, moet u de volgende afhankelijkheid opnemen in de spring-cloud-config-client sectie afhankelijkheden van pom.xml bestand:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

Waarschuwing

Geef niet op spring.cloud.config.enabled=false in uw bootstrapconfiguratie. Anders werkt uw toepassing niet meer met Config Server.

Metrische gegevens

Neem de spring-boot-starter-actuator afhankelijkheid op in de sectie afhankelijkheden van uw pom.xml zoals hier wordt weergegeven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Metrische gegevens worden periodiek uit de JMX-eindpunten gehaald. U kunt de metrische gegevens visualiseren met behulp van de Azure Portal.

Waarschuwing

Geef op spring.jmx.enabled=true in uw configuratie-eigenschap. Anders kunnen metrische gegevens niet worden gevisualiseerd in Azure Portal.

Zie ook

Volgende stappen

In dit onderwerp hebt u geleerd hoe u uw Java Spring-toepassing configureert voor implementatie naar Azure Spring Cloud. Zie Set up a Config Server instance (Een Config Server instellen) voor meer informatie over het instellen van een Config Server-instantie.

Meer voorbeelden zijn beschikbaar in GitHub: Azure Spring Cloud-voorbeelden.