Programming/Kafka

[kafka] 카프카란 ? 비동기 처리 메세지 큐의 한 종류

bisi 2020. 4. 2. 18:52

 

카프카 기본 개념

1.  정의

- 비동기 처리를 위한 메시킹 큐의 한 종류

- 프로듀서와 컨슈머로 구성

- 대표적인 비동기 메시징 시스템임 메일과 비슷한 개념

 

Mail System | Kafka System
보내는 사람 | Producer
Mail Server | Kafka Server
받는사람 | Consumer

즉, 보내는 사람은 받는 사람과 상관없이 메일 서버로 메세지를 전송한다. 보낸 메세지는 메일서버에 저장되어 있고, 받는 사람은 언제든지 자기가 원하는 시간에 메일을 받아볼 수 있다.

 

 

 

Quickstart 참고사항

아파치 카프카 공식홈페이지의 QuickStart를  따라해볼때 주의사항입니다.

 

1. 서버는 최소 3대 구성하기 

  • 주키퍼 - 3EA
  • 카프카 - 3EA 

주키퍼는 카프카의 노드를 관리해주고, 토픽의 offset 정보등을 저장하기 위해 필요하다.

카프카 실행전 주키퍼가 먼저 실행되어 있어야 한다.

주키퍼는 과반수 투표 방식으로 결정하기 때문에 과반수 이상 살아 있으면 정상적으로 작동한다.

예 ) 주키퍼 3대일 경우 카프카 2대 이상, 주키퍼 5대일 경우 3대 이상

카프카는 과반수 투표방식을 사용하지 않지만, Replication Factor를 3으로 할 경우 균일하게 스프레드하기 위해서 노드 수가 최소 3이 되는것을 권장한다. (__consumer_offesets 토픽은 기본값이 RF3이다)

 

2. 서버 설치

 

카프카를 다운로드 한 후 압축을 풀어주면 주키퍼와 카프카가 포함되어 있다. 

 

이와 관련된 내용은 이전에 아래 페이지 참고

[DataSicence/kafka] - [kafka] quick start Single-broker cluster window/linux

 

[kafka] quick start Single-broker cluster window/linux

참고 사이트 : kafka quickstart step 1. kafka 다운로드 공식홈페이지에서 kafka 다운로드 압축 해제 - 아래는 리눅스 압축해제 후 폴더 경로로 들어가기 tar -xzf kafka_2.12-2.4.1.tgz cd kafka_2.12-2.4.1 - O..

log-laboratory.tistory.com

 

3 서버를 구동하고 Topic 생성

 

3개의 서버 구동시에 설정해야하 Config는 Quickstart에 자세히 나와있으므로 내용은 생략한다.

 

카프카에서 토픽은 데이터베이스의 table 정도의 개념으로 생각하면 된다.  

카프에 저장되는 데이터를 토픽이라는 이름으로 구분하기 위해서 사용한다.

repclia 2 or 3은 복제본의 갯수를 의미하고, partition은 토픽을 몇개로나눌 것인지 의미한다.

 

4. 파티션 수에 따른 메시지 순서

 

카프카의 default 파티션수 : 8

카프카는 메세지의 순서를 보장해 주지 않는다. (단, partition이 1일 경우에는 순서를 보장할 수 있다.)

 

# partition = 1 

 

 

# partition = 4

 

partition 4개시 data 흐름

 

최종 컨슈머 모습