Integrering med Eureka/Consul
Konfigurera Spring Cloud Gateway så att den registrerar sig med och hittar tjänster från ett tjänsteregister som Eureka eller Consul.
Integrering med Eureka/Consul är en gratis lektion i API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för API-gateway och reverse proxy (Nginx + Spring Cloud Gateway), och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) innehåller totalt 4 lektioner.
Vad är service discovery?
I en mikrotjänstarkitektur är tjänster ofta dynamiska. De kan skalas upp eller ned och deras nätverksplatser (IP-adresser och portar) kan ändras ofta.
Service discovery är en mekanism som hjälper applikationer och tjänster att hitta varandra utan att nätverksplatserna behöver hårdkodas. Det fungerar som en dynamisk telefonbok för dina tjänster!
Tjänsteregister: Eureka och Consul
Ett tjänsteregister är en central server som underhåller en lista över tillgängliga tjänsteinstanser och deras nätverksplatser.
- Netflix Eureka: Ett mycket populärt alternativ, särskilt inom Spring Cloud-ekosystemet. Tjänster registrerar sig själva hos Eureka.
- HashiCorp Consul: Ett annat robust alternativ som erbjuder service discovery samt ett distribuerat nyckelvärdeslager och hälsokontroller.
Båda alternativen gör det möjligt för tjänster att registrera sig själva och hitta andra tjänster.
Gatewayens behov av service discovery
Spring Cloud Gateway fungerar som ingångspunkt till dina mikrotjänster.
I stället för att konfigurera routes med fasta URL:er för varje backend-tjänst kan Gateway fråga ett tjänsteregister:
- "Var körs 'user-service' just nu?"
- "Ge mig en tillgänglig instans av 'product-service'."
Detta möjliggör flexibel, dynamisk och motståndskraftig routing, eftersom Gateway inte behöver känna till tjänsternas platser i förväg.
Exempeltjänst: konfiguration av Eureka-klient
Först ska vi titta på hur en enkel Spring Boot-tjänst konfigureras för att registrera sig hos en Eureka-server.
Vi använder en tjänst med namnet hello-service. Dess application.yml kommer att hänvisa till Eureka-serverns standardzon.
spring:
application:
name: hello-service
server:
port: 8081
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eurekaAktivera Eureka-klienten i tjänsten
För att vår hello-service faktiskt ska registrera sig hos Eureka behöver vi lägga till annoteringen @EnableEurekaClient i dess huvudklass för applikationen.
Den här annoteringen aktiverar funktionaliteten för Eureka Discovery Client.
package com.example.helloservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@EnableEurekaClient
@SpringBootApplication
@RestController
public class HelloServiceApplication {
public static void main(String[] args) {
SpringApplication.run(HelloServiceApplication.class, args);
}
@GetMapping("/hello")
public String hello() {
return "Hello from Hello Service!";
}
}Konfigurera Gateway för Eureka
Nu ska vi konfigurera vår Spring Cloud Gateway så att den ansluter till samma Eureka-server. Gateway fungerar själv också som en Eureka-klient för att hitta andra tjänster.
Dess application.yml anger URL:en till Eureka-servern och dess eget applikationsnamn.
server:
port: 8080
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka
instance:
hostname: localhost
spring:
application:
name: api-gatewayAktivera discovery i Gateway
Precis som backend-tjänsten behöver Gatewayens huvudklass för applikationen en annotering för att aktivera dess discovery-funktioner.
Använd @EnableDiscoveryClient för att tala om för Spring Boot att aktivera discovery-klienten för Gateway.
package com.example.apigateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class ApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayApplication.class, args);
}
}Routing via tjänste-ID
När discovery är aktiverat kan vi definiera Gateway-routes med hjälp av en tjänsts registrerade ID i stället för en fast URL.
Prefixet lb:// (för 'load balancer') talar om för Gateway att använda sin discovery-klient för att hitta instanser av det angivna tjänstenamnet (t.ex. hello-service) och sedan routa begäran.
spring:
cloud:
gateway:
routes:
- id: hello_route
uri: lb://hello-service
predicates:
- Path=/hello/**Begärandeflödet
Vi följer en begäran till http://localhost:8080/hello:
- Gateway, som lyssnar på port 8080, tar emot begäran.
- Den matchar sökvägspredikatet
/hello/**mot routenhello_route. - Gateway använder sin Eureka-klient för att slå upp en tillgänglig instans av
hello-service. - Eureka returnerar adressen till en instans (t.ex.
localhost:8081). - Gateway vidarebefordrar begäran till
http://localhost:8081/hello. hello-servicebehandlar begäran och returnerar ett svar, som Gateway sedan skickar tillbaka till klienten.
Consul: ett annat alternativ
Eureka används i stor utsträckning, men Consul från HashiCorp är ett annat kraftfullt verktyg för service discovery och konfigurationshantering.
För att använda Consul lägger du vanligtvis till beroendet Spring Cloud Consul Discovery och konfigurerar Gateway och tjänster så att de pekar på Consul-agenten (som vanligtvis körs på port 8500).
Principen är densamma: Gateway använder tjänste-ID:n (t.ex. lb://my-service) för att dynamiskt hitta och routa till tjänster som är registrerade i Consul.
spring:
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: api-gatewayKontroll av Gateway-discovery
Du har konfigurerat Spring Cloud Gateway för att använda Eureka för service discovery och har en tjänst med namnet my-service registrerad i Eureka.
Vilken uri-konfiguration routar begäranden till my-service korrekt via discovery?
Lektionssammanfattning
I den här lektionen har du lärt dig om:
- vikten av service discovery i dynamiska mikrotjänstmiljöer.
- hur Eureka och Consul fungerar som centrala tjänsteregister.
- hur både backend-tjänster och Spring Cloud Gateway konfigureras som discovery-klienter.
- hur Gateway-routes definieras med tjänste-ID:n (t.ex.
lb://service-name) för dynamisk routing.
Den här integrationen är grundläggande för att bygga skalbara och motståndskraftiga mikrotjänstarkitekturer. Därefter utforskar vi fler dynamiska routingregler och predikat.
Lär dig API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Integrering med Eureka/Consul” gratis?
Ja – hela texten till ”Integrering med Eureka/Consul” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i API-gateway och reverse proxy (Nginx + Spring Cloud Gateway), kan Ni uppgradera till CoddyKit PRO. Kursen i API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) innehåller totalt 4 lektioner.
Vad lär jag mig i ”Integrering med Eureka/Consul”?
Konfigurera Spring Cloud Gateway så att den registrerar sig med och hittar tjänster från ett tjänsteregister som Eureka eller Consul. Ni övar på API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig API-gateway och reverse proxy (Nginx + Spring Cloud Gateway)?
Du behöver inga förkunskaper. Utbildningen i API-gateway och reverse proxy (Nginx + Spring Cloud Gateway) på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Integrering med Eureka/Consul”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här API-gateway och reverse proxy (Nginx + Spring Cloud Gateway)-lektionen?
Ja. Varje API-gateway och reverse proxy (Nginx + Spring Cloud Gateway)-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Integrering med Eureka/Consul
- Dynamisk routning med tjänsteupptäckt
- Lastbalansering med Spring Cloud LoadBalancer
- URI:n lb:// och Discovery Locator