이번 프로젝트에서 kafka 를 사용해보며 알게된 kafka 기본 개념을 정리하고자 한다.
kafka 는 Apache 에서 개발한 Message Broker 이며 개발언어는 스칼라를 사용했다.
Message Broker(혹은 Message Queue 라고 부른다) 의 기본개념을 알아보자.
메세지 큐의 장점
- 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다.
- 비동조(Decoupling): 어플리케이션과 분리할 수 있습니다.
- 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다.
- 과잉(Redundancy): 실패할 경우 재실행 가능합니다.
- 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다.
- 확장성(Scalable): 다수의 프로세스들이 큐에 메세지를 보낼 수 있습니다.
메세지 큐 사용처
- 다른 곳의 API로 부터 데이터 송수신이 가능합니다.
- 다양한 어플리케이션에서 비동기 통신을 할 수 있습니다.
- 이메일 발송 및 문서 업로드가 가능합니다.
- 많은 양의 프로세스들을 처리할 수 있습니다.
출처: https://12bme.tistory.com/176 [길은 가면, 뒤에 있다.]
Kafka 동작방식
1. 메세지 생산자(Producer) 가 Message Broker 에 메세지를 보낸다.
2. 메세지 소비자(Consumer) 가 Message Broker 에 쌓인 메세지를 읽는다.
Kafka Keywords
- Topic
topic 은 메세지를 분류하는 기준이며 producer 와 consumer 는 topic 을 특정하여 메세지를 보내고 읽는다. - Partition
하나의 topic 에 많은 양의 메세지가 순간적으로 몰릴 때 병렬처리를 해준다.
partition 은 기본적으로 Round-robin 방식으로 분산처리를 한다.
운영중에 partiton 을 늘릴 수 있지만 줄일 수 없으므로 설계 시 유의해야함.
순차적 처리가 엄청 중요한 모델일 경우 위험함 (ex. 증권시스템) - Producer
Producer 는 메세지 생산의 주체이다.
메세지를 전달할 때 특정 파티션에 지정해서 적재할 수 있다. - Consumer
Consumer 는 메세지 소비의 주체이다.
Producer 와 완전히 분리되어 자신의 성능에 맞게 처리량을 조절할 수 있음.
메세지를 소비하면 Message Broker 에 offset 위치를 업데이트해서 마지막 처리지점을 저장.
Consumer 가 죽었다 살아나도 offset 을 통해 재처리가 가능함 (fail-over 에 대한 신뢰) - Consumer Group
topic 의 partiton 은 consumer group 과 1:n 매칭을 해야한다.
partition 과 consumer 의 개수는 1:1 을 권장하나 처리속도에 따라 조절해야한다.
consumer 가 down 되는 상황을 고려해서 consumer group 을 사용하는 것을 권장한다. - Broker
Broker 는 카프카의 서버이다.
Broker 에 id 를 설정하여 여러 개의 broker 서버를 띄울 수 있다.
여러 broker 를 cluster 로 구성할 시 message segment 를 복제한다.
Zookeeper 에 의해 선정된 컨트롤러는 leader broker 가 되며 메세지를 받고 복제하는 역할을 한다. - Zookeeper
Zookeeper 는 분산 메세지 큐의 정보를 관리한다. (분산 코디네이터)
Broker 들의 상태를 기록 및 추적하여 컨트롤러를 선정한다.
Kafka 를 동작하기 위해 반드시 zookeeper 가 동작되어야 한다. (추후 제거 가능할지도..?)
- Replication
Broker 를 여러 대 띄울경우 복제가 된다.
leader 와 follewer 로 나뉘며 follower 들은 leader 와 싱크를 맞춘다.
leader 가 죽을 경우 follower 중 하나가 leader 가 된다.
producer config 에서 ack 설정을 -1 로 하면 leader 가 follower 들에게 메세지를 복사한 뒤 ack 를 보낸다.
default(ack=1) 옵션은 leader 가 메세지를 읽으면 ack 를 보낸 뒤 follower 들에게 메세지를 복사한다.
반응형
'Linux > kafka' 카테고리의 다른 글
Kafka-Manager 사용예제 (Yahoo CMAK) (0) | 2021.01.19 |
---|---|
Apache Kafka Web UI Kafka-Manager 설치하기 (Yahoo CMAK) (0) | 2020.04.28 |
CentOS 8 Apache Kafka 설치 (dnf install) (0) | 2020.04.27 |
CentOS 8 Apache Kafka Install using Docker-Compose (0) | 2020.04.23 |
최근댓글