Pengantar Pita
Dalam sistem terdistribusi, setiap layanan mikro akan menggunakan beberapa contoh. Cara mendistribusikan konsumen layanan secara merata ke beberapa instance penyedia layanan memerlukan penggunaan penyeimbang beban.
Pita adalah penyeimbang beban, yang menyediakan banyak algoritma penyeimbang beban, seperti pemungutan suara, dan kemudian, setelah mengkonfigurasi alamat penyedia layanan, permintaan konsumen layanan dapat didistribusikan secara merata.
Mengintegrasikan pita untuk melayani konsumen
Tambahkan Pustaka Ketergantungan Pita
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-ribbobn </t Artifactid> </dependency>
Tambahkan anotasi @LoadBalaced ke resisttemplate untuk mengintegrasikan resttemplate dan pita
@Bean@loadbalacedpublic resttemplate restTemplate () {return new resttemplate ();}Ubah Pengontrol dan Ubah Alamat Permintaan ke http: // FLIM-USER/USER/. Ketika Ribbon dan Eureka digunakan bersama -sama, nama host virtual akan dipetakan secara otomatis ke alamat jaringan Microservice, dan LoadBalanCerClient disuntikkan untuk meng -output simpul layanan mikro yang saat ini dipilih.
@RestControllerPublic class moviecontroller {private final logger log = loggerFactory.getLogger (moviecontroller.class); @Autowired Private RestTemplate RestTemplate; @Autowired Private LoadBalanCerClient LoadBalancerClient; @GetMapping ("/user/{id}") pengguna publik findById (@pathvariable int id) {return this.resttemplate.getForObject ("http: // flim-user/"+id, user.class); } @GetMapping ("/log-instance") public void loginStance () {serviceInstance serviceInstance = this.loadBalancerClient.Choose ("FLIM-USER"); log.info ("{}: {}: {}", serviceInstance.getServiceId (), serviceInstance.getHost (), serviceInstance.getport ()); }}Jalankan Program Uji
{"id": 1, "nama pengguna": "account1", "name": "Zhang San", "Age": 20, "Balance": 100.00}
Informasi berikut akan menjadi output saat mengakses http: // localhost: 8010/log-instance beberapa kali.
Anda dapat melihat bahwa permintaan akan didistribusikan secara merata ke dua layanan microser pengguna
2017-12-17 20: 47: 53.975 Info 12313 --- [NIO-8010-EXEC-2] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8764
2017-12-17 20: 47: 54.215 Info 12313 --- [NIO-8010-EXEC-1] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
2017-12-17 20: 47: 54.445 Info 12313 --- [NIO-8010-EXEC-3] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8764
2017-12-17 20: 47: 54.690 Info 12313 --- [NIO-8010-EXEC-4] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
2017-12-17 20: 47: 54.935 Info 12313 --- [NIO-8010-EXEC-5] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8764
Catatan: RestTemplate.getForObject (...) dan LoadBalanCerClient.Choose (...) tidak dapat ditulis dalam metode yang sama, karena rest-template sebenarnya adalah klien pita dan dirinya sendiri sudah berisi perilaku "pilih".
Mengkonfigurasi Pita berdasarkan Kode
Anda dapat menggunakan kode atau atribut Java untuk menyesuaikan konfigurasi pita. Kelas konfigurasi default pita adalah pitaclientConfiguration, atau Anda dapat menggunakan pojo untuk menyesuaikan konfigurasi pita. Konfigurasi ini berbutir halus. Klien pita yang berbeda dapat menggunakan konfigurasi yang berbeda.
Buat kelas konfigurasi pita
/*** Kelas ini adalah kelas konfigurasi* tidak boleh dipindai oleh componentscan*/ @configurationpublic kelas RibbonConfiguration {@bean public irule ribbonRule () {// aturan penyeimbang beban konfigurasi, ubah ke acak pengembalian acak baru randomRule (); }}Tentukan kelas konfigurasi untuk penyedia layanan menggunakan anotasi @ribbonClient atau @ribbonClients
@SpringbootApplication @enableDiscoveryclient @ribbonClient (name = "fliM-user", configuration = ribbonConfiguration.class) kelas publik flimconsumerapplication {@bean @bean @boadbalanced public resttemplate restTemplate () {return new restemplate (); } public static void main (string [] args) {springApplication.run (flimconsumerapplication.class, args); }}Kunjungi alamat uji http: // localhost: 8010/log-instance dan Anda dapat melihat bahwa permintaan akan didistribusikan secara acak ke dua layanan mikro.
2017-12-17 21: 08: 52.769 Info 12524 --- [NIO-8010-EXEC-7] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
2017-12-17 21: 08: 52.946 Info 12524 --- [NIO-8010-EXEC-8] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
2017-12-17 21: 08: 53.138 Info 12524 --- [NIO-8010-EXEC-9] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
2017-12-17 21: 08: 53.319 Info 12524 --- [IO-8010-EXEC-10] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8764
2017-12-17 21: 08: 53.511 Info 12524 --- [NIO-8010-EXEC-1] com.linyuan.controller.moviecontroller: FLIM-Pengguna: LinyUandembp: 8763
Catatan: Kelas konfigurasi pita tidak dapat dipindai oleh @Componentscan, jika tidak, informasi konfigurasi akan dibagikan oleh semua @RibbonClient. Oleh karena itu, jika Anda hanya ingin menyesuaikan konfigurasi klien pita tertentu, Anda harus mencegahnya dipindai oleh @ComponentScan.
Konfigurasikan pita dalam file konfigurasi
Menyesuaikan properti pita melalui file konfigurasi lebih nyaman, dan awalan konfigurasi adalah <ClientName> .ribbon.
Tentukan konfigurasi pita melalui file konfigurasi
FLIM-Pengguna: Pita: nfloadbalancerruleClassname: com.netflix.loadbalancer.randomrule
Konfigurasi Global Pita yang biasa digunakan
ribbon: ConnectionTimeout: #Connection timeout ReadTimeout: #Read timeout OkToRetryOnAllOperatotions: #Retry all operation requests MaxAutoRetriesNextServer: #Switch server instance retries MaxAutoRetries: #Retry on the current instance ServerListRefreshInterval: #Reset time between refreshing the service list source
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.