Kuntotarkistukset ja vikasietoisuusmallit
Suunnitelkaa luotettavia kuntotarkistuksia, toteuttakaa sulakkeita ja soveltakaa muita vikasietoisuusmalleja vikasietoisissa järjestelmissä.
Kuntotarkistukset ja vikasietoisuusmallit on ilmainen Spring Boot 4:n kattava opas-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Spring Boot 4:n kattava opas-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4:n kattava opas-kurssilla on yhteensä 4 oppituntia.
Johdatus terveystarkistuksiin
Tuotantokäytössä sovellusten on oltava vankkoja. Terveystarkistukset ovat automaattisia tapoja varmistaa, että sovellus tai palvelu toimii oikein ja on valmis vastaanottamaan liikennettä.
- Ne kertovat orkestroijille (kuten Kubernetesille), onko sovelluksesi elossa.
- Ne estävät liikenteen ohjaamisen viallisille instansseille.
- Ne auttavat automaattisessa palautumisessa ja skaalauspäätöksissä.
Spring Boot Actuatorin terveystila
Spring Boot Actuator tarjoaa valmiin /actuator/health-päätepisteen. Oletusarvoisesti se kokoaa terveystietoja eri komponenteista, kuten tietokannoista ja levytilasta.
Kun päätepistettä käytetään, se palauttaa tilan, tyypillisesti UP tai DOWN, sekä tiedot mukana olevista komponenteista.
Health-päätepisteen käyttäminen
Nähdäksesi terveystilan sinun tarvitsee vain ottaa Actuator käyttöön ja käyttää päätepistettä. Näin voit määrittää sen tiedostossa application.properties:
management.endpoints.web.exposure.include=health
management.endpoint.health.show-details=alwaysMukautetut terveysindikaattorit
Joskus oletusarvoiset terveystarkistukset eivät riitä. Seurattavana voi olla ulkoinen API, mukautettu välimuisti tai tietty liiketoimintalogiikka.
Voit luoda mukautettuja terveysindikaattoreita toteuttamalla HealthIndicator-rajapinnan ja lisäämällä omat tarkistuksesi /actuator/health-päätepisteeseen.
Mukautetun indikaattorin toteuttaminen
Luodaan yksinkertainen mukautettu terveysindikaattori kuvitteelliselle ulkoiselle palvelulle. Jos palvelu on "available", se ilmoittaa tilaksi UP; muussa tapauksessa DOWN.
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class ExternalServiceHealthIndicator implements HealthIndicator {
private final String SERVICE_NAME = "MyExternalService";
@Override
public Health health() {
if (isExternalServiceUp()) {
return Health.up().withDetail(SERVICE_NAME, "Available").build();
} else {
return Health.down().withDetail(SERVICE_NAME, "Not Available").build();
}
}
private boolean isExternalServiceUp() {
// Simulate checking external service status
// In a real app, this would involve network calls, DB queries, etc.
return Math.random() > 0.3; // 70% chance of being up
}
public static void main(String[] args) {
ExternalServiceHealthIndicator indicator = new ExternalServiceHealthIndicator();
System.out.println("Service Health: " + indicator.health().getStatus());
}
}Liveness- ja readiness-probet
Kun sovelluksia otetaan käyttöön konttien orkestroijissa, kuten Kubernetesissa, kaksi probertyyppiä on ratkaisevan tärkeitä:
- Liveness-probe: Määrittää, onko sovellusinstanssi käynnissä. Jos tarkistus epäonnistuu, Kubernetes käynnistää kontin uudelleen.
- Readiness-probe: Määrittää, onko sovellusinstanssi valmis palvelemaan liikennettä. Jos tarkistus epäonnistuu, Kubernetes lopettaa liikenteen lähettämisen sille.
Spring Boot 2.3+ toi näille erilliset terveysryhmät, jotka yhdistetään usein päätepisteisiin /actuator/health/liveness ja /actuator/health/readiness.
Johdatus vikasietoisuuteen
Terveystarkistuksista huolimatta ulkoiset riippuvuudet voivat epäonnistua ja saada sovelluksesi kaatumaan tai hidastumaan. Vikasietoisuusmallit auttavat sovellustasi käsittelemään virheitä hallitusti ja jatkamaan toimintaansa vaikeissa olosuhteissa.
- Ne parantavat vikasietoisuutta ja vakautta.
- Ne estävät virheiden ketjureaktiot palveluiden välillä.
- Ne takaavat paremman käyttäjäkokemuksen, vaikka järjestelmän osissa olisi ongelmia.
Circuit Breaker -malli
Circuit Breaker -malli estää sovellusta yrittämästä toistuvasti operaatiota, joka todennäköisesti epäonnistuu. Se toimii kuin sähköpiirin katkaisija: jos virtaa kulkee liikaa, katkaisija laukeaa vahinkojen estämiseksi.
- CLOSED: Pyynnöt pääsevät läpi. Jos virheiden määrä ylittää kynnysarvon, tila vaihtuu OPEN-tilaan.
- OPEN: Pyynnöt epäonnistuvat välittömästi (fast-fail). Aikakatkaisun jälkeen tila vaihtuu HALF_OPEN-tilaan.
- HALF_OPEN: Rajallinen määrä testipyyntöjä sallitaan. Jos ne onnistuvat, tila sulkeutuu; muussa tapauksessa se avautuu uudelleen.
Circuit Breaker Resilience4j:llä
Resilience4j on suosittu kirjasto vikasietoisuusmallien toteuttamiseen. Tässä on yksinkertaistettu esimerkki Circuit Breakeristä, joka suojaa hidasta metodikutsua.
import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;
import java.time.Duration;
public class CircuitBreakerDemo {
private final CircuitBreaker circuitBreaker;
public CircuitBreakerDemo() {
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
.failureRateThreshold(50) // 50% failure rate to open
.waitDurationInOpenState(Duration.ofSeconds(5)) // 5s before HALF_OPEN
.ringBufferSizeInHalfOpenState(2) // 2 calls in HALF_OPEN
.ringBufferSizeInClosedState(5) // 5 calls in CLOSED for failure rate calc
.build();
CircuitBreakerRegistry circuitBreakerRegistry =
CircuitBreakerRegistry.of(circuitBreakerConfig);
circuitBreaker = circuitBreakerRegistry.circuitBreaker("myService");
}
public String callExternalService() {
return circuitBreaker.executeSupplier(() -> {
if (Math.random() < 0.6) { // Simulate 60% failure rate
throw new RuntimeException("Service failed!");
}
return "Service Data";
});
}
public static void main(String[] args) {
CircuitBreakerDemo demo = new CircuitBreakerDemo();
for (int i = 0; i < 15; i++) {
try {
System.out.println(i + ": " + demo.callExternalService());
} catch (Exception e) {
System.err.println(i + ": Error - " + e.getMessage() +
" | CB State: " + demo.circuitBreaker.getState());
try { Thread.sleep(500); } catch (InterruptedException ie) {}
}
}
}
}Fallback-metodit
Kun Circuit Breaker on avoinna tai palvelukutsu epäonnistuu, virhettä ei aina haluta vain heittää. Fallback-metodi tarjoaa vaihtoehtoisen vastauksen tai toiminnon ensisijaisen operaation epäonnistuessa.
Tämän ansiosta sovellus voi heikentää toiminnallisuutta hallitusti esimerkiksi palauttamalla välimuistissa olevia tietoja, oletusvastauksen tai tyhjän listan sen sijaan, että se kaatuisi tai näyttäisi täydellisen virhesivun.
Vikasietoisuuden pikatarkistus
Mitä hyötyjä seuraavista saavutetaan toteuttamalla Circuit Breakerin kaltaisia vikasietoisuusmalleja?
Kertaus: terveystarkistukset ja vikasietoisuus
Olemme tarkastelleet, kuinka terveystarkistukset, erityisesti Spring Boot Actuatorin ja mukautettujen indikaattorien avulla, auttavat seuraamaan sovelluksen tilaa ja valmiutta vastaanottaa liikennettä.
Opimme myös vikasietoisuusmalleista, keskittyen Circuit Breakeriin, joka estää virheiden ketjureaktiot ja varmistaa hallitun toiminnallisuuden heikentämisen ulkoisten palveluiden tai komponenttien epäonnistuessa. Näiden mallien toteuttaminen on olennaista vankkojen, tuotantovalmiiden mikropalveluiden rakentamisessa.
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
- 21
- Oppitunnit
- 84
Usein kysytyt kysymykset
Onko oppitunti ”Kuntotarkistukset ja vikasietoisuusmallit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Spring Boot 4:n kattava opas-oppimispolun 3 oppituntia, myös oppitunnin “Kuntotarkistukset ja vikasietoisuusmallit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Spring Boot 4:n kattava opas-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Kuntotarkistukset ja vikasietoisuusmallit”?
Suunnitelkaa luotettavia kuntotarkistuksia, toteuttakaa sulakkeita ja soveltakaa muita vikasietoisuusmalleja vikasietoisissa järjestelmissä. Harjoittelet Spring Boot 4:n kattava opas-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:n kattava opas-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4:n kattava opas-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Kuntotarkistukset ja vikasietoisuusmallit”-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:n kattava opas-oppitunnilla?
Kyllä. Jokainen Spring Boot 4:n kattava opas-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
- Kubernetes-orkestroinnin perusteet
- Hajautettu jäljitys Sleuthilla ja Zipkinillä
- Kuntotarkistukset ja vikasietoisuusmallit
- Mittarit ja koontinäytöt Micrometerilla ja Prometheuksella