Pembukaan
Contoh ini didasarkan pada database memori H2 Springboot, mewujudkan uji unit dan basis data-independen dan menggunakan RestTemplate untuk mengkonsumsi layanan RESTFFET Spring Boot.
Dalam contoh layanan RESTFUL yang menggunakan RestTemplate untuk mengkonsumsi boot musim semi, kami menyebutkan bahwa ketika memanggil Layanan Spring Boot, URL layanan perlu ditulis ke file konfigurasi, tetapi tidak peduli mana dari dua metode ini, setelah alamat IP berubah, program perlu diubah dan layanan dipekerjakan kembali. Masalah ini dapat dihindari secara efektif saat menggunakan pita.
Kata pengantar:
Ada dua cara untuk mengimplementasikan penyeimbangan beban lunak, yaitu load balancing di server dan menyeimbangkan beban pada klien.
Penyeimbangan beban sisi server: Ketika browser mengeluarkan permintaan ke latar belakang, pertama-tama akan mengirim permintaan ke server proxy terbalik. Server Proxy Reverse akan memutuskan server mana yang akan mengirim permintaan berdasarkan IP: tabel pemetaan port dan memuat kebijakan penyeimbangan yang digunakan oleh klien. Secara umum, teknologi proxy terbalik nginx digunakan.
Balancing Load Klien: Ketika browser membuat permintaan ke latar belakang, klien akan menarik informasi layanan yang tersedia terdaftar ke server ke pendaftar layanan (misalnya: Eureka Server), dan kemudian langsung menekan server mana untuk mengirim permintaan sesuai dengan kebijakan penyeimbangan beban. Seluruh proses ini dilakukan di sisi klien dan tidak memerlukan partisipasi server proxy terbalik.
1. Mulai Eureka Server
Silakan merujuk ke contoh ini: Mulai Eureka Server di Spring Cloud
2. Mulai Microservice dan Daftarkan dengan Eureka Server
Spring Cloud - Daftarkan Layanan Spring Boot ke Eureka Server
Untuk menunjukkan efek penyeimbangan beban, mulai layanan lain, harap dicatat bahwa nomor port perlu diubah menjadi tidak konsisten
3. Tambahkan Dukungan Pita
1. Tambahkan dependensi pita
2. Tambahkan dukungan penyeimbangan beban
paket com.chhliu.springboot.restful; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.boot.springapplication; impor org.springframework.boot.autoconfigure.springbootApplication; impor org.springframework.boot.web.client.resttemplateBuilder; impor org.springframework.cloud.client.loadbalancer.loadbalanced; impor org.springframework.cloud.netflix.eureka.enableeureKaclient; impor org.springframework.context.annotation.bean; impor org.springframework.web.client.resttemplate; @SpringbootApplication @EnableeureKaclient kelas publik springbootresttemplateApplication {@Autowired private restTemplateBuilder builder; @Bean @LoadBALADED // Menambahkan dukungan penyeimbang beban sangat sederhana. Anda hanya perlu menambahkan anotasi @LoadBalanced ke restTemplate. Maka resttemplate memiliki fungsi penyeimbangan beban. Jika anotasi @LoadBalanced tidak ditambahkan, java.net.unknownhostException: Exception Springboot-H2 akan dilaporkan. Pada saat ini, Layanan tidak dapat dipanggil dengan mendaftarkan nama layanan di Eureka Server, karena RestTemplate tidak dapat memetakan dari nama layanan ke IP: Port, dan fungsi pemetaan diimplementasikan oleh LoadBalanCerClient. resttemplate public restemplate () {return builder.build (); } public static void main (string [] args) {springApplication.run (springbootresttemplateApplication.class, args); }} 3. Ubah URL dari servis mikro panggilan
paket com.chhliu.springboot.restful.controller; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.web.bind.annotation.getmapping; impor org.springframework.web.bind.annotation.pathvariable; impor org.springframework.web.bind.annotation.RestController; impor org.springframework.web.client.resttemplate; impor com.chhliu.springboot.restful.vo.user; @RestController kelas publik restTemplateController {@autowired private restTemplate restTemplate; @GetMapping ("/template/{id}") pengguna publik findById (@pathvariable id long id) {// ubah formulir IP: port asli ke nama aplikasi yang terdaftar di eureka server pengguna u = this.resttemplate.getForObject ("http: // springboot-h2/use/ + id, use, users. System.out.println (u); mengembalikanmu; }}4. Periksa status server eureka
5. Di browser, refresh http: // localhost: 7904/template/2 alamat berkali -kali
6. Hasil tes
Layanan Port 7900:
Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id sebagai ID1_0_0_, user0_.balance as balance3_0_0_, user0_.name as Name4_0_0_, user0_.username sebagai username5_0_0_ dari pengguna pengguna0_ di mana user0_.id =?
7901 Layanan Port:
Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =? Hibernate: Pilih user0_.id sebagai ID1_0_0_, user0_.balance as balance3_0_0_, user0_.name as Name4_0_0_, user0_.username sebagai username5_0_0_ dari pengguna pengguna0_ di mana user0_.id =? Hibernate: Pilih user0_.id as ID1_0_0_, user0_.age as Age2_0_0_, user0_.balance as balance3_0_0_, user0_.name as name4_0_, user0_.username sebagai username5_0_0_ dari user0 USER0_ di mana user0_.id =?
Layanan Port 7904:
Pengguna [id = 2, nama pengguna = user2, name = li si, usia = 20, saldo = 100.00] 2017-01-23 09: 58: 05.682 Info 7436 --- [erlistupdater-0] c.netflix.config.ChainedDynamicProperty: flipping property: springbon-h2.config.ChinedDynamicProperty: flipping property: springbon-h2.config.configynamicproperty: flipping property: springbon-h2.config.configynamicproperty: flipping property: springbon-h2.config.configynamicproperty: flipping property: springbon-h2.ribbon.ribbon. niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647 User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, Saldo = 100.00] Pengguna [id = 2, nama pengguna = user2, name = li si, usia = 20, saldo = 100.00]
Dari hasil tes di atas, kita dapat melihat bahwa total 7904 layanan pelabuhan disesuaikan 9 kali, di mana 7904 layanan port disesuaikan 4 kali, dan 7901 port disesuaikan 5 kali, yang tepat 9 kali.
Setelah langkah -langkah di atas, pita pada dasarnya digunakan untuk mewujudkan fungsi penyeimbangan beban klien.
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.