Service mesh에 service discovery라는 컴포넌트가 있다. 이 컴포넌트는 수 많은 마이크로 서비스들을 key-value로 등록하는 서비스이다. Key는 마이크로 서비스 이름이고 value는 마이크로 서비스 실제 주소(들)이다.
DNS와 같은 역할이다.
Spring Eureka를 통하여 간단하게 서비스 디스커버리를 사용할 수 있다.
// Eureka server gradle
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
@SpringBootApplication
@EnableEurekaServer
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
# application.yml
server:
port: 8761
spring:
application:
name: discoveryservice
eureka:
client: // server 이므로 자기 자신은 마이크로 서비스 instance로 등록할 필요가 없음
fetch-registry: false
register-with-eureka: false
// Eureka client gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
@SpringBootApplication
@EnableDiscoveryClient
public class UserserviceApplication {
public static void main(String[] args) {
SpringApplication.run(UserserviceApplication.class, args);
}
}
# application.yml
server:
port: 9001
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: 'http://127.0.0.1:8761/eureka'
https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-2-MSA-Outer-Architecure
https://bcho.tistory.com/1252