본문 바로가기

MessageBroker

Spring Cloud Bus란 무엇인가?

728x90

설정 정보 변경하기 및 반영하기

설정 정보 변경하기

위의 세팅을 모두 적용하며 각각 서비스들과 mesh 를 실행시켜보자.

 

그리고 설정 파일 하나를 변경한다면 어떻게 해야할가?

 

  • 변경 사항 : test.message: this is version 1 -> test.message: this is version 2

설정 정보 반영하기

이제 각각의 마이크로서비스에서 설정 정보를 반영하기 위해서 Spring Boot Actuator refresh 기능을 위해 Postman 에 들어가자

그리고 각각의 마이크로서비스의 주소로 https://my-service/actuator/refresh 명령을 보내면 된다.

 

 

그럼 설정 정보가 반영된다.

 

문제점

그럼 기존의 방식의 문제점이라면 뭐가 있을까?

 

아마 설정이 변경되면 모든 서버에서 actuator refresh 해야 한다는 것이다.

 

지금은 서비스가 2개밖에 없지만 만약 서비스가 100개 라면? 1000개라면?? 그럼 일일이 해당 서비스들의 actuator를 refresh 해야 한다.

 

Container Orchestration 이 도입되어 Auto Scaling 된다면 이 문제점은 더 심각해진다.

 

 

이런 문제를 해결하기 위해서 Spring Cloud Bus 도입을 고민할 수 있다.

Spring Cloud Bus란?

Spring Cloud Bus 는 분산 시스템 환경, 마이크로서비스 환경에서 각각의 노드나 서비스를 연결시켜주는 경량 메시지 브로커이다.

 

Spring Cloud Bus 를 이용한다면 Configuration 들을 Broadcast 하게 변경 사항을 적용시킬 수 있다.

 

 

설정 정보 적용 과정

설정 정보가 적용되는 과정은 다음과 같다.

 

  1. 개발자는 configuration file 을 remote repository 에 push 한다.
  2. Spring Cloud Bus 가 Message Broker 로 변경된 설정 정보에 대한 Message 를 발행한다.
  3. Message Broker는 설정 정보를 저장하고 있는다.
  4. 개발자가 설정 정보가 변경되었음을 Config Server 에게 알려준다.
  5. Message Broker 가 해당 메시지를 Subscribing 하고 있는 Application 들 에게 Broadcasting 한다.
  6. 각각의 Application 은 Spring Cloud Bus 가 받은 설정 정보를 반영한다.

동작과정

Message Broker 선택하기

우리에게는 선택지가 2가지가 있다.

  1. RabbitMQ
  2. Kafka

 

RabbitMQ

초당 20개 이상의 메시지를 처리할 수 있는 능력을 가진 오픈소스 메시지 브로커이다.


Point To Point Message Model와 Pub/Sub Message Model 모두를 지원하지만 Point To Point Message Model 이 가장 적합하며 설정 정보와 같은 가볍고 적은 데이터를 처리하기에 적합하다.

 

Kafka

초당 10만개 이상이 메시지, 이벤트를 처리할 수 있는 능력을 가진 오픈소스 메시지 브로커이다.


Publisher가 Topic 에 메시지를 전달하고 해당 Topic을 구독하는 Subscriber 가 메시지를 가져다 사용하는 형태가 된다.

 


Kafka는 대용량 이벤트를 다루기에 적합하기 때문에 보통 Spring Cloud Bus 에서는 RabbitMQ를 사용한다.

 

 

 

출처:https://wonit.tistory.com/512

728x90