티스토리 뷰

반응형

0. 시작하며

: 카프카를 잘 모르고 처음 프로듀서를 개발할 때 들이받으면서 정리한 글입니다. 저처럼 처음 카프카를 접하시는 분들께는 도움이 될 수 있으나, 아니신 분들께는 다른 좋은 글을 추천드립니다. 이후로는 프로듀서를 개발할 때 사용한 라이브러리, 설정 옵션 등을 포스팅 할 예정입니다.

해당 게시글은 계속 추가(보완) 할 예정입니다. 

 

 

1. 카프카 (Kafka)

정의 : 여러 대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템

- 높은 처리량과 실시간 지향 (확장성, 영속성-임의 타이밍에서 읽기-, 유연성, 신뢰성)

- 큐잉 모델과 펍-섭 메시징 모델의 특징을 겸비함

  1) 큐잉 모델

   - 브로커(서버) 안에 메시지 큐가 존재.

   - 프로듀서는 큐로 메시지를 보내고, 컨슈머가 큐에서 메시지를 추출

   - 하나의 큐에 여러개 컨슈머가 접근할 수 있어서 병렬 처리가 가능

   - 하나의 메시지는 하나의 컨슈머에서만 처리됨 (ex : a 메시지는 z컨슈머에서 처리된 후, 다른 컨슈머에서 처리 X)

 

  2) 펍섭 모델

   - 프로듀서를 퍼블리셔. 컨슈머를 서브스크라이버 라고 명명함

   - 퍼블리셔가 서브스크라이버 에게 직접 메시지를 보내고 받는 것이 아닌, 브로커를 통해 전달한다.

   - 퍼블리셔는 누가 수신하는지는 알 수 없음 (컨슈머의 존재를 알 필요가 없음)

   - 브로커 내의 토픽(Topic) 이라는 카테고리에 등록한다 .

   - 서브스크라이버는 자신이 흥미있는 토픽만을 선택해서 읽을 수 있고, 같은 토픽을 읽는 서브스크라이버 끼리는    동일한 메시지를 받는다.

   (ex : a 토픽을 구독한 z, x 컨슈머는 동일 메시지를 받옴. b 토픽을 구독한 c 컨슈머는 다른 메시지를 받음)

- 카프카 클러스터 

: 여러대의 브로커, 주키퍼 서버에 의해 구성된 크러스터 시스템

 

 

2. 브로커 (Broker)

정의 : 메시지 수집/전달 역할을 하는 서비스

- 하나의 카프카 서버를 broker라고 함

- 브로커(리소스)를 추가하여 처리량 향상(스케일 아웃)이 가능

 

3. 프로듀서 (producer)

정의 : 메시지 생산자

- 브로커에 메시지를 보내는 애플리케이션

- 프로듀서 개발 시 데이터 전송에 대한 여러 옵션 값을 설정할 수 있다

 

 

4. 컨슈머 (Consumer)

정의 : 메시지 소비자

- 브로커에서 메시지를 취득하는 애플리케이션

 

 

5. 주키퍼

정의 : 브로커에 분산 처리를 위한 관리 도구.

- 분산 메시징의 메타 데이터(토픽과 파티션 등)을 관리하기 위한 구성요소로 기능하마.

 

 

6. NRT

정의 : Near Real Time 색인

- 거의 실시간으로 지원한다는 뜻. 문서를 색인할 때부터 검색 가능할 때까지 대기시간이 매우 짧음

 

 

7. 색인 (Index)

정의 : 다소 비슷한 특징을 가진 문서의 모음

 

 

8. 파티션 

정의 : 브로커 상의 메시지를 물리적으로 분할하는 단위.

- 파티션을 통해 분산 처리를 통한 성능 향상을 할 수 있다. 

(한개의 토픽에 한개의 파티션인 경우, 무수한 요청을 하나에서 처리하게 됨 -> 2개 이상의 파티션으로 등록, 서로 다른 브로커에 병렬 구성하여 요청의 부하를 분산시킴)

- 브로커 수 = 파티션 수 를 맞추는 것이 성능에 좋다고 한다.

- 서비스 중에 파티션을 추가로 늘리는 것은 가능하나, 줄이는 것은 불가능 (토픽 삭제를 해야하므로 신중해야 한다.)

 

 

9. 오프셋 (Offset)

정의 : 각 '파티션 내'에서 메시지의 위치를 표시하는 유니크한 숫자

- 컨슈머가 어디까지 메시지를 읽어갔는지 여부를 관리하기 위해서 사용 됨

- 파티션 '간'의 위치는 기록되지 않으므로, 메시지의 순서가 중요한 경우에는 유의해야함

 

 

 

참고 :

도서 - 실전 아파치 카프카

https://jhleed.tistory.com/180

https://12bme.tistory.com/528

https://searchtool.tistory.com/11

반응형
댓글