토픽 : 데이터를 구분하기 위해 사용하는 단위. 카프카는 토픽 이름 변경을 지원하지 않으므로 누구나 알아볼 수 있게, 팀 규칙에 따라
짓는것이 중요하다!
파티션에는 프로듀서가 보낸 데이터들(레코드)이 들어가 저장됨.
큐(queue)와 비슷한 구조! FIFO. 먼저 들어간 레코드는 컨슈머가 가져가게 됨. 하지만 pop을 써도 카프카에서는 삭제하지 않고 컨슈머가 가져가는 것과 별개로 관리됨.
파티션은 카프카의 병렬처리의 핵심. 그룹으로 묶인 컨슈머들이 레코드를 병렬로 처리할 수 있도록 매칭된다.
많은 레코드를 병렬로 처리하는 가장 좋은 방법은 컨슈머의 개수를 늘려 스케일 아웃 하는 것 .
컨슈머 개수를 늘림과 동시에 파티션 개수도 늘리면 ==> 처리량이 증가한다.
레코드
: 타임스탬프, 메시지 키, 메시지 값, 오프셋으로 구성
프로듀서가 생성한 레코드가 브로커로 전송되면 오프셋과 타임스탬프(브로커 기준 유닉스 시간)가 지정되어 저장된다. 브로커에 한번 적재된 레코드는 수정할 수 없고 로그 리텐션 기간 또는 용량에 따라서만 삭제된다.
메시지 키 - 메시지 값을 순서대로 처리하거나 메시지 값의 종류를 나타내기 위해 사용
이를 사용하면 프로듀서가 토픽에 레코드를 전송할 때 메시지 키의 해시값을 토대로 파티션을 지정하게 된다. = 동일한 메시지 키라면 동일 파티션에 들어감 (다만 어느 파티션에 지정될지 알 수 없고, 파티션 개수가 변경되면 메시지 키와 파티션 매칭이 달라지게 되므로 주의해야 한다. 메시지 키 사용 안하면 프로듀서에서 레코드 전송할 때 메시지 키를 선언하지 않으면 된다. null. )
메시지 값 - 실질적으로 처리할 데이터 들어있음. 메시지 키,값은 직렬화되어 브로커로 전송되므로 컨슈머가 이용할 때는 직렬화한 형태로
역직렬화 수행해야 한다!
오프셋 - 카프카 컨슈머가 데이터를 가져갈때 사용된다. 컨슈머 그룹으로 이루어진 카프카 컨슈머들이 파티션의 데이터를 어디까지 가져갔는지 명확히 지정할 수 있다.
카프카에서 데이터의 시작점은 프로듀서이다. 프로듀서 애플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽 타피션에 전송한다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신한다.
'Data Engineering > Kafka' 카테고리의 다른 글
메시지 키가 지정된 데이터 전송 프로듀서 (0) | 2021.07.19 |
---|---|
프로듀서 중요 개념 (0) | 2021.07.18 |
카프카 각 컨포넌트들의 특징 (0) | 2021.06.21 |
카프카 커맨드 라인 툴 (0) | 2021.06.14 |
카프카 브로커 실행 옵션 설정 (0) | 2021.05.27 |