티스토리 뷰

MSA

Section 1: Service Discovery

✨✨✨✨✨✨✨ 2023. 6. 7. 15:56
반응형

MSA의경우, 하나의 서비스에 집중하고있다.

LocaBalancer(API Gateway)를 통해 들어온 요청정보를가지고 Spring Discovery에게 전달하면 Spring Discovery는 MS의 정보를 갖고있기에 요청된 경로의 서버를 검색해준다.

  • 서비스 등록 및 검색기능
  • ex) Netflix Eureka

 

Eureka Service Discovery 프로젝트 생성

Create New Project → Spring Initializr

Dependencies

  • Spring Boot → 2.7.13
  • Spring Clout Discovery > Eureka Server

application.yml

server:
  port: 8761

spring:
  application:
    name: discoveryservice

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

Application.java

@SpringBootApplication
@EnableEurekaServer
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

위 프로젝트를 실행시키면 console에 아래와 같이 표시된다

이는 아직 eureka에 연동된 MicroService가 존재하지 않기때문이다.

2023-05-20 11:01:37.230  INFO 69387 --- [           main] com.example.ecommerce.Application        : 
No active profile set, falling back to 1 default profile: "default"

 

 


User Service 프로젝트 생성

아래 dependencies를 추가한다.

 

appication.yml

server:
  port: 9001

spring:
  application:
    name: user-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true # EUREKA 서버로부터 인스턴스들의 정보를 주기적으로 가져올것
    service-url:
      defaultZone: <http://127.0.0.1:8761/eureka>

UserServiceApplication.java

@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }

}

이렇게 EUREKA 서버를 등록하고 난후, EUREKA 서버로 들어가보면 EUREKA SERVICE가 등록됨을 확인할 수 있다.

 

 


User Service - 등록

UserSerice Application에서 port를 9002로 변경하여 하나 더 실행시킨다.

 

다음과 같이 USER-SERVICE 의 2가지 서비스가 등록됨을 확인할 수 있다.

다음과 같이 USER-SERVICE 의 2가지 서비스가 등록됨을 확인할 수 있다.

터미널을 열어 아래와 같이 9003 port로 또 실행시킨다.

mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'
mvn clean
mvn compile package

위와같이 실행 시

~/target/user-service-0.0.1-SNAPSHOT.jar 해당 경로에 jar 파일이 생성된다

java -jar -Dserver.port=9004 ./target/user-service-0.0.1-SNAPSHOT.jar

 

 


User Service -Load Balancer

 

만약 application.yml에서 port를 0으로 설정하면 랜덤하게 포트가 실행된다

server:
  port: 0
#  port: 9001

그러나, instance status가 충돌날 수 있으므로,

아래와 같이 변경한다.

server:
  port: 0      ### 추가

spring:
  application:
    name: user-service

eureka:
  instance:   ### 추가
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}   ### 추가
  client:
    register-with-eureka: true
    fetch-registry: true # EUREKA 서버로부터 인스턴스들의 정보를 주기적으로 가져올것
    service-url:
      defaultZone: <http://127.0.0.1:8761/eureka>

 

반응형

'MSA' 카테고리의 다른 글

Section 6: Users Microservice-2  (1) 2023.06.07
Section 4: Users Microservice -1  (0) 2023.06.07
Section 3: E-commerce 애플리케이션  (0) 2023.06.07
Section 2: API Gateway Service  (0) 2023.06.07
Section 0: Microservice와 Spring Cloud 소개  (0) 2023.06.07
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함