configuration values 변경했을 때 방영하는 3가지 방법
이어서...
1. 서버 재가동
2. Actuator의 refresh옵션(서버 재가동 X)
참고링크
- Spring Boot Actuator Dependendy추가
- Application 상태, 모니터링
- Metric 수집을 위한 Http End point 제공
3. Spring cloud bus 사용 (서버 재가동 X)
3. Spring cloud bus 사용 (서버 재가동 X)
Spring cloud bus 사용
분산 시스템의 노드(마이크로 서비스)를 경량 메시지 브로커(RabbitMQ)와 연결
상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)
Actuator
변경된 데이터를 갖고 왔을 때 Spring Cloud Server에서 내용을 가지고 있는다.
가지고 있다가 AMQP프로토콜에서 각각의 마이크로 서비스가(얘가 주체!) Actuator를 통해서 refresh를 POST요청으로 변경된 데이터를 가져갔다.
Spring Cloud Bus
AMQP 프로토콜을 이용해서 데이터가 변경되었음을 알려준다.
Spring Cloud Bus가(얘가 주체!) 마이크로 서비스한테 직접 데이터를 PUSH해주는 방식으로 변경사항을 알려준다.
마이크로 서비스들 중 하나가 변경사항을 감지하고 변경되었다는 통보해주면 나머지 마이크로 서비스가 앞에 있는 Spring Cloud Bus를 통해서 변경된 사항을 똑같이 받을 수 있다.
Actuator가 refresh를 하지 않아도 각가 변경된 사항을 가져가도록 지원해주는게 Bus
연결되어진 모든 노드에 대해 데이터를 전달해주는 방송 역할
분산 시스템의 노드를 경량 메시지 브로커와 연결
상태 빛 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)
큐잉 서비스 중 하나의 솔루션
Rabbit MQ 설치
- Windows
Erlang 설치 후
C:\Program Files\erl-23.1
RabbitMQ 설치 후
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.12.12\sbin
powerShell 실행 후 Management Plugin 설치
rabbitmq-plugins enable rabbitmq_management
http://localhost:15672/ 접속
Username : geust
Password: geust
- macOs
https://www.rabbitmq.com/install-homebrew.html
$ brew update
$ brew install rabbitmq
exportPATH=PATH:/usr/local/sbin
$ rabbitmq-server
설치 시 python 관련 오류(위 이미지 참조) 발생 하면, 아래 커맨드 실행
$ xcode-select --install
프로젝트 시작
config-service, user-service, apigateway-service
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Application.yml
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
management: # 클라이언트 역할을 하겠다..
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace,⭐busrefesh⭐
기동 순서
Start RabbitMQ server
Start Spring Cloud Config service
Start Eureka Discovery Service
Start Spring Cloud Gateway Service
Start Users Microservice
user-service, apigateway-service
bootstrap.yml
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: config-service
# 파일이름이 아니라 어플리케이션 이름을 적으면 해당 application.yml을 읽어온다.
회원가입 후 로그인하면 토큰이 나온다..
값을 변경하고 저장.
값 변경 후, ~/actuator/busrefresh에 GET or POST 요청
user-services이든 apigateway-service이든 요청해도 상관없다.
값이 변경된 것을 인지하면 다른 곳에서도 값이 바뀐다.
http://127.0.0.1:8000/user-service/actuator/busrefresh