Service Discovery

Gunjoo Ahn·2022년 9월 7일
0

Service Discovery

Service mesh에 service discovery라는 컴포넌트가 있다. 이 컴포넌트는 수 많은 마이크로 서비스들을 key-value로 등록하는 서비스이다. Key는 마이크로 서비스 이름이고 value는 마이크로 서비스 실제 주소(들)이다.

DNS와 같은 역할이다.

Spring Eureka

Spring Eureka를 통하여 간단하게 서비스 디스커버리를 사용할 수 있다.

Service Discovery Server

// 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

Service Discovery Client

// 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'

Reference

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

profile
Backend Developer

0개의 댓글