Eureka هو منتج Open Source Netflix يوفر تسجيل الخدمة واكتشافها ، ويوفر تنفيذًا كاملاً لتسجيل الخدمة واكتشاف الخدمة. إنه أيضًا أحد أهم المكونات الأساسية والموافقة في نظام SpringCloud.
مقدمة خلفية
مركز الخدمة
يسمى مركز الخدمة أيضًا مركز التسجيل ، الذي يدير وظائف الخدمة المختلفة بما في ذلك تسجيل الخدمة ، والاكتشاف ، وقاطع الدائرة ، والتحميل ، والخفض ، وما إلى ذلك ، مثل وظائف مختلفة لخلفية مسؤول Dubbo.
ما هي التغييرات التي ستحدث مع علاقة استدعاء مركز الخدمة؟ ارسم بعض المخططات البسيطة لمساعدتك على الفهم
مشروع المكالمات المشروع ب
عادة اتصل بالمشروع أ لطلب المشروع ب
بعد امتلاك مركز خدمة ، لا يمكن إزالة أي خدمة واستخدامها مباشرة ، ويجب استدعاؤها من خلال مركز الخدمة.
المشروع أ المشروع ب ، المشروع ب يدعو المشروع ج
في هذا الوقت ، ستكون خطوات الاتصال هي خطوتين: الخطوة الأولى هي أن المشروع A يطلب خادم المشروع B الأول من مركز الخدمة ، ثم يطلب Project B Service C Service من مركز الخدمة.
المشاريع المذكورة أعلاه هي مجرد مكالمات بسيطة بين اثنين أو ثلاث مكالمات ، ولكن إذا كان هناك أكثر من 20 مشروعًا و 30 مشروعًا ، فقد وصلت مشاريع شركتنا الموزعة إلى أكثر من 20 مشروعًا بحلول نهاية عام 2015. ارسم صورة لوصف العلاقة بين العشرات من المشاريع وجميع الخطوط. ستشمل أي تغييرات على أحد المشاريع إعادة تشغيل العديد من المشاريع ، وهو أمر مزعج للغاية وعرضة للأخطاء. للحصول على الخدمات من خلال مركز الخدمة ، لا تحتاج إلى الانتباه إلى عنوان IP للمشروع الذي تتصل به. يتكون من عدة خوادم. في كل مرة تذهب فيها إلى مركز الخدمة للحصول على الخدمات المتاحة للاتصال.
نظرًا لأن جميع أنواع الخدمات قد تم تسجيلها في مركز الخدمة ، فهناك العديد من الوظائف المتقدمة التي يجب القيام بها. على سبيل المثال ، توفر العديد من الخدمات نفس الخدمة لتحقيق التوازن بين الحمل ؛ مراقبة معدل نجاح استدعاء الخادم لأداء كسر الدوائر ، قم بإزالة نقاط الصدع في قائمة الخدمة ؛ راقب وقت استدعاء الخدمة لوضع أوزان مختلفة لخوادم مختلفة ، إلخ.
قبل الحديث عن يوريكا ، سأقوم بالثرثرة حول Netflix
Netflix
المقدمة التالية تأتي من Baidu Encyclopedia:
Netflix هي شركة أمريكية توفر وسائط البث عبر الإنترنت في الموقع في الولايات المتحدة وكندا ، وخدمات استئجار DVD و Blu-ray المخصصة. تأسست الشركة في عام 1997 ، ومقرها في Los Gaitu ، كاليفورنيا ، وبدأت خدمات الاشتراك في عام 1999. في عام 2009 ، يمكن للشركة تقديم ما يصل إلى 100000 فيلم DVD ولديه 10 ملايين مشترك. في 25 فبراير 2007 ، أعلنت Netflix أنها باعت دي في دي 1 مليار. قال تقريره إنه في عام 2011 ، شكلت مبيعات أفلام Netflix Online 45 ٪ من إجمالي مبيعات الأفلام عبر الإنترنت لمستخدمي الولايات المتحدة.
في المرة الأولى التي رأيت فيها هذه الكلمة ، كانت في بداية الأعمال الدرامية أو الأفلام الأمريكية المختلفة. تشمل الدراما الأمريكية التمثيلية التي تصورها Netflix "House of Cards" و "Lords Drug" و "Stranger Things". في وقت لاحق ، عندما كنت أدرس SpringCloud ، اكتشفت شركات Netflix وتساءلت عما إذا كانت نفس الشركة. بعد التحقق من لاحقة البريد الإلكتروني على Github ، قررت أنها كانت بالفعل نفس الشركة. في الواقع ، تستند الخدمات المجهرية لـ SpringCloud إلى منتجات Netflix مفتوحة المصدر.
لقد ثبت أن مكونات إطار العمل المفتوحة المصدر في Netflix في بيئة الخدمات الدقيقة الموزعة على نطاق واسع من Netflix لسنوات ويتم قبولها تدريجياً من قبل المجتمع كمكونات قياسية لبناء أطر الخدمات الدقيقة. تعتمد منتجات Spring Cloud Open Source بشكل أساسي على مزيد من التغليف لمكونات المصدر المفتوح Netflix ، مما يسهل مطوري Spring إلى إنشاء إطار عمل أساسي للخدمات الدقيقة. بالنسبة لبعض الشركات التي تنوي إنشاء نظام إطار عمل للخدمات الدقيقة ، فإن الاستخدام الكامل للمكونات الدقيقة المفتوحة المصدر في Netflix (أو سحابة الربيع) وإجراء تخصيص المؤسسات اللازمة على هذا الأساس هو بلا شك اختصار للهندسة المعمارية للخدمة الدقيقة.
يوريكا
وفقا للمقدمة الرسمية:
Eureka هي خدمة قائمة (نقل الحالة التمثيلية) والتي تستخدم في المقام الأول في AWS Cloud لتحديد موقع الخدمات لغرض موازنة التحميل وفشل الخوادم المتوسطة.
Eureka هي خدمة قائمة على الراحة ، تستخدم بشكل رئيسي في AWS Cloud ، وتحدد خدمات لتحميل الموازنة وفشل الخوادم الوسيطة.
تغلف Spring Cloud وحدة Eureka التي طورتها Netflix لتمكين تسجيل الخدمة واكتشافها. يعتمد يوريكا بنية تصميم CS. خادم Eureka هو الخادم الذي يحتوي على وظيفة تسجيل الخدمة ، وهو مركز تسجيل الخدمة. تستخدم الخدمات المجهرية الأخرى في النظام عميل Eureka للاتصال بخادم Eureka والحفاظ على اتصال نبضات القلب. وبهذه الطريقة ، يمكن لموظفي صيانة النظام مراقبة ما إذا كانت كل خدمة microservice في النظام تعمل بشكل طبيعي من خلال خادم Eureka. يمكن لبعض وحدات سحابة الربيع الأخرى (مثل Zuul) استخدام خادم Eureka لاكتشاف الخدمات الدقيقة الأخرى في النظام وتنفيذ المنطق ذي الصلة.
يتكون Eureka من مكونين: خادم Eureka وعميل Eureka. يتم استخدام خادم Eureka كخادم تسجيل الخدمة. عميل Eureka هو عميل Java يستخدم لتبسيط التفاعل مع الخادم ، ويكون بمثابة موازنة تحميل الاقتراع ، وتوفير دعم فشل الخدمة. تستخدم Netflix عميلًا آخر في بيئة الإنتاج ، والتي توفر موازنة الحمل المرجحة بناءً على حركة المرور واستخدام الموارد وحالة الخطأ.
استخدم صورة لفهم ما يلي:
يصف الشكل أعلاه بإيجاز البنية الأساسية لـ Eureka ، تتكون من 3 أدوار:
1. خادم يوريكا
2. مزود الخدمة
3. مستهلك الخدمة
ممارسة الحالة
خادم يوريكا
ساعدتني Spring Cloud في تنفيذ مركز تسجيل الخدمة ، ونحن بحاجة فقط إلى بعض الخطوات البسيطة لإكمالها.
1. إضافة تبعيات في بوم
<ependencies> <Rependency> <roupiD> org.springframework.cloud </groupId> <StifactId> starter-cloud-cloud-starter </stifactid> </rependency> <reperency> <rougiD> org.springframework.cloud </roucidid> <roupl> org.springframework.boot </groupId> <StifactId> Spring-Boot-Starter-Test </artifactid> <scope> test </scope> </reperence> </sependencies>
2. أضف @EnableEurekaServer التعليق التوضيحي إلى رمز بدء التشغيل
@springbootapplication@enableeurekaserverpublic class SpringCloudeureaPlication {public static void main (string [] args) {springapplication.run (springcloudeurekapplication.class ، args) ؛ }}3. ملف التكوين
بشكل افتراضي ، سيحاول سجل الخدمة أيضًا تسجيل نفسه كعميل ، لذلك نحتاج إلى تعطيل سلوك تسجيل العميل الخاص به وإضافة التكوين التالي في application.properties :
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = passeureka.client.fetch-registry = passeureka.client.serviceurl.defaultzone = http: // localhost: $ {server.port}/eureka/eurekaeureka.client.register-with-eureka : يشير إلى ما إذا كنت ستقوم بتسجيل نفسك مع خادم Eureka ، الافتراضي صحيح.eureka.client.fetch-registry : يشير إلى ما إذا كان سيتم الحصول على معلومات التسجيل من خادم Eureka ، الافتراضي صحيح.eureka.client.serviceUrl.defaultZone : تعيين العنوان للتفاعل مع خادم Eureka. تحتاج كل من خدمات الاستعلام وخدمات التسجيل إلى الاعتماد على هذا العنوان. الافتراضي هو http: // localhost: 8761/eureka ؛ يمكن استخدام عناوين متعددة وفصلها.بعد بدء المشروع ، تفضل بزيارة: http: // localhost: 8000/ويمكنك رؤية الصفحة أدناه ، حيث لم يتم العثور على أي خدمات
تَجَمَّع
هذه الخدمة الحرجة كمركز للتسجيل ، إذا كانت نقطة واحدة ، فسيكون من المدمر مواجهة الفشل. في نظام موزع ، يعد مركز تسجيل الخدمة هو الجزء الأساسي الأكثر أهمية ويجب أن يكون في حالة يمكن تقديم الخدمات فيها في أي وقت. للحفاظ على توفرها ، يعد استخدام المجموعات حلًا جيدًا. تنفذ Eureka النشر المتاح للغاية من خلال تسجيل بعضنا البعض ، لذلك نحتاج فقط إلى تكوين خادم Eureke لتكوين ServiceUrls المتاحة الأخرى لتحقيق النشر المتاح للغاية.
مركز تسجيل العقدة المزدوج
لأول مرة ، نحاول بناء مركز تسجيل مزدوج العقدة.
1. إنشاء PEER1.Properties كتكوين مركز خدمة PEER1 ، و Point ServiceUrl إلى PEER2
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.instance.hostname = peer1eureka.client.serviceurl.defaultzone = http: // peer2: 8001/eureka/
2. إنشاء PEER2.Properties كتكوين مركز خدمة PEER2 ، و Point ServiceUrl إلى PEER1
spring.application.name = spring-cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http: // peer1: 8000/eureka/
3. التحويل المضيف
أضف التكوين التالي إلى ملف المضيفين
127.0.0.1 Peer1 127.0.0.1 Peer2
4. حزمة البدء
تنفيذ الأوامر التالية بدورها
# package mvn package clean package# start eurekajava مع معلومات التكوين peer1 و peer2 على التوالي-jar spring-cloud-eureka-0.0.1-snapshot.jar-spring.profiles.jar-peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar --spring.profliactions.
بعد البدء واحدًا تلو الآخر ، يدخل المتصفح: http://localhost:8000/ التقديم كما يلي:
وفقًا لهذا الشكل ، يمكن ملاحظة أن النسخ المتماثلة DS لمركز تسجيل PEER1 لديها معلومات التكوين ذات الصلة لـ PEER2 وتظهر في replicas المتاحة. نوقف يدويًا PEER2 لمراقبة ، ونجد أن PEER2 سينتقل إلى عمود REPLICAS غير المتاح ، مما يشير إلى أن PEER2 غير متوفر.
تم الانتهاء من تكوين هذه العقدة المزدوجة.
استخدام الكتلة يوريكا
في الإنتاج ، قد نحتاج إلى ثلاثة مراكز تسجيل أو أكثر لضمان استقرار الخدمة. مبادئ التكوين هي نفسها في الواقع ، ونشير إلى مركز التسجيل إلى مراكز التسجيل الأخرى على التوالي. هنا سنقدم فقط تكوين المجموعات الثلاث. في الواقع ، يشبه مركز تسجيل العقدة المزدوجة. يمكن أن يشير كل مركز تسجيل إلى العقدتين الأخريين على التوالي ، واستخدام Application.yml لتكوينه.
تفاصيل تكوين Application.yml كما يلي:
-الربيع: التطبيق: الاسم: Spring-Cloud-Eureka ملفات التعريف: Peer1server: المنفذ: 8000eureka: مثيل: اسم المضيف: Peer1 العميل: ServiceUrl: DefaultZone: http: // peer2: 8001/eureka/، http: // peer3: 8002/eureka/applic. المنفذ: 8001eureka: مثيل: اسم المضيف: Peer2 العميل: ServiceUrl: DefaultZone: http: // peer1: 8000/eureka/، http: // peer3: 8002/eureka/--- spring: application: spring-cloud-eureka ملفات التعريف: peer3server DefaultZone: http: // peer1: 8000/eureka/، http: // peer2: 8001/eureka/
ابدأ مركز تسجيل Eureka مع معلمات التكوين لـ Peer1 و Peer2 و Peer3 على التوالي.
java -jar spring-cloud-eureka-0.0.1-snapshot.jar-spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar-spring.profiles.active = -spring.profiles.active = peer3
بعد البدء واحدًا تلو الآخر ، يدخل المتصفح: http://localhost:8000/ التقديم كما يلي:
يمكنك رؤية المعلومات ذات الصلة حول PEER2 و PEER3 في PEER1. حتى الآن ، تم الانتهاء من مجموعة Eureka
نموذج الرمز
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.