إعداد تطبيق للتوزيع في Azure Spring Apps

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise

توضح هذه المقالة كيفية تحضير تطبيق Steeltoe موجود للتوزيع في Azure Spring Apps. توفر تطبيقات Azure Spring خدمات قوية لاستضافة تطبيق Steeltoe ومراقبته وقياسه وتحديثه.

تشرح هذه المقالة التبعيات والتكوين والتعليمة البرمجية المطلوبة لتشغيل تطبيق .NET Core Steeltoe في Azure Spring Apps. للحصول على معلومات بشأن كيفية توزيع تطبيق في Azure Spring Apps، راجع توزيع تطبيق Spring Boot الأول في Azure Spring Apps.

إشعار

يتم تقديم دعم Steeltoe لتطبيقات Azure Spring حالياً كمعاينة عامة. تتيح عروض المعاينة العامة للعملاء تجربة الميزات الجديدة قبل إصدارها الرسمي. ميزات وخدمات المعاينة العامة غير مخصصة لاستخدامات الإنتاج. لمزيد من المعلومات حول الدعم أثناء المعاينة، راجع الأسئلة الشائعة أو ملف طلب دعم.

الإصدارات المدعومة

إن Azure Spring Apps تدعم:

  • .NET Core 3.1
  • Steeltoe 2.4 and 3.0

التبعيات

بالنسبة إلى Steel Toe 2.4، أضف أحدث حزمة Microsoft.Azure.SpringCloud.Client 1.x.x إلى ملف المشروع:

<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>

بالنسبة إلى Steel Toe 3.0، أضف أحدث حزمة Microsoft.Azure.SpringCloud.Client 2.x.x إلى ملف المشروع:

<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

في الأسلوب Program.Main، قم باستدعاء الأسلوب UseAzureSpringCloudService.

بالنسبة إلى Steeltoe 2.4.4، اتصل بـUseAzureSpringCloudService بعد ConfigureWebHostDefaults وبعد AddConfigServer إذا كان يسمى:

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

بالنسبة إلى Steeltoe 3.0.0، اتصل بـUseAzureSpringCloudService قبل ConfigureWebHostDefaults وقبل أي التعليمة البرمجية تكوين Steeltoe:

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

تفعيل اكتشاف خدمة Eureka Server

إشعار

لا ينطبق Eureka على خطة المؤسسة. إذا كنت تستخدم خطة المؤسسة، فشاهد استخدام سجل الخدمة.

في مصدر التكوين المستخدم عند تشغيل التطبيق في Azure Spring Apps، عين spring.application.name على نفس اسم تطبيق Azure Spring Apps الذي يتم نشر المشروع عليه.

على سبيل المثال، إذا قمت بتوزيع مشروع NET. يسمى EurekaDataProvider إلى تطبيق Azure Spring Apps المسمى planet-weather-provider يجب أن يتضمن ملف appSettings.json JSON التالي:

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

استخدم اكتشاف الخدمة

للاتصال بخدمة باستخدام اكتشاف خدمة Eureka Server، قم بإجراء طلبات HTTP إلى http://<app_name> حيث app_name هي قيمة spring.application.name للتطبيق الهدف. على سبيل المثال، التعليمة البرمجية التالية تستدعي خدمة planet-weather-provider :

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]),
    };
}

توضح هذه المقالة كيفية تحضير تطبيق Java Spring موجود للتوزيع في Azure Spring Apps. إذا تم تكوينه بشكل صحيح، فإن Azure Spring Apps توفر خدمات قوية لمراقبة تطبيق Java Spring وتوسيع نطاقه وتحديثه.

قبل تشغيل هذا المثال، يمكنك تجربة التشغيل السريع الأساسي.

توضح الأمثلة الأخرى كيفية توزيع تطبيق على Azure Spring Apps عند تكوين ملف POM.

تشرح هذه المقالة التبعيات المطلوبة وكيفية إضافتها إلى ملف POM.

إصدار Java Runtime

للحصول على تفاصيل، راجع قسم وقت تشغيل Java وإصدارات نظام التشغيل من الأسئلة المتداولة بشأن Azure Spring Apps.

إصدارات Spring Boot وSpring Cloud

لإعداد تطبيق Spring Boot موجود للتوزيع في Azure Spring Apps، قم بتضمين تبعيات Spring Boot وSpring Cloud في ملف POM للتطبيق كما هو موضح في الأقسام التالية.

تدعم Azure Spring Apps أحدث إصدار رئيسي من Spring Boot أو Spring Cloud بدءا من 30 يوما بعد إصداره. تدعم Azure Spring Apps أحدث إصدار ثانوي بمجرد إصداره. يمكنك الحصول على إصدارات Spring Boot المدعومة من Spring Boot Releases وإصدارات Spring Cloud من Spring Cloud Releases.

