동작 방식과 원리
- 메시징 서버로 동작.
- Pub/Sub 모델.
Pub/Sub 모델이란?
- 비동기 메세지 전송 방식.
- 발신자의 메시지는 수신자가 정해져있지 않은 상태에서 발행.
- 수신자는 발신자의 정보를 몰라도 원하는 메세지를 수신.
[1] 일반적인 네트워크 통신
- 직접 연결되어 있기 때문에 확장성이 좋지 않다.
[2] 펍/섭 형태의 네트워크 통신
- 수신측 중 하나가 장애가 나도 데이터가 유실되지 않는다.
- 확장성이 좋다.
- 다만 기존 메시징 시스템은 내부 교환기 부하, 각 컨슈머들의 큐 관리, 메시지 정합성 등
내부 프로세스가 복잡했기 때문에 속도와 용량 등 성능 문제가 있었다.
[3] 카프카의 아키텍처
- 기존 메시징 시스템의 성능 단점을 극복.
- 메시지 교환 전달의 신뢰성 관리를 프로듀서와 컨슈머에 넘겼다.
- 부하가 많이 걸리는 교환기 기능도 컨슈머가 만들 수 있게 하여 메시징 시스템 내의 작업을 줄였다.
카프카의 특징
[1] 프로듀서와 컨슈머의 분리
- 프로듀서와 컨슈머 사이의 결합도가 높다.
- 만약 서버가 1대 더 추가되면 연동해야 할 시스템이 많아진다.
- 프로듀서는 컨슈머를 신경 쓸 필요없이 카프카로 메시지를 보내기만 하면 된다.
- 한쪽 시스템에 문제가 발생해도 연쇄작업이 발생할 확률이 낮아진다.
- 서버를 쉽게 추가할 수 있다.
[2] 멀티 프로듀서, 멀티 컨슈머
- 하나의 데이터를 다양한 용도로 사용할 수 있다.
[3] 디스크에 메시지 저장
- 일반적인 메시징 시스템은 컨슈머가 메시지를 읽으면 큐에서 메시지를 삭제한다.
- 카프카는 정한 보관 주기 동안 디스크에 메시지를 저장해둔다.
- 컨슈머의 장애 혹은 처리가 늦어지더라도 메시지가 손실 되지 않는다.
[4] 확장성, 높은 성능
- 카프카 클러스터는 3대의 브로커로 시작해 수십 대로 쉽게 확장 가능하다.
- 고성능을 유지하기 위해 내부적으로 분산 처리, 배치 처리 등 다양한 기법을 사용한다.
카프카 용어 정리
브로커
- 카프카 애플리케이션이 설치된 서버.
토픽
- 프로듀서와 컨슈머들이 카프카로 보낸 메시지를 구분하기 위한 네임.
파티션
- 병렬처리가 가능하도록 토픽을 나눌 수 있다.
프로듀서
- 메시지를 생산하여 브로커의 토픽으로 보내는 서버.
컨슈머
- 브로커의 토픽 이름으로 저장된 메세지를 가져가는 서버.