FrameWork/Spring Cloud

Spring Cloud Bus

태윤2 2021. 9. 4. 11:56

Spring Cloud Bus

  • 분산 시스템의 노드(MicroService)를 경량 메시지 브로커(RabbitMQ)와 연결
  • 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)

 

AMQP(Advanced message Queuing Protocol)

  • 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜
  • 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안
  • Erlang, RabbitMQ에서 사용

 

Kafka 프로젝트

  • Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트
  • 분산형 스트리밍 플랫폼
  • 대용량의 데이터를 처리 가능한 메시징 시스템

 

RabbitMQ

  • 메시지 브로커
  • 초당 20+ 메시지를 소비자에게 전달
  • 메시지 전달 보장, 시스템 간 메시지 전달
  • 브로커, 소비자 중심

Kafka

  • 초당 100k+ 이상의 이벤트 처리
  • Pub/Sub, Topic에 메시지 전달
  • Ack(acknowledge)를 기다리지 않고 전달 가능
  • 생산자 중심

Actuator bus-refresh Endpoint

  • HTTP POST /busrefresh를 호출
  • Spring Cloud Bus와 연결된 어느 서비스든 busrefresh를 하게되면 Spring Cloud Bus와 연결된 다른 서비스도 refresh가 적용됨(gateway, config-server  등등 어디든 상관 X)

 

RabbitMq 설치

  • 환경 변수 추가
    • C:\Program Files\erl-24.0
    • C:\Program Files\RabbitMQ Server\rabbitmq_server-[verion]\sbin
  • windows powershell에 Management Plugin 설치
    • rabbitmq-plugins enable rabbitmq_management
  • rabbitmq-server

  • localhost:15672 접속
    • guest/guest로 접속

 

Config-Service, User-Service, Gateway-Service

  • 의존성 추가

  • application.yml에 rabbitMq 설정 정보 추가

rabbitMQ
actuator 설정 정보

  • actuator/busrefsh 호출 (Method = POST)
    • 204 No Content Response Code 발생
    • 바뀌는거 확인