Kami telah menyelesaikan dua komponen dasar dari pusat pendaftaran dan penyedia layanan. Artikel ini memperkenalkan layanan panggilan menggunakan Spring Cloud Ribbon untuk memuat penyeimbangan di sisi klien.
Load Balancing (LB: Load Balancing) adalah masalah pertama yang akan diselesaikan. Sebelum layanan mikro, solusi LB terutama merupakan solusi penyeimbangan beban terpusat, dan LB independen lainnya antara konsumen layanan dan penyedia layanan. LB biasanya adalah perangkat keras khusus, seperti F5, atau berbasis perangkat lunak, seperti VS, Haproxy, dll. Ada tabel pemetaan alamat untuk semua layanan di LB. Ketika konsumen layanan memanggil layanan target, pertama -tama memulai permintaan ke LB. LB menggunakan kebijakan tertentu (seperti round-robin) untuk memuat menyeimbangkan permintaan ke layanan target.
Munculnya Microservices memberikan ide lain untuk implementasi LB: untuk mengintegrasikan fungsi LB ke dalam proses konsumen layanan dalam bentuk perpustakaan, daripada disediakan oleh perangkat atau server terpusat. Solusi ini disebut penyeimbangan beban lunak atau penyeimbangan beban klien. Di Spring Cloud, bersama dengan fungsi pendaftaran layanan Eureka, sub-proyek pita mengimplementasikan penyeimbangan beban untuk klien istirahat.
Melayani konsumen dengan pita awan pegas
Buat Proyek Konsumen Konsumen-Tutorial-Cloud-Cloud baru
Buat sub-proyek spring-cloud-sample-tutorial-consumer baru di bawah spring-cloud-sample-tutorial
Tambahkan Dependensi Pita dan Eureka
<Dependencies> <dependency> <GroupId> org.springframework.cloud </groupid> <t ArtifactId> Spring-cloud-starter-eureka </arttifactid> </gandendency> <sependency> <trotifd-cloud-cloudramework. <groupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-web </t Artifactid> </gandendency> </dependencies>
Konfigurasikan applicationin.properties, alamat pusat register
spring.application.name = ConsumerServer.port = 30001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
Tulis UserController, tambahkan anotasi @LoadBalanced, aktifkan penyeimbangan beban pita
@Controller @requestMapping ("user") kelas publik usercontroller {@bean @loadbalanced restTemplate initRestTemplate () {return new restTemplate (); } @Autowired Private RestTemplate RestTemplate; @RequestMapping ("add") @ResponseBody Public String Add (string username, string use) {return resttemplate.getForEntity ("http: // produser/user/add", string.class, username, usia) .getBody (); }}Tuliskan aplikasi konsumen, tambahkan @eNableEureKaclient, aktifkan pendaftaran layanan
@EnableeureKaclient@springbootApplicationPublic ClassApplication kelas {public static void main (string [] args) {springApplication.run (consumerapplication.class, args); }}Produser penyebaran cluster
Untuk mensimulasikan produser cluster, Application-Profile1.properties dan Application-Profile2.properties dibuat dalam proyek produser.
application-profile1.properties
spring.application.name = produsererver.port = 20001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
Aplikasi-profil2.properties
spring.application.name = produsererver.port = 20002eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
Untuk menguji efek beban, kami mengetik port dari layanan yang dipanggil
@Controller@requestMapping ("user") kelas publik usercontroller {private logger logger = loggerFactory.getLogger (getClass ()); @Autowired Private Discoveryclient Client; @RequestMapping ("add") @ResponseBody Public String AddUser (string username, string evene) {return "sukses dari" + client.getLocalServiceInstance (). Gethost () + ":" + client.getLocalServiceInstance (). Getport (); }}Mulai tes
Mulai pusat pendaftaran
Konfigurasikan profil aktif ke Profile1 dan Profile2 masing -masing, mulai dua kali, dan selesaikan startup layanan dari cluster registri.
Mulailah penyedia layanan
Mulailah penyedia layanan dengan cara yang sama seperti di atas.
Mulailah melayani konsumen
Penyedia layanan dapat dilakukan secara keseluruhan, dan aplikasi konsumen dapat dimulai secara normal.
memeriksa
Masukkan http: // localhost: 30001/user/add dari browser
Kunjungi lagi:
Dapat dilihat bahwa layanan panggilan penyeimbang beban kami telah berhasil, dan standarnya adalah penyeimbangan beban sesuai dengan pelatihan rotasi.
Meringkaskan
Artikel ini memperkenalkan dan menyelesaikan panggilan untuk menggunakan Spring Cloud Ribbon untuk penyeimbangan beban klien.
Selanjutnya, kami akan terus memperkenalkan cara menggunakan Spring Cloud untuk pemantauan layanan.
Unduh kode sumber
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.