설정 파일의 값을 변경했을 때 변경된 값을 가져갈 수 있는 방법은 3가지다
- 서버 재기동 [패스]
1. Actuator refresh
refresh 어플리케이션의 모니터링과 상태, 변경된 내용을 체크할 수 있는 End Point를 제공하지만
어플리케이션의 서버가 여러개, MSA면 refresh를 일일이 수동으로 해야되기 때문에 번거롭다
2. Spring cloud bus
- 분산 시스템의 노드(MSA)를 경량 메시지 브로커(Rabbit MQ)와 연결
- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)
Spring Cloud Config Server에 마이크로 서비스가 다 연결되어 있는 상태이다
Config Server과 연결되어 있는 Spring Cloud Bus가 마이크로 서비스에다가 변경된 정보를 직접 PUSH를 해주는게 BUS의 역할이다. Actuator refresh를 일일이 해주지 않아도 된다
3. MQ 종류
1). AMQP : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜
- 메시지 지향, 큐잉, 라우팅, 신뢰성, 보안
- Erlang, RabbitMQ에서 사용
2). Kafka 프로젝트
- Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
- 대용량의 데이터를 처리 가능한 메시징 시스템
3). RabbitMQ
- 메시지 브로커
- 초당 20+ 메시지를 소비자에게 전달
- 메시지 전달 보장, 시스템 간 메시지 전달
- 브로커, 소비자 중심
4). Kafka
- 초당 100k+ 이상의 이벤트 처리
- Pub/Sub, Topic에 메시지 전달
- Ack를 기다리지 않고 전달 가능
- 생산자 중심
4. Windows에서 Rabbit MQ 설치
1). Erlang 설치 [나는 23.1버전으로 설치했다.]
2). 환경 변수 편집
3). Rabbit MQ 설치
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.11/rabbitmq-server-3.8.11.exe
4). Rabbit MQ 설치확인
5). Rabbit MQ 환경 변수 설정 [sbin 폴더까지]
6). Rabbit MQ Management Plugin 설치
Power Shell에서 [rabbitmq-plugins enable rabbitmq_management] 입력
rabbitmq-plugins enable rabbitmq_management // 플러그인 활성화
rabbitmq-plugins disable rabbitmq_management // 플러그인 비활성화
net start RabbitMQ // 윈도우에서 RabbitMQ 실행
net stop RabbitMQ // 윈도우에서 RabbitMQ 종료
7). http://127.0.0.1:15672 접속 [기본 정보는 id, pw는 guest]
5. Config, users, gateway service -> application.yml 수정
spring:
application:
name: config-service
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: health, busrefresh
6. 서버 기동 순서
1). RabbitMQ Server 기동
2). Spring Cloud Config Service 기동
3). Eureka Discovery Service 기동
4). Spring Cloud Gateway Service 기동
5). Users Service 기동
설정파일 수정 후 busrefresh
user-service
gateway-service
user-service에서 리프레쉬가 되었지만 Rabbit-MQ로 인해 연결된 모든 서버에게 동일한 메시지가 전달된 것을 확인
'Java > Spring Boot' 카테고리의 다른 글
[MSA] Spring Cloud로 MSA를 개발해보자 8편 [서비스간 통신-1] (0) | 2024.08.29 |
---|---|
[MSA] Spring Cloud로 MSA를 개발해보자 7편 [설정 정보 암호화] (0) | 2024.08.28 |
[MSA] Spring Cloud로 MSA를 개발해보자 5편 [Config] (0) | 2024.08.26 |
[MSA] Spring Cloud로 MSA를 개발해보자 4편 [JWT 인증] (0) | 2024.08.25 |
[MSA] Spring Cloud로 MSA를 개발해보자 3편 [Gateway Service-2] (0) | 2024.08.16 |