설정 정보를 변경하는 방식으로 Spring cloud bus를 사용한다.
Atuator의 refresh 방법은 서버가 늘어나면 하나하나를 전부 해줘야 해서 번거롭다.
Spring cloud bus 는
- 분산 시스템의 노드(마이크로 서비스)를 경량 메시지 브로커와 연결한다
- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달한다 (broadcast)
다이렉트로 메시지를 전달하는 것이 아니라 중간에 middleware를 두고 전달하는 방식이다.
AMQP (Advanced Message Queing Protocol) 을 이용해서 변경점을 알려준다.
=> push update
AMQP : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜
- 메시지 지향, 큐잉 라우팅, 신뢰성, 보안
- Erlang, RabbitMQ에서 사용
kafka 프로젝트
- Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
- 분산형 스트리밍 플랫폼
- 대용량 데이터 처리 가능한 메시지 시스템
스프링 클라우드 버스가 작동되는 방식
클라우드 서버에 대해 Http Post -> Busrefresh
이때 어디에 호출하는 것은 상관 없고, 버스에 연결된 어디에든 해도 된다.
먼저 dependency를 설정해준다.
config 서버 :
implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
user, gateway server:
implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
yml 파일에 다음과 같은 설정을 추가해준다.
이럼으로써 각각의 서버들이 노드로서 연결이 되는 그림이 된다.
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: refresh, health, beans, httptrace, busrefresh
이로써
/actuator/busrefresh를 post 방식으로 전달하면 하나만 업데이트 해도 연결된 노드들 역시 업데이트 된다.
'Programming > Java, Spring' 카테고리의 다른 글
[Spring cloud] 비대칭키로 암호화하기 (0) | 2023.06.01 |
---|---|
[Spring Cloud] config에서 대칭키 암호화 설정하기 (0) | 2023.06.01 |
[Spring Cloud] Config yml 설정, actuator를 이용한 자동 반영 (0) | 2023.06.01 |
[Spring Cloud] JWT 토큰 생성과 API Gateway에서 검증 필터 구현 (0) | 2023.06.01 |
[Spring Cloud] API Gateway Routing 시 마이크로서비스 식별 주소값을 제외하고 실용적인 uri를 전달하는 방식 (0) | 2023.06.01 |