Overview
(아파치 카프카)는 LinkedIn에서 개발된 분산 메시징 시스템으로써 2011년에 오픈소스로 공개 Kafka는 발행-구독(publish-subscribe) 모델을 기반으로 동작하며 크게 producer, consumer, broker로 구성됩니다.
pub-sub은 메세지를 특정 수신자에게 직접적으로 보내주는 시스템이 아니고 publisher는 메세지를 topic을 통해서 카테고리화 하여 분류된 메세지를 받기를 원하는 receiver는 그 해당 topic을 구독(subscribe)함으로써 메세지를 읽어 올 수 있습니다. 즉, publisher는 topic에 대한 정보만 알고 있고, 마찬가지로 subscriber도 topic만 바라본다. publisher 와 subscriber는 서로 모르는 상태다. 가장 간단한 예제로 신문사에서 신문의 종류(topic)에 메세지를 씁니다
kafka는 토픽을 파티션으로 분산 할수 있습니다. 즉 병렬로 처리가능해집니다. 하지만 라운드로빈 방식으로 처리되기때문에 순서가 중요할 때는 단일 파티션을 구성하면 됩니다.
- producer : 메시지를 생산하는 주체 메시지를 토픽별로 생산해서 kafka cluster(정확히는 broker)에 전달
- broker : 토픽 기준으로 메세지를 관리
- consumer: 소비자 생산된 메세지를 토픽별로 소비
- zookeeper: 카프카는 확장성과 고가용성(high availability)을 위하여 broker들이 클러스터로 구성되어 동작하도록 설계되어있다. 심지어 broker가 1개 밖에 없을 때에도 클러스터로써 동작한다. 클러스터 내의 broker에 대한 분산 처리는 아래의 그림과 같이 Apache ZooKeeper가 담당합니다. 즉 카프카 자원관리를 주키퍼가 담당하게 됩니다.
Installation
statefulet (strimzi 이용)
external setting
Spring boot test app
consumer
producer
Listener
Test Controller
test