Memandangkan kerumitan aplikasi perusahaan terus meningkat, semakin banyak perusahaan mula membahagikan aplikasi kepada berbilang perkhidmatan mikro dan melengkapkan keseluruhan proses perniagaan melalui kerjasama antara perkhidmatan mikro. Pendekatan seni bina ini boleh menjadikan aplikasi lebih stabil dan berskala, tetapi ia juga membawa beberapa masalah baharu, seperti pengimbangan beban, penemuan perkhidmatan, dsb. Artikel ini akan memperkenalkan cara menggunakan Spring Cloud untuk menyelesaikan masalah pengimbangan beban di bawah seni bina perkhidmatan mikro.
Pengimbangan Beban merujuk kepada memperuntukkan beban antara berbilang pelayan, peranti rangkaian atau aplikasi untuk mencapai penggunaan sumber yang optimum, kapasiti maksimum, kelajuan tindak balas terpantas dan kebolehpercayaan tertinggi serta hayat maksimum, menghasilkan perkhidmatan yang cekap dan boleh dipercayai.
Sebagai contoh, apabila sistem aplikasi mempunyai bilangan lawatan yang banyak dan pelayan tunggal tidak dapat memenuhi semua permintaan pengguna, kami boleh mengagihkan beban melalui berbilang pelayan untuk meningkatkan kestabilan dan daya pemprosesan sistem, tindak balas masa, dsb. Dalam seni bina perkhidmatan mikro, kerana terdapat berbilang perkhidmatan mikro dan berbilang contoh perkhidmatan, pengimbangan beban juga penting.
Algoritma pengimbangan beban biasanya termasuk yang berikut:
Algoritma pengundian ialah salah satu algoritma pengimbangan beban yang paling mudah. Edarkan permintaan kepada setiap contoh perkhidmatan dalam urutan dalam susunan senarai contoh perkhidmatan Selepas semua contoh perkhidmatan telah diberikan permintaan, edarkan semula dari awal. Kelebihan algoritma pengundian ialah ia mudah dan sesuai untuk pelbagai senario beban, tetapi kelemahannya juga jelas, yang mungkin menyebabkan beban sesetengah contoh perkhidmatan menjadi terlalu tinggi.
Algoritma rawak memperuntukkan permintaan secara rawak kepada kejadian perkhidmatan, yang boleh menghalang ketidakseimbangan beban contoh perkhidmatan secara berkesan dalam kebanyakan kes, tetapi tidak dapat menjamin bahawa setiap contoh perkhidmatan diberikan Permintaan adalah semuanya yang sama.
Algoritma pengundian berwajaran ialah penambahbaikan berdasarkan algoritma pengundian, iaitu, memberikan pemberat (atau perkadaran) yang berbeza kepada contoh perkhidmatan yang berbeza, supaya setiap bilangan permintaan yang diberikan kepada contoh perkhidmatan adalah berkadar dengan beratnya. Algoritma ini boleh menjadikan sistem lebih fleksibel dan boleh memperuntukkan permintaan mengikut tahap keupayaan sebenar contoh perkhidmatan.
Algoritma Sambungan Terkecil adalah untuk mengedarkan permintaan kepada contoh perkhidmatan dengan beban paling ringan berdasarkan beban sebenar contoh perkhidmatan semasa ini boleh menjamin beban setiap perkhidmatan Seimbang, tetapi terdapat juga beberapa kekurangan, contohnya, ia boleh menyebabkan permintaan tertentu dilaksanakan berulang kali pada keadaan perkhidmatan yang berbeza.
Spring Cloud menyediakan penyelesaian lengkap untuk pengimbangan beban. Antaranya, salah satu komponen teras ialah Ribbon. Ribbon ialah pengimbang beban sebelah pelanggan yang boleh digunakan dengan pelbagai klien perkhidmatan HTTP dan TCP untuk menyediakan pelanggan dengan keupayaan beban yang lebih stabil dan seimbang.
Menggunakan Ribbon adalah sangat mudah Anda hanya perlu menambah kebergantungan berikut dalam aplikasi Spring Boot:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
Dan di mana pengimbangan beban diperlukan, pass @ Hanya ubah suai dengan anotasi LoadBalanced:
@Autowired @LoadBalanced private RestTemplate restTemplate;
Apabila kami perlu mengakses perkhidmatan Rest, kami hanya perlu menggunakan nama perkhidmatan sebagai sebahagian daripada URI dalam laluan permintaan RestTemplate:
String result = restTemplate.getForObject("http://SERVICE-NAME/path", String.class);
di mana , SERVICE-NAME ialah nama perkhidmatan dan laluan ialah laluan perkhidmatan. Pada masa ini, Ribbon akan memilih secara automatik contoh perkhidmatan yang tersedia berdasarkan algoritma pengimbangan beban yang dikonfigurasikan dan mengedarkan permintaan kepada tika perkhidmatan. Jika contoh perkhidmatan tidak tersedia, Ribbon akan memilih contoh perkhidmatan seterusnya yang tersedia secara automatik.
Secara lalai, Ribbon menggunakan algoritma tinjauan pendapat untuk mencapai pengimbangan beban, yang juga boleh ditentukan melalui fail konfigurasi. Berikut ialah beberapa strategi pengimbangan beban biasa:
ribbon: LoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 随机负载均衡 # LoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 轮询负载均衡 # LoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule # 带权重的随机负载均衡 # LoadBalancerRuleClassName: com.netflix.loadbalancer.RepeatableRandomRule # 重试随机负载均衡 # LoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule # 豁免机房、实例挂掉等异常情况负载均衡
Artikel ini memperkenalkan cara melaksanakan pengimbangan beban di bawah seni bina perkhidmatan mikro melalui Ribbon dalam Spring Cloud. Menggunakan Ribbon adalah sangat mudah. Kami hanya perlu mengubah suai dengan anotasi @LoadBalanced yang memerlukan pengimbangan beban. Apabila berbilang tika perkhidmatan tersedia, Ribbon secara automatik memilih tika perkhidmatan yang tersedia berdasarkan dasar pengimbangan beban yang dikonfigurasikan dan mengedarkan permintaan kepada tika perkhidmatan untuk mencapai pengimbangan beban.
Atas ialah kandungan terperinci Gunakan Spring Cloud dengan bijak untuk menyelesaikan masalah pengimbangan beban di bawah seni bina perkhidmatan mikro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!