Spring Cloud Bus

2024. 12. 11. 15:13Spring Microservice

네, 맞습니다! Spring Cloud Bus는 Kafka를 공식적으로 지원하므로, Kafka를 사용하는 것이 훨씬 간단하고 안정적입니다. Kafka는 고성능, 내구성, 확장성을 갖춘 분산 메시징 시스템으로, Spring Cloud Bus의 사용 사례와 잘 맞아떨어집니다.

Kafka와 Spring Cloud Bus 설정

  1. 의존성 추가
    Spring Cloud Bus와 Kafka를 사용하려면 다음과 같은 의존성을 추가해야 합니다.

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-kafka</artifactId>
    </dependency>
  2. Kafka 설정
    application.yml에 Kafka 브로커 정보를 추가합니다.

    spring:
      cloud:
        bus:
          enabled: true
        stream:
          kafka:
            binder:
              brokers: localhost:9092

    위 설정에서 brokers는 Kafka 클러스터의 주소를 나타냅니다. 로컬에서 Kafka를 실행하려면 localhost:9092로 설정하면 됩니다.

  3. Kafka 브로커 실행
    Kafka는 기본적으로 Zookeeper를 필요로 합니다. Kafka를 실행하려면 로컬 환경이나 Docker를 사용할 수 있습니다. Docker를 사용하면 간단히 실행 가능합니다.

    docker run -d --name zookeeper -p 2181:2181 zookeeper:latest
    docker run -d --name kafka -p 9092:9092 --link zookeeper \
        -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
        -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
        confluentinc/cp-kafka:latest
  4. Spring Cloud Bus 사용
    Spring Cloud Bus는 애플리케이션 간의 구성 변경 이벤트를 전파합니다. 예를 들어, Spring Cloud Config Server와 함께 사용할 때 POST /actuator/bus-refresh를 호출하면 구성 변경이 자동으로 전파됩니다.

    curl -X POST http://localhost:8080/actuator/bus-refresh
  5. 추가적인 고려 사항
    Kafka를 사용하는 경우 아래의 장점을 누릴 수 있습니다:

    • 높은 내구성: Kafka의 로그 구조로 인해 메시지 손실 없이 구성 변경 이벤트를 관리할 수 있습니다.
    • 확장성: 수백 개의 서비스가 Kafka를 통해 메시지를 전파받을 수 있습니다.
    • 구성 간소화: Spring Cloud Stream을 기반으로 하므로, 복잡한 설정이 필요하지 않습니다.

Kafka 사용의 이점

  • Spring Cloud Bus와 완벽 호환: 별도의 커스터마이징 없이도 바로 사용할 수 있습니다.
  • 대규모 환경 적합: RabbitMQ에 비해 Kafka는 대규모 분산 시스템에서 더욱 안정적입니다.
  • Spring 지원 생태계: Spring Boot와 Spring Cloud에서 Kafka를 위한 많은 기능을 제공합니다.

Kafka를 선택하신다면, Spring Cloud Bus와 Kafka의 조합은 강력하고 확장 가능한 구성 변경 관리 시스템을 구현하는 데 훌륭한 선택입니다! 추가 설정이나 문제가 있으면 언제든 물어보세요. 😊

'Spring Microservice' 카테고리의 다른 글

eureka server configuration  (0) 2024.12.11
@EnableFeignClients  (0) 2024.12.11
서비스 디스커버리 클라이언트 Push/Pull  (0) 2024.12.11
Gossip Protocol  (0) 2024.12.11
Client-side load balancing  (0) 2024.12.11