JVM/SpringCloud

Spring Cloud Bus

kyoulho 2023. 12. 28. 15:14

Spring Cloud Bus


 Spring Cloud Bus는 분산 시스템에서 구성 변경 및 이벤트 전파를 지원하는 도구이다. 이를 통해 여러 서비스 인스턴스 간에 구성 변경을 효율적으로 전파하고, 런타임 중에 애플리케이션 상태를 모니터링하고 관리할 수 있다.

  1. 이벤트 버스: Spring Cloud Bus는 이벤트 버스를 사용하여 분산된 서비스 간에 이벤트를 전파한다. 이를 통해 구성 변경, 애플리케이션 이벤트 등을 브로드캐스트할 수 있습니다.
  2. 구성 변경 전파: Spring Cloud Config와 통합하여 구성 서버에서 가져온 구성 정보를 변경할 때 이를 모든 서비스 인스턴스에 효과적으로 전파할 수 있다.
  3. 애플리케이션 상태 모니터링: 애플리케이션의 상태 변경, 이벤트, 구성 변경 등을 모니터링하고 이를 이벤트 버스를 통해 전파할 수 있다.
  4. 다양한 메시지 브로커 지원: Spring Cloud Bus는 다양한 메시지 브로커를 지원한다. 기본적으로는 AMQP (RabbitMQ)와 Kafka를 지원하며, 다른 메시지 브로커도 사용할 수 있습니다.
  5. 작동 방식: Spring Cloud Bus는 Spring Cloud Config Server와 연동하여 분산 시스템의 서비스 간에 경량 메시지 브로커를 제공한다. 외부에서는 연결된 서버중에 아무 서버에나 HTTP POST /busrefresh 엔드포인트를 호출하면 된다. 이 호출은 Spring Cloud Bus가 변경된 내용을 감지하여 모든 클라이언트의 구성 정보를 업데이트한다.
Advanced Message Queuing Protocol(AMQP)은 메시징을 위한 개방형 표준 프로토콜이다. AMQP는 다양한 메시지 지향 미들웨어 시스템에서 사용되며, 분산 시스템 간의 메시지 통신을 위한 교환 형식 및 통신 규약을 정의한다. 다양한 언어 및 플랫폼 간에 메시지를 효과적으로 교환할 수 있도록 설계되었다.

 

 

Config Server


라이브러리

implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.cloud:spring-cloud-starter-bus-amqp")

 

application.yml

spring:
  ## rabbitmq 접속 정보
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
 ## busrefresh 엔드포인트를 연다
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,beans,httprace,busrefresh

 

 

Config Client


라이브러리

implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.cloud:spring-cloud-starter-bus-amqp")

application.yml

spring:
  cloud:
    config:
      name: ecommerce
      profile: dev
      
  config:
    import: optional:configserver:http://localhost:8888
    
  ## rabbitmq 접속 정보
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

## busrefresh 엔드포인트를 연다
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,beans,httprace,busrefresh

 

 

BusRefresh

클라이언트 서버에 /actuator/busrefresh 엔드포인트를 호출하면 204 No Content가 반환되고 연결된 모든 서버의 설정 값이 변경된다.

'JVM > SpringCloud' 카테고리의 다른 글

마이크로서비스간 동기 통신  (0) 2023.12.30
Spring Cloud Config Server의 암호화  (1) 2023.12.30
Spring Cloud Config  (0) 2023.12.27
Spring Swagger(Springdoc) 통합 설정  (0) 2023.12.27
Spring Gateway, Eureka 연동  (0) 2023.09.03