API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway) · Oppitunti

Kuormantasaus Spring Cloud LoadBalancerilla

Hyödyntäkää Spring Cloud LoadBalanceria asiakaspuolen kuormantasaukseen, kun pyyntöjä reititetään palvelun useisiin instansseihin.

Oppitunti 3/411 vaihetta

Kuormantasaus Spring Cloud LoadBalancerilla on ilmainen API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. 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 API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssilla on yhteensä 4 oppituntia.

Mitä asiakaspuolen kuormantasaus on?

Mikropalveluarkkitehtuurissa käytössä on usein useita saman palvelun instansseja. Asiakaspuolen kuormantasaus tarkoittaa, että asiakas eli palvelun kuluttaja valitsee, mille instanssille pyyntö lähetetään.

Toisin kuin palvelinpuolen kuormantasaajassa, kuten Nginxissä, jossa keskitetty välityspalvelin jakaa pyynnöt, asiakas osallistuu tässä aktiivisesti päätökseen. Tämä voi vähentää verkkohyppyjä ja parantaa reagointinopeutta.

Spring Cloud LoadBalancerin esittely

Spring Cloud LoadBalancer on asiakaspuolen kuormantasaaja, joka toimii saumattomasti Spring Cloud -sovellusten kanssa. Se on Spring-ekosysteemin nykyaikainen seuraaja Netflix Ribbonille.

Se integroituu palveluiden etsintämekanismeihin, kuten Eurekaan ja Consuliin, saadakseen luettelon käytettävissä olevista palveluinstansseista ja käyttää sen jälkeen kuormantasausalgoritmia yhden instanssin valitsemiseen kutakin pyyntöä varten.

LoadBalancerin lisääminen projektiin

Spring Cloud LoadBalancerin käyttöä varten Spring Boot -projektiin lisätään yleensä spring-cloud-starter-loadbalancer-riippuvuus. Tämä starter tuo mukanaan kaikki tarvittavat komponentit.

Sitä käytetään usein yhdessä palveluiden etsintäasiakkaan (esimerkiksi Eureka Clientin) kanssa, jotta LoadBalancer tietää, mitkä palveluinstanssit ovat käytettävissä.

Kuormantasaus RestTemplaten avulla

Voitte ottaa asiakaspuolen kuormantasauksen helposti käyttöön lisäämällä @LoadBalanced-annotaation RestTemplate-beanin määrittelyyn. Tämä ilmoittaa Spring Cloudille, että kutsut tulee siepata ja käsitellä LoadBalancerilla.

Huomaattehan, että palvelua kutsutaan sen loogisella nimellä (MY-SERVICE) tietyn IP-osoitteen ja portin sijaan.

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.client.RestTemplate;

@SpringBootApplication
public class RestTemplateClient {

  @LoadBalanced
  @Bean
  public RestTemplate restTemplate() {
    return new RestTemplate();
  }

  public static void main(String[] args) {
    SpringApplication.run(RestTemplateClient.class, args);
    
    // Example usage (in a real app, this would be in a service)
    // RestTemplate restTemplate = applicationContext.getBean(RestTemplate.class);
    // String response = restTemplate.getForObject("http://MY-SERVICE/hello", String.class);
    // System.out.println("Response from MY-SERVICE: " + response);
  }
}

Kuormantasaus WebClientin avulla

Reaktiivisissa sovelluksissa WebClient on suositeltu vaihtoehto. Voitte ottaa sen kuormantasauksen käyttöön lisäämällä @LoadBalanced-annotaation WebClient.Builder-beaniin.

Kuten RestTemplate-tapauksessa, URL-osoitteessa käytetään palvelun loogista nimeä, ja LoadBalancer huolehtii instanssin selvittämisestä.

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.reactive.function.client.WebClient;

@SpringBootApplication
public class WebClientClient {

  @LoadBalanced
  @Bean
  public WebClient.Builder webClientBuilder() {
    return WebClient.builder();
  }

  public static void main(String[] args) {
    SpringApplication.run(WebClientClient.class, args);

    // Example usage (in a real app, this would be in a service)
    // WebClient webClient = applicationContext.getBean(WebClient.Builder.class).build();
    // webClient.get().uri("http://MY-SERVICE/greet")
    //     .retrieve().bodyToMono(String.class)
    //     .subscribe(response -> System.out.println("Response: " + response));
  }
}

Miten palveluiden etsintä mahdollistaa tämän

Spring Cloud LoadBalancer ei tiedä palveluinstansseista itsestään. Se käyttää palveluiden etsintää, kuten Eurekaa tai Consulia, saadakseen tietyn palvelutunnisteen terveiden ja käytettävissä olevien instanssien luettelon.

