티스토리 뷰
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
- docker
- ApplicationContext
- Vue
- springboot
- ngnix
- BeanFactory
- webpack
- Vuex
- install
- mvn
- container
- NPM
- MAC
- nginx
- Intellij
- lambda
- java
- 스트림
- 중간연산
- 최종연산
- 차이
- 영속성 컨텍스트
- stream
- elasticsearch
- AnnotationConfigApplicationContext
- 람다
- JPA
- 자바8
- vscode
- map
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |