Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät · Oppitunti

Mikropalvelujen välimuististrategiat

Tutustukaa Redis-kaltaisiin välimuistimekanismeihin ja toteuttakaa niitä mikropalvelujen suorituskyvyn parantamiseksi.

Oppitunti 5/912 vaihetta

Mikropalvelujen välimuististrategiat on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 5/9. 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ä 9 oppituntia.

Miksi välimuistia käytetään

Kuvitellaan, että mikropalvelusi hakee usein samoja tietoja tietokannasta tai toisesta hitaasta palvelusta. Jokainen pyyntö tarkoittaa odottamista, resurssien kuluttamista ja toiminnan hidastumista.

  • Parempi suorituskyky: Välimuisti tallentaa usein käytetyt tiedot lähemmäs sovellustasi.
  • Pienempi kuormitus: Tietokantoihin ja ulkoisiin palveluihin kohdistuu vähemmän painetta.
  • Nopeammat vastaukset: Käyttäjät saavat nopeamman käyttökokemuksen.

Välimuisti on tehokas tekniikka mikropalvelun suorituskyvyn optimointiin.

Välimuistin perusteet

Välimuisti on väliaikainen tallennusalue, joka säilyttää kopioita tiedoista. Kun sovellus tarvitsee tietoja, se tarkistaa ensin välimuistin.

  • Välimuistiosuma: Tiedot löytyvät välimuistista ja ne haetaan nopeasti.
  • Välimuistihuti: Tietoja ei löydy välimuistista, joten ne haetaan alkuperäisestä lähteestä (esimerkiksi tietokannasta) ja tallennetaan sitten välimuistiin myöhempää käyttöä varten.

Ajattele tätä usein valitsemasi puhelinnumeron muistamisena!

Muistinsisäinen ja hajautettu välimuisti

Välimuisteja on kaksi päätyyppiä:

  • Muistinsisäinen välimuisti: Tallennetaan suoraan yhteen sovellusinstanssiin. Se on nopea, mutta tiedot menetetään instanssin käynnistyessä uudelleen, eikä niitä jaeta useiden mikropalveluinstanssien kesken.
  • Hajautettu välimuisti: Erillinen palvelu, kuten Redis, johon useat mikropalveluinstanssit voivat muodostaa yhteyden. Tiedot jaetaan instanssien kesken ja ne säilyvät instanssien välillä, mikä on tärkeää skaalautuville mikropalveluille.

Mikropalveluissa hajautettua välimuistia yleensä suositaan.

Redisin esittely välimuistina

Redis (Remote Dictionary Server) on suosittu avoimen lähdekoodin muistinsisäinen tietovarasto. Sitä käytetään usein hajautettuna välimuistina sen nopeuden ja monipuolisuuden ansiosta.

  • Avain-arvo-tietovarasto: Tallentaa tiedot yksinkertaisina avain-arvo-pareina.
  • Erittäin nopea: Toiminnot ovat hyvin nopeita ja kestävät usein vain mikrosekunteja.
  • Monipuolinen: Tukee erilaisia tietorakenteita, kuten merkkijonoja, hajautustauluja, listoja ja joukkoja.

Se on erinomainen valinta jaettuun välimuistiin mikropalveluarkkitehtuurissa.

Spring Bootin ja Redisin määrittäminen

Redisin integroimiseksi Spring Bootiin tarvitset riippuvuuden spring-boot-starter-data-redis.

Lisää se tiedostoon pom.xml (Maven) tai build.gradle (Gradle):

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Spring Boot määrittää Redisin automaattisesti, jos se löytää käynnissä olevan instanssin (esimerkiksi Dockerin kautta) tai yhteysmääritykset tiedostosta application.properties.

Springin välimuistitaikuus

Spring Boot tarjoaa tehokkaan välimuistin abstraktiokerroksen. Tämä tarkoittaa, että voit lisätä sovellukseesi välimuistin yksinkertaisilla annotaatioilla ilman suoraa vuorovaikutusta Redis-koodin kanssa.

Ota välimuisti käyttöön Spring Boot -sovelluksessasi lisäämällä @EnableCaching-annotaatio sovelluksen pääluokkaan:

@SpringBootApplication
@EnableCaching
public class MyServiceApplication { ... }

Tämä kertoo Springille, että se etsii metodeistasi välimuistiannotaatioita.

Välimuistista lukeminen: @Cacheable

@Cacheable-annotaatiota käytetään metodeissa, joiden tulokset halutaan tallentaa välimuistiin. Kun @Cacheable-annotaatiolla merkittyä metodia kutsutaan:

  • Spring tarkistaa, löytyykö annetuilla argumenteilla saatava tulos jo välimuistista.
  • Jos tulos löytyy, välimuistissa oleva arvo palautetaan (välimuistiosuma).
  • Jos tulosta ei löydy, metodi suoritetaan, sen tulos tallennetaan välimuistiin ja palautetaan sitten (välimuistihuti).

Määritä value (välimuistin nimi) ja halutessasi key-lauseke.

Käytännön esittely: välimuistikonsepti

Tämä yksinkertainen Java-ohjelma havainnollistaa välimuistin perusidean. Huomaa, että "tietokanta"-kutsujen määrä kasvaa vain uusien tunnisteiden yhteydessä, kun taas toistuvat kutsut hakevat tiedot heti "välimuistista".

