إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوريكا Server for Spring هو سجل خدمة يسمح للخدمات المصغرة بتسجيل نفسها واكتشاف خدمات أخرى. يتوفر خادم Eureka ل Spring كمكون Azure Container Apps. يمكنك ربط تطبيق الحاوية الخاص بك بخادم Eureka ل Spring للتسجيل التلقائي باستخدام خادم يوريكا.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء خادم Eureka لمكون Spring Java.
- اربط تطبيق الحاوية الخاص بك بخادم 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، تحتاج أولا إلى إنشاء الموارد المطلوبة.
قم بتشغيل الأوامر التالية لإنشاء مجموعة الموارد الخاصة بك في بيئة تطبيق حاوية.
إنشاء متغيرات لدعم تكوين التطبيق الخاص بك. يتم توفير هذه القيم لك لأغراض هذا الدرس.
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 الذي تم إنشاؤه لتطبيق الحاوية. في هذه الحالة، يمكنك إنشاء مكون خادم يوريكا ل Spring Java. 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 ل Spring Java
الآن بعد أن أصبح لديك بيئة موجودة، يمكنك إنشاء تطبيق الحاوية الخاص بك وربطه بمثيل مكون Java لخادم Eureka ل Spring.
إنشاء مكون خادم Eureka ل Spring Java.
az containerapp env java-component eureka-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAMEاختياري: تحديث خادم يوريكا لتكوين مكون Spring Java.
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
ربط تطبيق الحاوية الخاص بك بخادم يوريكا لمكون Spring Java
قم بإنشاء تطبيق الحاوية وربطه بخادم 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 بسبب قاعدة تحليل نظام اسم المجال المحددة في بيئة تطبيق الحاوية. لا تقم بتعديل هذه القيمة بحيث لا تقطع الربط.
اختياري: إلغاء ربط تطبيق الحاوية من مكون خادم يوريكا ل Spring Java
لإزالة ربط من تطبيق حاوية، استخدم --unbind الخيار .
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
عرض التطبيق من خلال لوحة معلومات
هام
لعرض لوحة المعلومات، يجب أن يكون لديك على الأقل Microsoft.App/managedEnvironments/write الدور المعين لحسابك على مورد البيئة المدارة. يمكنك تعيين Owner دور أو Contributor على المورد بشكل صريح. يمكنك أيضا اتباع الخطوات لإنشاء تعريف دور مخصص وتعيينه إلى حسابك.
إشعار
لوحة المعلومات غير متوفرة في Azure China 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>يجب أن تكون القيمة عادة الهوية التي تستخدمها للوصول إلى مدخل Microsoft 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 والمسؤول لمكونات Spring Java
إذا كنت ترغب في دمج خادم يوريكا ل Spring والمسؤول لمكونات 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 في خادم Eureka الأصلي، ولكن في مكون Eureka Server Java، يتم تعيين القيمة الافتراضية إلى false. راجع قيود يوريكا 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 Server for Spring. عندما تكون تطبيقات الحاوية مرتبطة ب 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); } }
الآن لديك تطبيق المتصل والمتصل الذي يتصل مع بعضها البعض باستخدام يوريكا Server لمكونات Spring Java. تأكد من تشغيل كلا التطبيقين وربطهما بخادم يوريكا قبل اختبار /call-callee نقطة النهاية في تطبيق المتصل.
القيود
- يأتي مكون Eureka Server Java مع تكوين افتراضي، ،
eureka.server.enable-self-preservationتم تعيينه إلىfalse. يساعد هذا التكوين الافتراضي على تجنب الأوقات التي لا يتم فيها حذف المثيلات بعد تمكين الاحتفاظ الذاتي. إذا تم حذف المثيلات مبكرا جدا، فقد يتم توجيه بعض الطلبات إلى مثيلات غير موجودة. إذا كنت تريد تغيير هذا الإعداد إلىtrue، يمكنك الكتابة فوقه عن طريق تعيين التكوينات الخاصة بك في مكون Java. - لوحة معلومات يوريكا غير متوفرة في Azure China 21Vianet.