إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوريكا Server for Spring هو سجل خدمة يسمح للخدمات المصغرة بتسجيل نفسها واكتشاف خدمات أخرى. Eureka Server for Spring متاح كعنصر Azure Container Apps. يمكنك ربط تطبيق الحاوية الخاص بك بخادم Eureka ل Spring للتسجيل التلقائي باستخدام خادم يوريكا.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء خادم Eureka لمكون Java في Spring.
- ربط تطبيق الحاوية الخاص بك بخادم Eureka لمكون Spring Java.
هام
يستخدم هذا الدرس خدمات يمكن أن تؤثر على فاتورة Azure الخاصة بك. إذا قررت المتابعة، فتأكد من حذف الموارد المميزة في هذه المقالة لتجنب الفوترة غير المتوقعة.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب بالفعل، يمكنك إنشاء حساب مجانا.
- Azure CLI.
الاعتبارات
عند تشغيل خادم يوريكا ل Spring in Container Apps، كن على دراية بالتفاصيل التالية:
| العنصر | الشرح |
|---|---|
| النطاق | يعمل مكون Eureka Server for Spring في نفس البيئة مثل تطبيق الحاوية المتصل. |
| تغير الحجم | لا يمكن تغيير حجم مكون خادم Eureka ل Spring. يتم تعيين خصائص minReplicas التحجيم و maxReplicas على 1. لتحقيق قابلية وصول عالية، راجع إنشاء خدمة يوريكا عالية التوفر في تطبيقات الحاوية. |
| الموارد | تم إصلاح تخصيص موارد الحاوية لخادم Eureka ل Spring. عدد أنوية المعالج هو 0.5، وحجم الذاكرة هو 1 Gi. |
| التسعير | يقع خادم Eureka لفواتير Spring ضمن التسعير القائم على الاستهلاك. يتم احتساب الموارد التي تستهلكها مكونات Java المدارة بمعدلات النشط/الخمول. يمكنك حذف المكونات التي لم تعد قيد الاستخدام لإيقاف الفوترة. |
| Binding | تتصل تطبيقات الحاوية بمكون Eureka Server for Spring عبر ربط. تدخل الروابط التكوينات في متغيرات بيئة تطبيق الحاوية. بعد تأسيس الربط، يمكن لتطبيق الحاوية قراءة قيم التكوين من متغيرات البيئة والاتصال بمكون خادم Eureka ل Spring. |
الإعداد
قبل البدء في العمل مع مكون يوريكا Server for Spring، تحتاج أولا إلى إنشاء الموارد المطلوبة.
- واجهة سطر الأوامر Azure (Azure CLI)
- مدخل Azure
قم بتشغيل الأوامر التالية لإنشاء مجموعة الموارد الخاصة بك في بيئة تطبيق حاوية.
إنشاء متغيرات لدعم تكوين التطبيق الخاص بك. يتم توفير هذه القيم لك لأغراض هذا الدرس.
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export APP_NAME=my-eureka-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"المتغير الوصف LOCATIONموقع منطقة Azure حيث تنشئ تطبيق الحاوية ومكون Java. ENVIRONMENTاسم بيئة تطبيق الحاوية لتطبيق العرض التوضيحي الخاص بك. RESOURCE_GROUPاسم مجموعة الموارد Azure لتطبيقك التجريبي. EUREKA_COMPONENT_NAMEاسم مكون Java الذي تم إنشاؤه لتطبيق الحاوية الخاص بك. في هذه الحالة، تقوم بإنشاء خادم Eureka لمكون Java في Spring. IMAGEصورة الحاوية المستخدمة في تطبيق الحاوية. تسجيل الدخول إلى Azure باستخدام Azure CLI.
az loginقم بإنشاء مجموعة موارد.
az group create --name $RESOURCE_GROUP --location $LOCATIONإنشاء بيئة تطبيق الحاوية.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
إنشاء خادم Eureka لمكون Java في Spring
- واجهة سطر الأوامر Azure (Azure CLI)
- مدخل Azure
الآن بعد أن أصبح لديك بيئة موجودة، يمكنك إنشاء تطبيق الحاوية الخاص بك وربطه بنسخة مكون Java من خادم Eureka للعبة Spring.
إنشاء مكون Java في خادم يوريكا لSpring.
az containerapp env java-component eureka-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAMEاختياري: تحديث خادم Eureka لتكوين مكون Java في Spring.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
ربط تطبيق الحاوية الخاص بك بخادم Eureka لمكون Spring Java
- واجهة سطر الأوامر Azure (Azure CLI)
- مدخل Azure
قم بإنشاء تطبيق الحاوية وربطه بخادم Eureka لمكون Spring.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $EUREKA_COMPONENT_NAME \ --query properties.configuration.ingress.fqdnانسخ عنوان URL لتطبيقك إلى محرر نصوص بحيث يمكنك استخدامه في خطوة قادمة.
ارجع إلى تطبيق الحاوية في المدخل. انسخ عنوان URL لتطبيقك إلى محرر نصوص بحيث يمكنك استخدامه في خطوة قادمة.
انتقل إلى /allRegistrationStatus المسار لعرض جميع التطبيقات المسجلة مع مكون Eureka Server for Spring.
يقوم الربط بإدخال عدة تكوينات في التطبيق كمتغيرات بيئة، في المقام الأول الخاصية eureka.client.service-url.defaultZone . تشير هذه الخاصية إلى نقطة النهاية الداخلية لمكون Java الخاص بخادم Eureka.
يقوم الربط أيضا بإدخال الخصائص التالية:
"eureka.client.register-with-eureka": "true"
"eureka.client.fetch-registry": "true"
"eureka.instance.prefer-ip-address": "true"
eureka.client.register-with-eureka تم تعيين الخاصية إلى true لفرض التسجيل مع خادم يوريكا. يقوم هذا التسجيل بالكتابة فوق الإعداد المحلي في application.properties، من خادم التكوين وهكذا. إذا كنت تريد تعيينه إلى false، يمكنك الكتابة فوقه عن طريق تعيين متغير بيئة في تطبيق الحاوية.
eureka.instance.prefer-ip-address يتم تعيين الخاصية إلى true بسبب قاعدة تحليل نظام اسم المجال المحددة في بيئة تطبيق الحاوية. لا تقم بتعديل هذه القيمة بحيث لا تقطع الربط.
اختياري: قم بإلغاء ربط تطبيق الحاوية الخاص بك من خادم Eureka لمكون Java في Spring
- واجهة سطر الأوامر Azure (Azure CLI)
- مدخل Azure
لإزالة ربط من تطبيق حاوية، استخدم --unbind الخيار .
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
عرض التطبيق من خلال لوحة معلومات
هام
لعرض لوحة التحكم، يجب أن يكون لديك على الأقل دور Microsoft.App/managedEnvironments/write مخصص لحسابك في مورد البيئة المدارة. يمكنك تعيين Owner دور أو Contributor على المورد بشكل صريح. يمكنك أيضا اتباع الخطوات لإنشاء تعريف دور مخصص وتعيينه إلى حسابك.
إشعار
لوحة المعلومات غير متوفرة في Azure وتديرها 21Vianet.
إنشاء تعريف دور مخصص.
az role definition create --role-definition '{ "Name": "<YOUR_ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'تأكد من استبدال
<SUBSCRIPTION_ID>العنصر النائب فيAssignableScopesالقيمة بمعرف الاشتراك الخاص بك.تعيين الدور المخصص إلى حسابك على مورد بيئة مدارة.
احصل على معرف المورد للبيئة المدارة:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)تعيين الدور إلى حسابك.
قبل تشغيل هذا الأمر، استبدل العناصر النائبة - المشار إليها بواسطة الأقواس
<>- بمعرف المستخدم أو الخدمة الأساسي واسم دورك.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_IDإشعار
عادة يجب أن تكون قيمة
<USER_OR_SERVICE_PRINCIPAL_ID>هي الهوية التي تستخدمها للوصول إلى بوابة Azure.<ROLE_NAME>القيمة هي الاسم الذي قمت بتعيينه في الخطوة 1.احصل على عنوان URL للوحة معلومات خادم يوريكا ل Spring.
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsvيقوم هذا الأمر بإرجاع عنوان URL الذي يمكنك استخدامه للوصول إلى خادم Eureka للوحة معلومات Spring. باستخدام لوحة المعلومات، يمكنك أيضا رؤية تطبيق الحاوية، كما هو موضح في لقطة الشاشة التالية.
اختياري: دمج خادم يوريكا لنظام Spring وخادم الإدارة لمكونات Java في Spring
إذا كنت ترغب في دمج خادم يوريكا لنظام الربيع ومكونات المسؤول في Java الربيع، راجع دمج المسؤول المدار لSpring مع خادم يوريكا لSpring.
تنظيف الموارد
الموارد التي تم إنشاؤها في هذا الدرس لها تأثير على فاتورة Azure الخاصة بك. إذا كنت لن تستخدم هذه الخدمات على المدى الطويل، فقم بتشغيل الأمر التالي لإزالة كل شيء قمت بإنشائه في هذا البرنامج التعليمي.
az group delete --resource-group $RESOURCE_GROUP
قائمة التكوين المسموح بها لخادم Eureka ل Spring
تصف الأقسام التالية التكوينات المدعومة. لمزيد من المعلومات، راجع خادم Spring Cloud Eureka.
إشعار
يمكنك تقديم تذاكر دعم لطلبات الميزات الجديدة.
خيارات الإعداد
az containerapp update يستخدم الأمر المعلمة --configuration للتحكم في كيفية تكوين خادم Eureka ل Spring. يمكنك استخدام معلمات متعددة في وقت واحد طالما أنها مفصولة بمسافة. لمزيد من المعلومات، راجع خادم Spring Cloud Eureka.
تتوفر إعدادات التكوين التالية في eureka.server خاصية التكوين:
| الاسم | الوصف | القيمة الافتراضية |
|---|---|---|
eureka.server.enable-self-preservation |
عند التمكين، يتتبع الخادم عدد التجديدات التي يجب أن يتلقاها من الخادم. عندما ينخفض عدد التجديدات إلى ما دون نسبة العتبة كما هو معرف ب eureka.server.renewal-percent-threshold. يتم تعيين القيمة الافتراضية على true في خادم يوريكا الأصلي، ولكن في مكون Java خادم يوريكا، يتم تعيين القيمة الافتراضية إلى false. انظر Limits of Eureka Server لمكون Spring Java. |
false |
eureka.server.renewal-percent-threshold |
الحد الأدنى للنسبة المئوية للتجديدات المتوقعة من العملاء في الفترة المحددة بواسطة eureka.server.renewal-threshold-update-interval-ms. إذا انخفضت التجديدات إلى أقل من الحد، يتم تعطيل انتهاء الصلاحية إذا eureka.server.enable-self-preservation تم تمكينها. |
0.85 |
eureka.server.renewal-threshold-update-interval-ms |
الفاصل الزمني الذي يجب تحديث الحد به - كما هو محدد في eureka.server.renewal-percent-threshold . |
0 |
eureka.server.expected-client-renewal-interval-seconds |
الفاصل الزمني الذي يتوقع من العملاء إرسال رسالة كشف أخطاء الاتصال الخاصة بهم. افتراضيا إلى 30 ثانية. إذا كان العملاء يرسلون نبضات قلب بتردد مختلف، مثلا كل 15 ثانية، فيجب ضبط هذا المعامل وفقا لذلك، وإلا فلن يعمل الحفاظ على النفس كما هو متوقع. | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
يحصل على الوقت الذي يجب أن تحفظ فيه حمولة السجل في الذاكرة المؤقتة إذا لم تقم أحداث التغيير بإبطاله. | 180 |
eureka.server.response-cache-update-interval-ms |
يحصل على الفاصل الزمني الذي يجب تحديث ذاكرة التخزين المؤقت للحمولة للعميل به. | 0 |
eureka.server.use-read-only-response-cache |
com.netflix.eureka.registry.ResponseCache يستخدم حاليا استراتيجية التخزين المؤقت من مستويين للاستجابات.
readWrite ذاكرة تخزين مؤقت مع نهج انتهاء صلاحية، وذاكرة readonly تخزين مؤقت يتم تخزينها مؤقتا دون انتهاء الصلاحية. |
true |
eureka.server.disable-delta |
يتحقق لمعرفة ما إذا كان يمكن تقديم معلومات دلتا للعميل أم لا. | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
احصل على الوقت الذي يجب تخزين معلومات دلتا فيه مؤقتا للعملاء لاسترداد القيمة دون فقدانها. | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
احصل على الفترة الزمنية التي يجب أن تبدأ فيها مهمة التنظيف وتحقق من معلومات دلتا منتهية الصلاحية. | 0 |
eureka.server.eviction-interval-timer-in-ms |
احصل على الفاصل الزمني الذي يجب أن تنبه به المهمة التي تنتهي بها المثيلات وتشغلها. | 60000 |
eureka.server.sync-when-timestamp-differs |
التحقق من مزامنة المثيلات عند اختلاف الطابع الزمني. | true |
eureka.server.rate-limiter-enabled |
يشير إلى ما إذا كان يجب تمكين محدد المعدل أو تعطيله. | false |
eureka.server.rate-limiter-burst-size |
محدد المعدل، خاصية خوارزمية مستودع الرمز المميز. | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
محدد المعدل، خاصية خوارزمية مستودع الرمز المميز. تحديد متوسط معدل الطلب المفروض. | 500 |
eureka.server.rate-limiter-privileged-clients |
قائمة بالعملاء المعتمدين الذين يكونون بالإضافة إلى عملاء Java العاديين في eureka. | N/A |
eureka.server.rate-limiter-throttle-standard-clients |
الإشارة إلى ما إذا كان العملاء القياسيون يحدون من المعدل. إذا تم تعيينه إلى false، فإن العملاء غير القياسيين فقط هم من محدودي السعر. |
false |
eureka.server.rate-limiter-full-fetch-average-rate |
محدد المعدل، خاصية خوارزمية مستودع الرمز المميز. تحديد متوسط معدل الطلب المفروض. | 100 |
التكوينات الشائعة
- تسجيل التكوينات ذات الصلة:
logging.level.*logging.group.*- يجب منع أي تكوينات أخرى تحت
logging.*مساحة الاسم - على سبيل المثال، يجب حظر كتابة ملفات السجل باستخدامlogging.file.
الاتصال بين التطبيقات
يوضح لك هذا المثال كيفية كتابة كود Java للاستدعاء بين التطبيقات المسجلة في مكون خادم يوريكا للسبرينغ. عندما تكون تطبيقات الحاوية مرتبطة ب Eureka، فإنها تتواصل مع بعضها البعض من خلال خادم يوريكا.
ينشئ المثال تطبيقين، المتصل والمتصل. يتصل كلا التطبيقين بين بعضهما البعض باستخدام مكون خادم يوريكا ل Spring. يعرض تطبيق المتصل نقطة نهاية يتم استدعاؤها بواسطة تطبيق المتصل.
إنشاء تطبيق المتصل. قم بتمكين عميل Eureka في تطبيق Spring Boot الخاص بك عن طريق إضافة التعليق التوضيحي
@EnableDiscoveryClientإلى فئتك الرئيسية.@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }إنشاء نقطة نهاية في تطبيق المتصل الذي يتم استدعاؤه بواسطة تطبيق المتصل.
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }تعيين اسم تطبيق المتصل في ملف تكوين التطبيق - على سبيل المثال، في application.yml.
spring.application.name=calleeإنشاء تطبيق المتصل.
أضف التعليق التوضيحي
@EnableDiscoveryClientلتمكين وظيفة عميل Eureka. أيضا، قم بإنشاء beanWebClient.Builderمع@LoadBalancedالتعليق التوضيحي لإجراء مكالمات متوازنة التحميل إلى خدمات أخرى.@SpringBootApplication @EnableDiscoveryClient public class CallerApplication { public static void main(String[] args) { SpringApplication.run(CallerApplication.class, args); } @Bean @LoadBalanced public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } }إنشاء وحدة تحكم في تطبيق المتصل الذي يستخدم
WebClient.Builderلاستدعاء تطبيق المتصل باستخدام اسم التطبيق الخاص به، المتصل.@RestController public class CallerController { @Autowired private WebClient.Builder webClientBuilder; @GetMapping("/call-callee") public Mono<String> callCallee() { return webClientBuilder.build() .get() .uri("http://callee/call") .retrieve() .bodyToMono(String.class); } }
الآن لديك تطبيق للاتصال والمتلقي يتواصلان مع بعضهما البعض باستخدام Eureka Server لمكونات Java في Spring. تأكد من تشغيل كلا التطبيقين وربطهما بخادم يوريكا قبل اختبار /call-callee نقطة النهاية في تطبيق المتصل.
القيود
- يأتي مكون خادم يوريكا Java مع تكوين افتراضي
eureka.server.enable-self-preservation، مضبوط علىfalse. يساعد هذا التكوين الافتراضي على تجنب الأوقات التي لا يتم فيها حذف المثيلات بعد تمكين الاحتفاظ الذاتي. إذا تم حذف المثيلات مبكرا جدا، فقد يتم توجيه بعض الطلبات إلى مثيلات غير موجودة. إذا أردت تغيير هذا الإعداد إلىtrue، يمكنك الكتابة فوقه عن طريق ضبط إعداداتك الخاصة في مكون Java. - لوحة تحكم يوريكا غير متوفرة في Azure التي تديرها 21Vianet.