Service Discovery
ㄴ 서비스 클라이언트가 서비스를 호출할 때, 서비스의 위치(ip 주소와 port)를 알아낼 수 있는 기능
ㄴ 외부에서 msa를 검색해 사용하기 위해 사용
ㄴ key // value 지정
ㄴ client - loadbalancer - discoveryservice - msa1, 2, 3
Spring Eureka
ㄴ 포트 여러 개를 하나에 등록 시켜 사용
DiscoveryService
@SpringBootApplication
@EnableEurekaServer //유레케 서버로서 지정
public class Msa1Application {
public static void main(String[] args) {
SpringApplication.run(Msa1Application.class, args);
}
}
server:
port: 8761
spring:
application:
name: discoveryservice //서비스의 고유한 아이디
eureka:
client:
register-with-eureka: false //유레카에 등록하는 여부(그런데 이건 서비스로 사용하는것임으로 true로 놓게되면 자기 자신을 서비스로 등록한다는 뜻)
fetch-registry: false //서버로부터 무언가를 주고 받을것이 아니기 때문에, 서버로서만 상용함으로 false
UserService
package com.example.userservice1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class UserService1Application {
public static void main(String[] args) {
SpringApplication.run(UserService1Application.class, args);
}
}
server:
port: 9002
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true # eurkea서버로부터 인스턴스들의 정보를 주기적으로 가져올지 설정하는 속성, true시 받겠다는 뜻
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka #disoveryservice 서버 지정
새로운 서비스(SpringApplication) 등록
: 포트번호 중복이므로 VM에 포트번호 추가
--> -Dserver.port=9003 (-D는 추가 명령 내릴 때 사용)
--> 터미널 명령어: mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9004'
--> compile로 실행:
mvn clean - mvn compile java - target 파일에 snapshot 생성 - target 파일 안의 jar 파일 실행
java -jar -Dserver.port=9005 ./target/user-service1-0.0.1-SNAPSHOT.jar
--> 위 방법을 loadbalancer로 지정하여 실행:
server:
port: 0 #포트번호를 랜덤하게 사용한다 라는 뜻
--> 터미널 명령어: mvn spring-boot:run
이 때, 포트번호가 달라도 하나만 뜬다.
ㄴ :0 은 yml 파일에 써있는 포트번호를 나타냄으로 랜덤하게 생성되면 0이 뜨지 않는다. 이를 보여주기 위해 yml을 수정한다.
eureka:
instance:
유레카에 출력하기위해 아래와 같이 설정
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance-id:${random.value}}
'개발 > MSA' 카테고리의 다른 글
Configuration Service (0) | 2023.08.10 |
---|---|
Spring security + JWT (0) | 2023.08.04 |
Users Microservice (0) | 2023.07.28 |
API Gateway Service (0) | 2023.07.21 |
Microservice와 Spring Cloud (0) | 2023.07.14 |