يوضح:
يعد Ribbon دورًا في Spring-Cloud كمستهلك للخدمة ، حيث يمكن للعميل من خلاله استهلاك خدمات مزود الخدمة.
على سبيل المثال ، في هذا المثال ، يسجل مزود الخدمة في مركز التسجيل. يوفر مزود الخدمة واجهة خدمة ، وإعادة سلسلة Hello. نسمي هذه الواجهة من خلال الشريط ، ثم الحصول على خدمة مزود الخدمة دون تعريض عنوان مزود الخدمة الحقيقي.
فرضية:
اتبع البرامج التعليمية السابقة لإنشاء مركز للتسجيل ومزود الخدمة. يمكنك استخدام مركز التسجيل المتساقط هنا أو لا يمكنك استخدامه. تم تعيين هذا مؤقتًا ليكون مركزًا للتسجيل الذي تم إعداده قبل الاستخدام ، ويمكن لمزود الخدمة تقديمه فقط.
تحضير:
1. ابدأ مركز التسجيل
وفقًا للبرنامج التعليمي السابق ، استخدم PEER1 و PEER2 لبدء مركز التسجيل في شظفين. إذا كانت عقدة واحدة ، يمكنك بدء المشروع مباشرة.
بعد بدء التشغيل ، يمكنك التحقق من المضيف المحلي: 1111 أو LocalHost: 1112 ، كما هو موضح في الشكل
2. ابدأ مزود الخدمة
من أجل رؤية وضع موازنة التحميل ، يجب بدء مزودي الخدمة
وفقًا للبرنامج التعليمي السابق ، يتم تمكين محطتين لبدء المنافذ المحددة (يمكن لخدمتان متطابقتان أيضًا تكوين منافذ مختلفة في ملفات التكوين الخاصة بهما). التعليمات الطرفية هي كما يلي:
CD TargetJava -jar springclouddemo-0.0.1-snapshot.jar-server.port = 8080
CD TargetJava -jar springclouddemo-0.0.1-snapshot.jar-server.port = 8081
نتائج بدء التشغيل:
في هذه المرحلة ، تم الانتهاء من الاستعدادات
نص:
1. بناء خدمة الشريط
إنشاء مشروع Maven جديد دون استخدام القالب. يسمى المشروع Robbin-Customer ، ويتم الرجوع إلى تبعيات الاستيراد على النحو التالي:
<؟ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <tordvent> 4.0.0 </modelverversion> <soph> 1.0-snapshot </version> <parent> <roupiD> org.springframework.boot </rougeid> <intifactid> spring-boot-starter-parent </sensifactid> <sophid> 1.5.9.Release </version> <StifactId> Spring-Boot-Starter-Web </stifactid> </sependency> <reperence> <roupiD> org.springframework <StifactId> spring-cloud-starter-ribbon </stifactid> <الإصدار> الإصدار </version> </respency> </reperence> </reperence> <redencedmanagement> <ependencies> <reperency> <roupiD> org.springframework.cloud </rougeid> prepend-cloud-cloud </aprop> <splex> <scope> استيراد </scope> <type> pom </type> </sependency> </rependencies> </perendencies> </reperencymanagement> </project>
قم بإنشاء فئة بدء تشغيل Springboot جديدة وتسليمها إلى حاوية الربيع للإدارة
package com.cnblogs.hellxz ؛ استيراد org.springframework.boot.springapplication ؛ استيراد org.springframework.boot.autoconfigure.springbootapplication ؛ استيراد org.springframework.cloud.client.discovery.enableCableCclient ؛ org.springframework.cloud.client.loadbalancer.loadBalanced ؛ استيراد org.springframework.context.annotation.bean */ @enableScoveryClient @springbootapplicationpublicpublic clientapplication {bean // دعم هذه الفاصوليا إلى حاوية spring loadbalanced // تمكين موازنة التحميل من خلال هذا التعليقات التوضيحية RestTemplate () {return resttemplate () ؛ } public static void main (string [] args) {springapplication.run (customerapplication.class ، args) ؛ }}قم بإنشاء application.yml في دليل SRC/الموارد لمعلومات تسجيل التكوين. تستخدم هذه المقالة مركز التسجيل المشتعل. يرجى تكوين defaltzone لعقدة واحدة.
الخادم: المنفذ: 9000 #قم بإصلاح منفذ الخدمة لـ RIBBON-CUNTOMER Spring: التطبيق: الاسم: RIBBON-CUSTOMER #SPECINE اسم التطبيق #قم بإصلاح عنوان مركز تسجيل EUREKA EUREKA: العميل: Serviceurl: DefaultZone: http: // peer1: 1111/eureka/، http: // peer2: 1112/eureka
قم بإنشاء customercontroller في دليل فئة بدء التشغيل ، حقن RestTemplate للاتصال بواجهة الخدمة
حزمة com.cnblogs.hellxz ؛ استيراد org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.web.bind.annotation.requestmapp org.springframework.web.bind.annotation.restController ؛ استيراد org.springframework.web.client.resttemplate ؛/** * @auuthor: hellxz * description: تطبيق المستهلك: 2018/4/16. RestTemplate private resttemplate resttemplate ؛ requestmapping (value = "/ribbon-customer" ، method = requestMethod.get) السلسلة العامة Hellocustomer () {// تم التعليق هنا لأنني أخرجتها من واجهة مزود خدمة الوصول المباشرة من قبل ، وبالتالي لن يتم إرجاع النتيجة ، وسيتم الإبلاغ عن خطأ // عودة RestTemplate.getForentity ("http: // localhost: 8080/hello" ، string.class) .getBody () ؛ // استخدم RestTemplate لاستدعاء واجهة microservice resttemplate.getforentity ("http: // hello-service/hello" ، string.class) .getBody () ؛ }}ملاحظة: يعطي السطر 24 من الرمز أعلاه عرضًا للخطأ. في حالة حدوث خطأ عند الوصول إلى واجهة الشريط وتظهر صفحة خطأ بيضاء ، يرجى التحقق هنا
في هذه المرحلة ، تم بناء تطبيق المستهلك الشريط وبدأ الاختبار
امتحان:
تفضل بزيارة http: // localhost: 1111/وجدنا أن تطبيق المستهلك الشريط هذا قد تم تسجيله في مركز التسجيل
تفضل بزيارة http: // localhost: 9000/ribbon-customer
تذكر أنه إذا كان هناك وصول في مشروع مزود الخدمة ، فسيتم طباعة المعلومات ، لأنه تم بدء مزودي الخدمة ، هنا يمكنك اختبار موازنة الشريط.
عرض إخراج مزود الخدمة
الطرف الثاني لا ، ولا يزال يتم عرضه في نقاط نهاية Eureka الحل عبر خط التكوين
تحديث الصفحة لعرض المحطة. نظرًا لأن تنفيذ موازنة التحميل الافتراضي للشريط ، قد يحدث للوصول إلى نفس الخدمة عدة مرات. قم بتحديث الصفحة عدة مرات ، وسيتم عرضها بالتأكيد في مصطلحات أخرى!
خاتمة:
كمستهلك للخدمة ، لا يمكن لـ RIBBON فضح عنوان الواجهة للمستخدم أثناء الحصول على الخدمات المقدمة من مزود الخدمة. يمكن ملاحظة أنه عند الاتصال بواجهة الخدمة هنا ، يتم استخدام اسم خدمة مزود الخدمة بدلاً من اسم المضيف. هذه الميزة مهمة للغاية في إطار إدارة الخدمة.
منذ أن تعلمت مولد Jhipster أولاً ، أود أن أتوقع ذلك مسبقًا ، ثم ستكون هناك تقنية تسمى Feign يمكنها استبدال الشريط. هذه السلسلة من المدونات هي جميع ملاحظات الدراسة. في العملية الفعلية ، قد يكون هناك موقف يكون فيه التطبيق مزود خدمة ومستهلك خدمة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.