Pub / Sub Model
Pub / Sub 모델이란 메세지를 발행(Publish) 하고 구독(Subscribe) 하는 형태의 통신 모델이다
기존의 N : N 통신보다 확장성이 용이하고 커넥션을 맺고있는 객체가 불능이 되어도 메세징 시스템만 살아있다면 메세지는 유실되지 않는다
즉 Publisher는 메세징 시스템으로 메세지를 전송하고 Consumer는 메세징 시스템으로 메세지를 받아오는 구조이다
Pub Sub Model을 통해 구조를 단순하게 만들 수 있고 각각의 서비스 서버는 모니터링이나 분석 시스템의 상태 유무와 관계 없이 메세징 시스템으로 전송만 수행하면 되고 모니터링이나 분석 시스템 역시 각각의 서비스 서버의 상태 유무와 관계 없이 메세징 시스템에서 메세지를 받아오면 된다
Kafka Characteristic
Multi Producer Multi Consumer
카프카는 하나의 토픽에 여러 프로듀서와 컨슈머가 접근이 가능하다
또한 하나의 프로듀서나 컨슈머는 다수의 토픽으로 메세지를 보내고 받아올 수 있다
메세지 저장
카프카는 다른 메세징 시스템과 다르게 디스크에 메세지를 저장한다
다른 메세징 시스템은 메세지 큐에서 컨슈머가 메세지를 읽어가면 삭제 한다
이를 통해 카프카는 트래픽이 일시적으로 증가해 처리가 늦어지더라도 디스크에 보관되어 있기 때문에 안전하게 메세지를 처리할 수 있다
확장성
카프카는 수십대의 브로커로 확장이 가능하다
또한 카프카 서비스의 중단 없이 온라인 상태에서 확장 작업이 가능하다
성능
카프카는 고성능을 유지하기 위해 내부적으로 분산 처리, 배치 처리 등 다양한 방법을 사용한다
참고
브로커 : 카프카 어플리케이션이 설치되어 있는 서버 혹은 노드
토픽 : 프로듀서와 컨슈머들이 카프카로 보낸 메세지를 구분하기 위한 이름 즉 프로듀서와 컨슈머들의 관심사
파티션 : 병렬처리가 가능하도록 토픽을 나눌 수 있고 많은 양의 메세지 처리를 위해 파티션의 수를 늘릴 수 있다
프로듀서 : 메세지를 생산하여 브로커의 토픽으로 보내는 서버 또는 어플리케이션
컨슈머 : 토픽으로부터 저장된 메세지를 가져가는 서버 또는 어플리케이션