افتتاح
يعتمد هذا المثال على Dringboot دمج قاعدة بيانات ذاكرة H2 ، وإدراك اختبارات الوحدة واستقلال قاعدة البيانات واستخدام RestTemplate لاستهلاك خدمة Rectful في Spring Boot.
في مثال الخدمة المريحة التي تستخدم RestTemplate لاستهلاك SPRING Boot ، ذكرنا أنه عند استدعاء خدمة Boot Service ، يجب كتابة عنوان URL للخدمة إلى ملف التكوين ، ولكن بغض النظر عن هاتين الطريقتين ، بمجرد تغيير عنوان IP ، يجب تغيير البرنامج وإعادة نشر الخدمة. يمكن تجنب هذه المشكلة بشكل فعال عند استخدام الشريط.
مقدمة:
هناك طريقتان لتنفيذ موازنة التحميل الناعمة ، وهما موازنة التحميل على الخادم وتحديد الموازنة على العميل.
موازنة التحميل من جانب الخادم: عندما يصدر المتصفح طلبًا إلى الخلفية ، سيتم إرسال طلب أولاً إلى خادم الوكيل العكسي. سيقرر خادم الوكيل العكسي الخادم الذي يرسل طلبًا بناءً على IP: جدول تعيين المنفذ وسياسة موازنة التحميل التي ينشرها العميل. بشكل عام ، يتم استخدام تقنية الوكيل العكسي Nginx.
موازنة تحميل العميل: عندما يقدم المتصفح طلبًا إلى الخلفية ، سيقوم العميل بسحب معلومات الخدمة المتاحة المسجلة على الخادم إلى مسجل الخدمة (على سبيل المثال: Eureka Server) ، ثم يضغط مباشرة على الخادم لإرسال الطلب وفقًا لسياسة موازنة التحميل. تتم هذه العملية برمتها على جانب العميل ولا تتطلب مشاركة خادم الوكيل العكسي.
1. ابدأ خادم يوريكا
يرجى الرجوع إلى هذا المثال: ابدأ خادم Eureka في Spring Cloud
2. ابدأ الخدمات المجهرية والتسجيل مع خادم Eureka
Spring Cloud - سجل خدمة التمهيد الربيع إلى خادم يوريكا
من أجل إثبات تأثير موازنة التحميل ، ابدأ خدمة أخرى ، يرجى ملاحظة أنه يجب تغيير رقم المنفذ إلى غير متسق
3. أضف دعم الشريط
1. أضف تبعيات الشريط
2. أضف دعم موازنة التحميل
حزمة com.chhliu.springboot.restful ؛ استيراد org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.boot.springapplication ؛ استيراد org.springframework.boot.autoconfigure.SpringBootApplication ؛ استيراد org.springframework.boot.web.client.restTemplateBuilder ؛ استيراد org.springframework.cloud.client.loadbalancer.loadBalanced ؛ استيراد org.springframework.cloud.netflix.eureka.enableeurekaclient ؛ استيراد org.springframework.context.annotation.bean ؛ استيراد org.springframework.web.client.restTemplate ؛ springBOOTAPPLICATION enableeurekaclient الفئة العامة springbootrestTemplateApplication {autowired private restTemplateBuilder Builder ؛ bean@loadbalanced // إضافة دعم موازنة التحميل بسيط للغاية. ما عليك سوى إضافة التعليق التوضيحي المتوازن إلى RestTemplate. ثم RestTemplate لديه وظيفة موازنة التحميل. إذا لم تتم إضافة التعليقات التوضيحية المتوازنة ، فسيتم الإبلاغ عن java.net.unknownhostexception: SPRINGBOOT-H2 استثناء. في هذا الوقت ، لا يمكن استدعاء الخدمة عن طريق تسجيل اسم الخدمة على خادم Eureka ، لأنه لا يمكن لـ RestTemplate تعيين من اسم الخدمة إلى IP: المنفذ ، ويتم تنفيذ وظيفة التعيين بواسطة LoadBalancerClient. public resttemplate resttemplate () {return builder.build () ؛ } public static void main (string [] args) {springapplication.run (SpringBootRestTemplateApplication.class ، args) ؛ }} 3. قم بتعديل عنوان URL لخدمة الدفاع الدقيقة
حزمة com.chhliu.springboot.restful.controller ؛ استيراد org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.web.bind.annotation.getMapping ؛ استيراد org.springframework.web.bind.annotation.pathvariable ؛ استيراد org.springframework.web.bind.annotation.restController ؛ استيراد org.springframework.web.client.restTemplate ؛ استيراد com.chhliu.springboot.restful.vo.user ؛ RestController الفئة العامة RestTemplateController {autowired private resttemplate resttemplate ؛ getMapping ("/template/{id}") المستخدم العام findById (@pathvariable معرف طويل) {// تغيير IP الأصلي: نموذج المنفذ إلى اسم التطبيق المسجل على مستخدم خادم eureka u = this.restTemplate.getForObject ("http: // springboot-h2/user/" ide.class) ؛ System.out.println (u) ؛ أعدك ؛ }}4. تحقق من حالة خادم يوريكا
5. في المتصفح ، قم بتحديث http: // localhost: 7904/template/2 عنوان عدة مرات
6. نتائج الاختبار
خدمة المنفذ 7900:
hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = Hibernate: حدد user0_.id as id1_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_0_ من المستخدم user0_ where user0_.id =؟
خدمة المنفذ 7901:
hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id = Hibernate: حدد user0_.id as id1_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_0_ من المستخدم user0_ where user0_.id =؟ hibernate: حدد user0_.id as id1_0_0_ ، user0_.age as Age2_0_0_ ، user0_.balance as balance3_0_0_ ، user0_.name as name4_0_0_ ، user0_.username as username5_0_ من user0_ user0_ where user0_.id =
7904 خدمة المنفذ:
المستخدم [المعرف = 2 ، اسم المستخدم = user2 ، name = li si ، age = 20 ، balance = 100.00] 2017-01-23 09: 58: 05.682 info 7436 --- [erlistupdater-0] niws.loadbalancer.availabilityfilteringrule.activeConnectionsLimit = 2147483647 المستخدم [معرف = 2 ، اسم المستخدم = user2 ، الاسم = li si ، العمر = 20 ، توازن = 100.00] المستخدم [id = 2 ، username = user2 ، name = li si ، age = 20 ، balance [ الرصيد = 100.00] مستخدم [معرف = 2 ، اسم المستخدم = user2 ، الاسم = li si ، العمر = 20 ، التوازن = 100.00] المستخدم [معرف = 2 ، المستخدم = user2 ، name = li si ، العمر = 20 ، التوازن = 100.00] مستخدم [id = 2 ، usernam الرصيد = 100.00] المستخدم [معرف = 2 ، اسم المستخدم = user2 ، الاسم = li si ، العمر = 20 ، التوازن = 100.00]
من نتائج الاختبار أعلاه ، يمكننا أن نرى أنه تم تعديل ما مجموعه 7904 من خدمات المنافذ 9 مرات ، منها 7904 تم تعديل خدمات المنافذ 4 مرات ، وتم تعديل 7901 منافذ 5 مرات ، والتي كانت بالضبط 9 مرات.
بعد الخطوات المذكورة أعلاه ، يتم استخدام الشريط بشكل أساسي لتحقيق وظيفة موازنة تحميل العميل.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.