Microservices مع الحذاء الربيع. الجزء 4. استخدام الشريط لموازنة الحمل

هذا جزء 4 من سلسلة هندسة microservice ، حيث سنركز على استخدام Ribbon لموازنة التحميل.

هذا المقال جزء من سلسلة Spring Boot Microservices:


في هذه السلسلة من المقالات ، ستتعرف على مفهوم الخدمات المصغرة وتتعرف على كيفية إنشاء الخدمات المصغرة باستخدام Spring Boot و Spring Cloud.

سيساعدك هذا الدليل على تعلم أساسيات هندسة الخدمات المصغرة. سنبدأ أيضًا في إلقاء نظرة على تطبيق microservice الأساسي باستخدام Spring Boot.

سننشئ زوجًا من الخدمات المصغرة ونجعلهم يتواصلون مع بعضهم البعض باستخدام خوادم اسم Eureka (اسم خادم يوريكا) ورابون لتوازن الحمل على جانب العميل.

في هذا البرنامج التعليمي ، سنواصل قصة كيفية استخدام Ribbon كموازن للتحميل في مشروع Spring Boot microservice.

سوف تتعلم:


  • ما هو المطلوب لموازنة الحمل؟
  • ما هو الشريط؟
  • كيف تضيف الشريط إلى مشروع Spring Boot؟
  • كيفية تمكين وتهيئة الشريط لموازنة الحمل؟

Microservice نظرة عامة


في الجزءين السابقين ، أنشأنا خدمات ميكروية وأقمنا اتصالًا بينهما.

GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

 { id: 10002, from: "EUR", to: "INR", conversionMultiple: 75, quantity: 10000, totalCalculatedAmount: 750000, port: 8000, } 

عندما نطلق الخدمة أعلاه ، سترى أن الطلب قد تم إرساله أيضًا إلى خدمة فوركس. هذا رائع!

أنشأنا اثنين microservices وأقمنا اتصال بينهما.



ومع ذلك ، فقد تم ترميز عنوان URL الخاص بـ FS في مكون CCS ، CurrencyExchangeServiceProxy.

 @FeignClient(name="forex-service" url="localhost:8000") public interface CurrencyExchangeServiceProxy { @GetMapping("/currency-exchange/from/{from}/to/{to}") public CurrencyConversionBean retrieveExchangeValue (@PathVariable("from") String from, @PathVariable("to") String to); } 

هذا يعني أنه عند بدء تشغيل مثيلات جديدة لخدمة فوركس ، ليس لدينا طريقة لتوزيع العبء عليها.

في هذا الجزء ، لنقم الآن بتمكين موازنة التحميل من جانب العميل باستخدام الشريط.

ستحتاج:


  • Maven 3.0+ - أداة البناء الخاصة بك
  • IDE المفضل لديك. نحن نستخدم الكسوف.
  • JDK 1.8+

مشروع جاهز مخضرم مع عينات الكود


يحتوي مستودع جيثب على كل أمثلة الكود.

بدوره على الشريط


أضف تبعية الشريط في pom.xml:

  <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> 

تمكين RibbonClient في CurrencyExchangeServiceProxy:

 @FeignClient(name="forex-service") @RibbonClient(name="forex-service") public interface CurrencyExchangeServiceProxy { 

تكوين المثيلات في application.properties:

 forex-service.ribbon.listOfServers=localhost:8000,localhost:8001 

إطلاق خدمة فوركس على 8001


في الخطوة السابقة ، قمنا بتكوين الشريط لتوزيع الحمل عبر الحالات. ومع ذلك ، ليس لدينا مثيل خدمة فوركس واحد يعمل على 8001.

يمكننا تشغيله من خلال تكوين تكوين التشغيل ، كما هو مبين في الشكل أدناه:



الشريط في العمل


لدينا حاليا الخدمات التالية:

  • Microservice Currency Converter (CCS) on 8100
  • حالتان من خدمات micros Forex في 8000 و 8001

سترى الآن أن الطلبات إلى CCS سيتم توزيعها بين حالتين من خدمات micros على الفوركس عبر Ribbon.

طلب 1


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

طلب 2


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

قد تلاحظ أن أرقام المنافذ في الإجابات مختلفة.

ملخص


أنشأنا اثنين microservices وأقمنا اتصال بينهما.



نستخدم Ribbon لتوزيع الحمل بين حالتين من خدمة Forex.

ومع ذلك ، فنحن نرمز لعنوان URL لمثيلتي FS في CCS. هذا يعني أنه في كل مرة تظهر نسخة جديدة من FS ، سنحتاج إلى تغيير تكوين CCS. هذا ليس بارد.

في الجزء التالي ، سوف نستخدم خادم تسمية Eureka لحل هذه المشكلة.

Source: https://habr.com/ru/post/ar485608/


All Articles