Programming/Java, Spring

[Spring Cloud] bus, rabbitmq를 이용해 서버 연결하고 actuator를 이용한 갱신 집합화하기

Renechoi 2023. 6. 1. 19:24

설정 정보를 변경하는 방식으로 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 방식으로 전달하면 하나만 업데이트 해도 연결된 노드들 역시 업데이트 된다. 

 

 

 

 


ref. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

반응형