Layanan microser dengan Spring Boot. Bagian 4. Menggunakan Ribbon untuk menyeimbangkan beban

Ini adalah bagian 4 dari seri arsitektur microservice, di mana kami akan fokus menggunakan Ribbon untuk load balancing.

Artikel ini adalah bagian dari seri Spring Boot Microservices:


Dalam seri artikel ini, Anda akan menjadi terbiasa dengan konsep layanan microser dan belajar bagaimana membuat layanan microser menggunakan Spring Boot dan Spring Cloud.

Panduan ini akan membantu Anda mempelajari dasar-dasar arsitektur layanan mikro. Kami juga akan mulai melihat implementasi microservice dasar dengan Spring Boot.

Kami akan membuat sepasang layanan microser dan membuatnya berkomunikasi satu sama lain menggunakan Eureka (Server Penamaan Eureka) dan server nama Ribbon untuk menyeimbangkan beban di sisi klien.

Dalam tutorial ini, kita akan melanjutkan kisah tentang bagaimana menggunakan Ribbon sebagai penyeimbang beban dalam proyek layanan-mikro Spring Boot.

Anda akan belajar:


  • Apa yang dibutuhkan untuk load balancing?
  • Apa itu Ribbon?
  • Bagaimana cara menambahkan Ribbon ke proyek Spring Boot?
  • Bagaimana cara mengaktifkan dan mengkonfigurasi Ribbon untuk load balancing?

Ikhtisar Layanan Mikro


Di dua bagian sebelumnya, kami membuat layanan microser dan membuat koneksi di antara mereka.

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, } 

Ketika kami meluncurkan layanan di atas, Anda akan melihat bahwa permintaan tersebut juga dikirimkan ke layanan Forex. Ini luar biasa!

Kami menciptakan dua layanan microser dan membangun koneksi di antara mereka.



Namun, kami membuat hardcode URL untuk FS di komponen 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); } 

Ini berarti bahwa ketika memulai mesin virtual baru dari layanan Forex, kami tidak memiliki cara untuk mendistribusikan muatannya.

Di bagian ini, mari sekarang aktifkan penyeimbangan beban sisi klien menggunakan Ribbon.

Anda akan membutuhkan:


  • Maven 3.0+ - alat build Anda
  • IDE favorit Anda. Kami menggunakan Eclipse.
  • JDK 1.8+

Proyek Maven Siap dengan Sampel Kode


Repositori Github memiliki semua contoh kode.

Nyalakan Pita


Tambahkan ketergantungan Ribbon di pom.xml:

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

Aktifkan RibbonClient di CurrencyExchangeServiceProxy:

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

Konfigurasikan instance di application.properties:

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

Luncurkan Layanan Forex di 8001


Pada langkah sebelumnya, kami mengonfigurasi Ribbon untuk mendistribusikan beban di seluruh instance. Namun, kami tidak memiliki turunan Layanan Forex tunggal yang berjalan pada 8001.

Kami dapat meluncurkannya dengan mengkonfigurasi konfigurasi peluncuran, seperti yang ditunjukkan pada gambar di bawah ini:



Pita beraksi


Saat ini kami memiliki layanan berikut:

  • Microservice Currency Converter (CCS) pada 8100
  • Dua contoh microservice Forex pada 8000 dan 8001

Sekarang Anda akan melihat bahwa permintaan untuk CCS akan didistribusikan antara dua contoh dari layanan microser Forex melalui Ribbon.

Permintaan 1


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

Minta 2


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

Anda mungkin memperhatikan bahwa nomor port di kedua jawaban berbeda.

Ringkasan


Kami menciptakan dua layanan microser dan membangun koneksi di antara mereka.



Kami menggunakan Ribbon untuk mendistribusikan beban antara dua contoh layanan Forex.

Namun, kami membuat kode URL dari kedua instance FS di CCS. Ini berarti bahwa setiap kali instance baru FS muncul, kita perlu mengubah konfigurasi CCS. Ini tidak keren.

Di bagian selanjutnya, kita akan menggunakan Server Penamaan Eureka untuk menyelesaikan masalah ini.

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


All Articles