يسرد الجدول التالي مجموعات Spring Boot وSpring Cloud المدعومة:

إصدار Spring Boot إصدار Spring Cloud انتهاء الدعم التجاري
3.2.x 2023.0.x المعروف أيضا باسم Leyton 2026-02-23
3.1.x 2022.0.3+ المعروف أيضا باسم كيلبورن 2025-08-18
3.0.x 2022.0.3+ المعروف أيضا باسم كيلبورن 2025-02-24
2.7.x 2021.0.3+ المعروف أيضا باسم اليوبيل 2025-08-24
2.6.x 2021.0.3+ المعروف أيضا باسم اليوبيل 2024-02-24

لمزيد من المعلومات، راجع الصفحات التالية:

لتمكين الميزات المضمنة في Azure Spring Apps من سجل الخدمة إلى التتبع الموزع، تحتاج أيضاً إلى تضمين التبعيات التالية في التطبيق الخاص بك. يمكنك إسقاط بعض هذه التبعيات إذا لم تكن بحاجة إلى ميزات مقابلة لتطبيقات معينة.

سجل الخدمة

لاستخدام خدمة سجل خدمة Azure المُدارة، قم بتضمين التبعية spring-cloud-starter-netflix-eureka-client في ملف pom.xml كما هو موضح هنا:

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

يتم إدخال نقطة نهاية خادم Service Registry تلقائياً كمتغيرات بيئة مع تطبيقك. يمكن للتطبيقات تسجيل نفسها في خادم سجل الخدمة واكتشاف التطبيقات الأخرى التابعة.

EnableDiscoveryClient التعليق التوضيحي

أضف التعليق التوضيحي التالي إلى التعليمة البرمجية المصدر للتطبيق.

@EnableDiscoveryClient

على سبيل المثال، راجع تطبيق Piggymetrics من الأمثلة السابقة:

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);
    }
}

التكوين الموزع

لتمكين التكوين الموزع في خطة المؤسسة، استخدم خدمة تكوين التطبيق ل VMware Tanzu، وهي واحدة من مكونات VMware Tanzu الخاصة. خدمة تكوين التطبيق ل Tanzu هي Kubernetes أصلية، وتختلف عن خادم تكوين Spring Cloud. تتيح خدمة تكوين التطبيق لتطبيق Tanzu إدارة موارد ConfigMap الأصلية الخاصة بـKubernetes والتي يتم ملؤها من الخصائص المحددة في واحد أو أكثر من مستودعات Git.

في خطة المؤسسة، لا يوجد خادم تكوين Spring Cloud، ولكن يمكنك استخدام خدمة تكوين التطبيق ل Tanzu لإدارة التكوينات المركزية. لمزيد من المعلومات، راجع استخدام خدمة تكوين التطبيق في Tanzu

لاستخدام Application Configuration Service لـTanzania، قم بالخطوات التالية لكل تطبيق من تطبيقاتك:

  1. أضف ارتباطاً صريحاً للتطبيق لتعلن أن التطبيق الخاص بك يحتاج إلى استخدام خدمة تكوين التطبيق لـTanzu.

    إشعار

    عند تغيير حالة الربط/إلغاء الربط، يجب إعادة تشغيل التطبيق أو إعادة توزيعه لجعل التغيير ساري المفعول.

  2. تعيين أنماط ملف التكوين. تمكنك أنماط ملفات التكوين من اختيار التطبيق وملف التعريف الذي يستخدمه التطبيق. لمزيد من المعلومات، راجع قسم النمط في استخدام خدمة تكوين التطبيق لـTanzania.

    هناك خيار آخر وهو تعيين أنماط ملف التكوين في نفس وقت توزيع التطبيق الخاص بك، كما هو موضح في المثال التالي:

       az spring app deploy \
           --name <app-name> \
           --artifact-path <path-to-your-JAR-file> \
           --config-file-pattern <config-file-pattern>
    

المقاييس

قم بتضمين spring-boot-starter-actuator التبعية في قسم التبعيات بملف pom.xml كما هو موضح هنا:

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

يتم سحب القياسات بشكل دوري من نقاط نهاية JMX. يمكنك تصور القياسات باستخدام مدخل Microsoft Azure.

تحذير

يجب عليك تحديد spring.jmx.enabled=true في خاصية التكوين الخاصة بك. بخلاف ذلك، لا يمكن تصور القياسات في مدخل Microsoft Azure.

(راجع أيضًا )

الخطوات التالية

في هذه المقالة، تعلمت كيفية تكوين تطبيق Java Spring للتوزيع في Azure Spring Apps. لمعرفة كيفية إعداد مثيل خادم التكوين، راجع إعداد مثيل خادم التكوين.

يتوفر المزيد من العينات على GitHub: عينات Azure Spring Apps.