Asiakaspuolen kuormantasaus Ribbonilla
Integroikaa Ribbon asiakaspuolen kuormantasaukseen useiden palveluinstanssien välillä.
Asiakaspuolen kuormantasaus Ribbonilla on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.
Mitä kuormantasaus on?
Mikropalveluympäristössä samasta palvelusta on usein käynnissä useita kopioita eli instansseja. Näin saavutetaan skaalautuvuus ja korkea käytettävyys.
Kuormantasaus tarkoittaa saapuvan verkkoliikenteen jakamista näiden useiden instanssien kesken. Se varmistaa, ettei yksittäinen palveluinstanssi kuormitu liikaa.
- Skaalautuvuus: Voit palvella useampia käyttäjiä lisäämällä instansseja.
- Korkea käytettävyys: Jos yksi instanssi vikaantuu, muut voivat ottaa sen tehtävät hoitaakseen.
- Suorituskyky: Työ jaetaan tasaisesti vasteaikojen lyhentämiseksi.
Asiakas- ja palvelinpuolen kuormantasaus
Kuormantasausta on kahta päätyyppiä:
- Palvelinpuolen kuormantasaus: Erillinen komponentti, kuten Nginx tai laitteistopohjainen kuormantasaaja, sijaitsee palveluidesi edessä. Asiakkaat lähettävät pyynnöt tälle komponentille, joka välittää ne sopivalle palveluinstanssille.
- Asiakaspuolen kuormantasaus: Asiakassovellus itse vastaa kaikkien käytettävissä olevien palveluinstanssien tuntemisesta ja valitsee niistä yhden kutakin pyyntöä varten. Tässä tarvitaan Ribbonin kaltaisia työkaluja!
Ribbon: apuna asiakaspuolen kuormantasauksessa
Ribbon on asiakaspuolen kuormantasaaja, joka integroituu saumattomasti Spring Cloud -sovelluksiin. Se auttaa asiakaspalveluasi valitsemaan kohdepalvelun oikean instanssin.
Miten Ribbon tietää palveluinstanssit? Se toimii yhdessä palveluiden etsintä -mekanismin, kuten Eurekan, kanssa. Eureka kertoo Ribbonille, missä palvelut ovat, ja Ribbon päättää, mitä niistä kutsutaan.
Kuormantasausriippuvuuden lisääminen
Voit ottaa asiakaspuolen kuormantasausen käyttöön Spring Boot -sovelluksessasi lisäämällä yleensä Spring Cloud LoadBalancer -riippuvuuden. Vaikka oppitunnin otsikossa mainitaan Ribbon, Spring Cloud LoadBalancer on sen nykyaikainen seuraaja ja toimii samalla tavalla.
Lisää tämä pom.xml-tiedostoon:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>Kuormantasausta käyttävä RestTemplate
Helpoin tapa käyttää asiakaspuolen kuormantasausta on Springin RestTemplate-luokan avulla. Lisäämällä @LoadBalanced-annotaation RestTemplate-beaniin Spring määrittää sen käyttämään kuormantasaajaa.
Kun teet HTTP-kutsun, käytät loogista palvelunimeä (esimerkiksi my-service) tietyn IP-osoitteen ja portin sijaan. Kuormantasaaja (Ribbon/Spring Cloud LoadBalancer) muuntaa tämän nimen todelliseksi instanssiksi.
Asiakas kutsuu palvelua (koodi)
Tässä on yksinkertainen Spring Boot -asiakassovellus, joka käyttää kuormantasausta hyödyntävää RestTemplate-luokkaa kutsuakseen toista palvelua nimeltä my-service. Jotta tämä toimisi, my-service on rekisteröitävä palveluiden etsintäpalvelimelle, kuten Eurekaan.
package com.coddykit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@RestController
public class MyClientApplication {
private final RestTemplate restTemplate;
// Inject the load-balanced RestTemplate
public MyClientApplication(@LoadBalanced RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public static void main(String[] args) {
SpringApplication.run(MyClientApplication.class, args);
}
// Define the load-balanced RestTemplate bean
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
// Endpoint to call 'my-service'
@GetMapping("/call-my-service")
public String callMyService() {
// Use the logical service ID 'my-service'
return restTemplate.getForObject("http://my-service/hello", String.class);
}
}Kuormantasausalgoritmit
Ribbon (ja Spring Cloud LoadBalancer) voi käyttää eri algoritmeja päättääkseen, mitä palveluinstanssia kutsutaan. Yleisiä vaihtoehtoja ovat:
- Round Robin: Jakaa pyynnöt vuorotellen kullekin instanssille (esimerkiksi instansseille 1, 2 ja 3, minkä jälkeen jälleen instanssille 1).
- Satunnainen: Valitsee kullekin pyynnölle satunnaisen instanssin.
- Saatavuussuodatus: Jättää huomiotta instanssit, jotka on merkitty toimimattomiksi tai jotka eivät vastaa.
- Vasteaikaan perustuva painotus: Suosii instansseja, jotka ovat aiemmin vastanneet nopeammin.
Kuormantasaussääntöjen määrittäminen
Voit määrittää tietyn palvelun kuormantasaussäännön application.yml- tai application.properties-tiedostossa. Voit esimerkiksi käyttää Round Robin -sääntöä palvelulle my-service (vanhalla Ribbon-määritystyylillä):
my-service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
Vaikka tämä syntaksi koskee vanhempaa Ribbon-versiota, palvelukohtaisten sääntöjen määrittämisen periaate on samanlainen Spring Cloud LoadBalancerissa. Se tehdään usein mukautetuilla määrityksillä tai ominaisuuksilla.
Asiakaspuolen kuormantasausen edut
Asiakaspuolen kuormantasaus tarjoaa mikropalveluarkkitehtuurissa useita etuja:
- Yksinkertaisempi infrastruktuuri: Erillistä laitteisto- tai ohjelmistopohjaista kuormantasaajakomponenttia ei tarvita.
- Suora viestintä: Asiakkaat viestivät suoraan palveluinstanssien kanssa, mikä voi lyhentää viivettä.
- Dynaaminen skaalautuminen: Järjestelmä mukautuu helposti uusiin palveluinstansseihin, jotka rekisteröityvät palveluiden etsintään tai poistuvat siitä.
- Hienojakoinen hallinta: Asiakas voi toteuttaa mukautetun kuormantasauslogiikan tai käyttää eri sääntöjä eri palveluille.
Pikatarkistus kuormantasauksesta
Olet tutustunut asiakaspuolen kuormantasaukseen. Testataan, miten hyvin ymmärsit asian.
Kertaus: asiakaspuolen kuormantasaus
Hienoa työtä! Olet tutustunut asiakaspuolen kuormantasaukseen Ribbonilla ja sen seuraajalla Spring Cloud LoadBalancerilla.
- Opimme, että kuormantasaus jakaa liikenteen palveluinstanssien kesken skaalautuvuuden ja käytettävyyden parantamiseksi.
- Asiakaspuolen kuormantasaus tarkoittaa, että asiakas itse valitsee kutsuttavan instanssin ja käyttää usein loogista palvelunimeä.
RestTemplate-beaniin lisättävä@LoadBalanced-annotaatio on keskeinen tämän ominaisuuden käyttöönotossa Spring Bootissa.- Pyyntöjen jakamiseen voidaan käyttää erilaisia algoritmeja, kuten Round Robinia.
Tämä lähestymistapa tekee mikropalveluistasi vankempia ja tehokkaampia!
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 24
- Oppitunnit
- 93
Usein kysytyt kysymykset
Onko oppitunti ”Asiakaspuolen kuormantasaus Ribbonilla” ilmainen?
Kyllä – oppitunnin ”Asiakaspuolen kuormantasaus Ribbonilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Asiakaspuolen kuormantasaus Ribbonilla”?
Integroikaa Ribbon asiakaspuolen kuormantasaukseen useiden palveluinstanssien välillä. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Asiakaspuolen kuormantasaus Ribbonilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?
Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Eureka-palvelunetsinnän toteuttaminen
- Asiakaspuolen kuormantasaus Ribbonilla
- API-yhdyskäytävä Spring Cloud Gatewaylla