Kun asiakas tekee pyynnön käyttäen loogista palvelunimeä (esimerkiksi MY-SERVICE), LoadBalancer kysyy palvelurekisteriltä instanssiluettelon ja valitsee sitten yhden niistä.

Oletusstrategia: Round Robin

Spring Cloud LoadBalancer käyttää oletusarvoisesti Round Robin -algoritmia. Se tarkoittaa, että käytettävissä olevia palveluinstansseja käydään vuorotellen läpi järjestyksessä ja pyynnöt jaetaan tasaisesti niiden kesken.

Jos instansseja on esimerkiksi kolme (A, B ja C), ensimmäinen pyyntö lähetetään A:lle, toinen B:lle, kolmas C:lle, neljäs jälleen A:lle ja niin edelleen.

Yhdyskäytävän reititys LoadBalancerilla

Spring Cloud Gateway integroituu automaattisesti Spring Cloud LoadBalancerin kanssa. Kun määrittelette reitin palvelutunnisteen avulla (esimerkiksi lb://MY-SERVICE), Gateway käyttää LoadBalanceria todellisen instanssiosoitteen selvittämiseen.

Tämän ansiosta yhdyskäytävä voi reitittää pyynnöt taustapalvelun useille instansseille ilman, että IP-osoitteita ja portteja tarvitsee hallinnoida manuaalisesti.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableDiscoveryClient // Enables service discovery client (e.g., Eureka)
public class GatewayApplication {

  public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
  }

  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
      .route("my_service_route", r -> r.path("/api/**")
        .uri("lb://MY-SERVICE")) // 'lb://' indicates load-balanced service
      .build();
  }
}

Kuormantasausstrategioiden mukauttaminen

Vaikka Round Robin on oletusstrategia, Spring Cloud LoadBalancer on laajennettavissa. Voitte määrittää mukautettuja kuormantasausalgoritmeja, jos tarpeenne ovat monimutkaisempia.

Voisitte esimerkiksi haluta 'Least Connections' -strategian, joka lähettää pyynnöt instanssille, jolla on vähiten aktiivisia yhteyksiä, tai 'Sticky Session' -tavan, joka reitittää käyttäjän pyynnöt johdonmukaisesti samalle palvelimelle.

Pikatarkistus: LoadBalancerin tarkoitus

Mitkä seuraavista ovat Spring Cloud LoadBalancerin käytön keskeisiä hyötyjä tai ominaisuuksia?

Kertaus: asiakaspuolen kuormantasaus

Olemme tutustuneet Spring Cloud LoadBalanceriin, joka on keskeinen komponentti vikasietoisten mikropalveluiden rakentamisessa. Sen avulla asiakkaat voivat jakaa pyynnöt älykkäästi palvelun useiden instanssien kesken.

  • Se on asiakaspuolen ratkaisu, joka eroaa palvelinpuolen välityspalvelimista.
  • Se toimii yhdessä palveluiden etsinnän (esimerkiksi Eurekan) kanssa palveluinstanssien löytämiseksi.
  • Sitä voi käyttää @LoadBalanced RestTemplate- tai WebClient.Builder-ratkaisun kanssa.
  • Se on integroitu automaattisesti Spring Cloud Gatewayhin reititystä varten.
  • Oletusarvoinen kuormantasausstrategia on Round Robin.

Näin sovellukset voivat skaalautua vaakasuunnassa ja pysyä käytettävissä, vaikka jotkin palveluinstanssit vikaantuisivat.

Aloita maksutta

Opi API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway) 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
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Kuormantasaus Spring Cloud LoadBalancerilla” ilmainen?

Kyllä – oppitunnin ”Kuormantasaus Spring Cloud LoadBalancerilla” 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 API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssin, päivitä CoddyKit PROhon. API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kuormantasaus Spring Cloud LoadBalancerilla”?

Hyödyntäkää Spring Cloud LoadBalanceria asiakaspuolen kuormantasaukseen, kun pyyntöjä reititetään palvelun useisiin instansseihin. Harjoittelet API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Kuormantasaus Spring Cloud LoadBalancerilla”-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ä API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppitunnilla?

Kyllä. Jokainen API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-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

  1. Integrointi Eurekan ja Consulin kanssa
  2. Dynaaminen reititys palveluiden etsinnällä
  3. Kuormantasaus Spring Cloud LoadBalancerilla
  4. lb://-URI ja palveluiden etsintä
← Takaisin: API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)