import java.util.HashMap;
import java.util.Map;

// A simple in-memory cache
class SimpleProductCache {
    private Map<String, String> cache = new HashMap<>();

    public String get(String key) {
        return cache.get(key);
    }

    public void put(String key, String value) {
        cache.put(key, value);
    }

    public void remove(String key) {
        cache.remove(key);
    }
}

class ProductFetcher {
    private SimpleProductCache productCache;
    private int dbCallCount = 0;

    public ProductFetcher(SimpleProductCache cache) {
        this.productCache = cache;
    }

    public String fetchProductName(String productId) {
        // Try to get from cache first
        String cachedName = productCache.get(productId);
        if (cachedName != null) {
            System.out.println("--> Retrieved '" + productId + "' from cache.");
            return cachedName;
        }

        // If not in cache, simulate database call
        dbCallCount++;
        System.out.println("--> Fetching '" + productId + "' from database (Call #" + dbCallCount + ").");
        try {
            Thread.sleep(100); // Simulate delay
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        String productName = "Product " + productId + " Name";

        // Store in cache
        productCache.put(productId, productName);
        return productName;
    }
}

public class Main {
    public static void main(String[] args) {
        SimpleProductCache cache = new SimpleProductCache();
        ProductFetcher fetcher = new ProductFetcher(cache);

        System.out.println("--- First requests ---");
        System.out.println(fetcher.fetchProductName("A1"));
        System.out.println(fetcher.fetchProductName("B2"));

        System.out.println("\n--- Repeat requests ---");
        System.out.println(fetcher.fetchProductName("A1")); // Should be from cache
        System.out.println(fetcher.fetchProductName("B2")); // Should be from cache

        System.out.println("\n--- New request ---");
        System.out.println(fetcher.fetchProductName("C3")); // Should be from DB
    }
}

Välimuistin päivittäminen: @CachePut

Joskus haluat päivittää välimuistin metodikutsun tuloksella, vaikka tiedot olisivat jo välimuistissa. Tähän tarkoitukseen käytetään @CachePut-annotaatiota.

@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
// ... update product in database ...
return product;
}
  • Toisin kuin @Cacheable-annotaation kanssa, metodi suoritetaan aina.
  • Sen tulos sijoitetaan sitten välimuistiin.

Käytä tätä tietoja muokkaavissa metodeissa, kun haluat välimuistin vastaavan uusinta tilaa.

Vanhentuneiden tietojen poistaminen: @CacheEvict

Kun tiedot muuttuvat tietokannassa, vanhat ja vanhentuneet tiedot on poistettava välimuistista. @CacheEvict-annotaatio hoitaa tämän.

@CacheEvict(value = "products", key = "#id")
public void deleteProduct(String id) {
// ... delete product from database ...
}
  • Kun tätä metodia kutsutaan, määritettyä key-avainta vastaava merkintä poistetaan products-välimuistista.
  • Voit myös käyttää arvoa allEntries = true koko välimuistin tyhjentämiseen.

Käytä tätä poisto- tai päivitystoimintojen jälkeen tietojen yhdenmukaisuuden varmistamiseksi.

Välimuististrategian tietovisa

Olette rakentamassa asiakastietoja hallinnoivaa mikropalvelua. Mitä välimuististrategiaa käyttäisitte seuraavissa tilanteissa?

Välimuisti suorituskyvyn parantajana: kertaus

Onnittelut! Olette oppineet mikropalvelujen välimuististrategioista.

  • Välimuisti parantaa suorituskykyä ja vähentää tietokannan kuormitusta.
  • Hajautetut välimuistit, kuten Redis, sopivat erinomaisesti mikropalveluille.
  • Springin välimuistin abstraktiokerros yksinkertaistaa välimuistin käyttöä annotaatioilla.
  • Käytä @Cacheable-annotaatiota paljon luettavissa toiminnoissa.
  • Käytä @CachePut-annotaatiota välimuistimerkintöjen päivittämiseen.
  • Käytä @CacheEvict-annotaatiota vanhentuneiden välimuistimerkintöjen poistamiseen.

Välimuistin hallitseminen auttaa rakentamaan erittäin skaalautuvia ja responsiivisia mikropalveluja.

Aloita maksutta

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 ”Mikropalvelujen välimuististrategiat” ilmainen?

Kyllä – oppitunnin ”Mikropalvelujen välimuististrategiat” 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ä 9 oppituntia.

Mitä opin oppitunnilla ”Mikropalvelujen välimuististrategiat”?

Tutustukaa Redis-kaltaisiin välimuistimekanismeihin ja toteuttakaa niitä mikropalvelujen suorituskyvyn parantamiseksi. 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 5/9.

Kuinka kauan ”Mikropalvelujen välimuististrategiat”-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

  1. Viestien läpimenon optimointi
  2. Asynkroninen käsittely WebFluxilla
  3. Datarakenteen optimointi
  4. Kuluttajien ja tuottajien skaalaaminen
  5. Mikropalvelujen välimuististrategiat
  6. Denormalisointistrategiat
  7. Tietokannan sharding ja replikaatio
  8. Tietokannan seuranta ja virheenkorjaus
  9. RabbitMQ:n suorituskyvyn vertailumittaus
← Takaisin: Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät