아파치 카프카란
대용량, 대규모 메시지 데이터 처리하기 위한 분산 메시징 플랫폼입니다.
카프카를 쓰는 이유?
서버가 늘어나면서 타겟이 한 곳이 아니라 여러 곳으로 분산해서 데이터를 보내게 됩니다.
실시간 트랜잭션 처리와 비동기 처리가 이뤄져야 하지만 관리하는 플랫폼이 없어 파이프라인 관리가 어려워집니다.
카프카는 송신자와 수신자 사이에 위치에 적절하게 메시지를 분리해줍니다.
송신자(Publisher): 카프카에 데이터를 전송만 담당한다. 누가 받는지는 신경 쓰지 않습니다.
수신자(Subscriber): 수신자는 카프카에 원하는 토픽을 구독하고 데이터를 받습니다.
누구에게 보낼지 신경 쓰지 않아도 되며 수신자는 원하는 토픽의 메시지만 가져올 수 있습니다.
유지보수, 트래픽, 에러 처리 등에 대해 유리해집니다.
장점
1. 프로듀서와 컨슈머의 분리
2. 메시지 데이터를 여러 컨슈머가 받아볼 수 있습니다.
3. 높은 처리량
4. 스케일 아웃
카프카의 구성 요소 3가지
1. Producer : 큐에 데이터를 보내는 역할 담당
2. Topic : 카프카에 존재하는 것으로 프로듀서가 보낸 데이터를 구분합니다.
3. Consumer : 토픽으로 구분된 데이터를 받습니다.
토픽 내부에는 여러 개의 파티션으로 구성되어 있습니다.
한 토픽에 메시지가 쏟아진다면 토픽에 과부하가 일어나게 될 것입니다. 그렇기에 파티션을 나누어 각 파이션에 쓰기가 가능하도록 분할하는 기능을 수행합니다.
파티션에 데이터 넣는 법
파티션이 큐처럼 데이터가 파티션 끝에서부터 쌓입니다. 오래된 순서대로 데이터를 가져가고 데이터가 없다면 대기 합니다.
컨슈머가 데이터를 가져가도 데이터는 삭제되지 않습니다. 다른 컨슈머가 데이터 요청을 하면 0번부터 가져갈 수 있습니다.
같은 데이터라도 다른 목적으로 처리할 수 있기 때문입니다.
로그 분석 및 시각화를 위해 엘라스틱 처리를 한다던지 로그 백업을 위한다던지 여러 가지가 있습니다.
참고 문헌
'언어 & 라이브러리 > 카프카' 카테고리의 다른 글
카프카 명령어 정리 (0) | 2022.02.12 |
---|---|
스프링에서 카프카 시작하기 (0) | 2022.02.09 |
댓글