카테고리 없음
Kafka- 기본
stophyeon
2024. 7. 20. 14:00
728x90
Kafka란
kafka란 실시간으로 스트리밍 데이터를 수집하고 처리할 수 있는 분산 이벤트 스트리밍 플랫폼입니다.
말이 어려우니 예를 들어 보겠습니다.
MSA 구조로 설계된 어플리케이션은 여러 서버가 있는데 서버가 기능을 수행했을 때 데이터의 변화가 발생하면
다른 서버에 연결되어있는 DB에 있는 데이터에 변경이 필요할 수 있습니다. 이 때 서버간 통신이 필요합니다.
서버간 통신을 하는 방법으로는 2가지가 있습니다.
1. 다른 서버에 API호출을 통해 서버에 요청을 해서 데이터를 변경하는 방법
2. Kafka와 같은 분산 이벤트 스트리밍 플랫폼을 사용하는 방법
1번 방법은 서버에 요청을 하므로 요청을 한 서버에 문제가 발생하면 다른 서버에도 영향을 주고, 어플리케이션의 크기가 커질수록 서버가 늘어나고 이 때마다 서버간에 통신을 위해 API를 개발해야하므로 구조가 복잡해지는 문제가 있습니다. 위 문제를 해결하는 방법이 2번 방법입니다.
Kafka의 구조 & 용어
Message - 이벤트로 데이터에 어떤 변화가 발생했는지에 대한 데이터
Producer - 메시지를 발행하여 생산하는 주체(서버)
Consumer - 메시지를 구독하여 소비하는 주체(서버)
Kafka Cluster - Broker들의 모임
Broker - 각각의 카프카 서버
Topic - 메시지를 구분하는 단위(각 메시지가 어떤 유형인지)
Producer는 메시지를 이벤트에 해당하는 Topic에 전송하고 Consumer는 해당 Topic을 구독하고있다면 Broker에서 메시지를 가져오는 방식으로 동작함
Kafka 사용 방법
Kafka를 Spring Boot에서 사용하기 위해서는 Producer아 Consumer 설정해줘야 합니다.
Consumer 설정 코드
consumer가 속할 group-id, 메시지를 받을 server 주소, 역직렬화 방식을 설정
Producer 설정 코드
Producer가 메시지를 보낼 server 주소, 직렬화 방식을 설정