لقد أكملنا المكونين الأساسيين لمركز التسجيل ومزود الخدمة. تقدم هذه المقالة خدمة الاتصال باستخدام Spring Cloud Ribbon لتحميل الموازنة على جانب العميل.
موازنة التحميل (LB: موازنة التحميل) هي أول مشكلة يتم حلها. قبل الخدمات الدقيقة ، كان حل LB أساسًا حل موازنة التحميل المركزي ، و LB مستقل آخر بين مستهلكي الخدمة ومقدمي الخدمات. عادةً ما تكون LB أجهزة مخصصة ، مثل F5 ، أو تعتمد على البرمجيات ، مثل VS ، و Haproxy ، وما إلى ذلك. يوجد جدول تعيين عناوين لجميع الخدمات على LB. عندما يقوم مستهلك الخدمة باستدعاء خدمة مستهدفة ، فإنه يبدأ أولاً طلبًا إلى LB. يستخدم LB سياسة معينة (مثل Round-Robin) لتحميل موازنة الطلب إلى الخدمة المستهدفة.
يوفر ظهور MicroServices فكرة أخرى لتنفيذ LB: لدمج وظائف LB في عملية المستهلكين في الخدمة في شكل مكتبات ، بدلاً من توفيرها بواسطة جهاز أو خادم مركزي. هذا الحل يسمى موازنة التحميل الناعمة أو موازنة تحميل العميل. في Spring Cloud ، بالتزامن مع وظيفة تسجيل خدمة Eureka ، يقوم شريط الشريط الفرعي بتنفيذ موازنة التحميل لعميل REST.
خدمة المستهلكين مع شريط سحابة الربيع
قم بإنشاء مشروع جديد للعينة من العينة الربيعية
قم بإنشاء مشروع فرعي جديد للعينة من العينة الربيعية
أضف تبعيات الشريط و eureka
<ependencies> <Rependency> <roupiD> org.springframework.cloud </rougeid> <StifactId> spring-cloud-starter-eureka </shintifactid> </reperence> <redence> <roupiD> org.springframework.cloud </groupid> <roupl> org.springframework.boot </groupId> <StifactId> Spring-Boot-Starter-Web </stifactid> </reperence> </
تكوين ApplicationIn.Properties ، عنوان مركز التسجيل
spring.application.name = المستهلك
اكتب USERCONTROLLER ، أضف التعليق التواقي المتوازن ، وتمكين موازنة تحميل الشريط
@controller @requestMapping ("user") الفئة العامة USERCONTROLLER {bean@loadbalanced restTemplate initRestTemplate () {return new restTemplate () ؛ } autowired private resttemplate resttemplate ؛ @requestmapping ("add") @Responsebody Public String ADD (سلسلة المستخدمين ، عمر السلسلة) {resttemplate.getforentity ("http: // producer/user/add" ، string.class ، username ، age) .getBody () ؛ }}اكتب تطبيق المستهلك ، إضافة enableeurekaclient ، تمكين تسجيل الخدمة
@enableeurekaclient@springbootapplicationpublicpublic classeplication {public static void main (string [] args) {springapplication.run (consumerapplication.class ، args) ؛ }}منتج نشر الكتلة
من أجل محاكاة منتج الكتلة ، يتم إنشاء تطبيق جديد.
التطبيق-profile1.properties
spring.application.name = producerserver.port = 20001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/، http: // localhost: 10002/eureka/
التطبيق-profile2.properties
spring.application.name = producerserver.port = 20002eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/، http: // localhost: 10002/eureka/
من أجل اختبار تأثير التحميل ، كتبنا منفذ الخدمة المدعوين
@controller@requestMapping ("user") الفئة العامة USERCONTROLLER {private logger logger = loggerfactory.getLogger (getClass ()) ؛ Autowired Private DiscoveryClient Client ؛ requestmapping ("add") @Responsebody public adduser (اسم مستخدم السلسلة ، عمر السلسلة) {return "النجاح من" + client.getlocalserviceinstance (). gethost () + ":" + client.getlocalserviceinstance (). }}ابدأ الاختبار
ابدأ مركز التسجيل
قم بتكوين ملفات تعريف نشطة إلى ملف التعريف 1 وملف الشخصي 2 على التوالي ، وابدأ مرتين ، وأكمل بدء تشغيل خدمة مجموعة التسجيل.
بدء مزود خدمة
ابدأ مزود الخدمة بنفس الطريقة المذكورة أعلاه.
ابدأ في خدمة المستهلكين
يمكن أن يتم مزود الخدمة على أساس مستقل ، ويمكن بدء تطبيق المستهلك بشكل طبيعي.
يؤكد
أدخل http: // localhost: 30001/user/add من المتصفح
قم بزيارة مرة أخرى:
يمكن ملاحظة أن خدمة مكالمات موازنة التحميل الخاصة بنا كانت ناجحة ، وأن الافتراضي هو موازنة التحميل وفقًا للتدريب على الدوران.
لخص
تقدم هذه المقالة واستكمال المكالمة لاستخدام الشريط السحابي الربيع لموازنة تحميل العميل.
بعد ذلك ، سنستمر في تقديم كيفية استخدام Spring Cloud لمراقبة الخدمة.
تنزيل رمز المصدر
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.