반응형

카프카란?

APACHE KAFKA

More than 80% of all Fortune 100 companies trust, and use Kafka.

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.

 

Fortune 100대 기업 중 80% 이상이 Kafka를 신뢰하고 사용하고 있다.

Apache Kafa는 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 수천 개의 회사에서 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다.

- https://kafka.apache.org/

 

기본 구조

  • 카프카 클러스터 - 메시지를 저장하는 저장소
  • 브로커 - 각각의 서버(메시지를 나눠서 저장, 이중화 처리, 장애 대체)
  • 주키퍼 클러스터(앙상블) - 카프카 클러스터 관리 용도(카프카 클러스터에 대한 정보가 관리가 되고 기록이 됨)
  • 프로듀서 - 카프카 플러스터에 메시지를 보낸다. (데이터를 이동하는데 필요한 핵심 역할)
  • 컨슈머 - 카프카에서 메시지를 읽어낸다. (데이터를 이동하는데 필요한 핵심 역할)

토픽

- 카프카에서 메시지를 저장하는 단위

- 토픽은 메시지를 구분하는 용도로 사용

- 파일 시스템의 폴더나 메일함과 유사함

- 한 개의 토픽은 한 개 이상의 파티션으로 구성   * 파티션은 메시지를 저장하는 물리적인 파일을 의미

- 프로듀서와 컨슈머가 토픽을 기준으로 메시지를 주고받는다.

- 예) 뉴스용 토픽, 주문용 토픽

 

파티션

- 파티션은 추가만 가능한(append-only) 파일

- 각각 메시지가 저장된 위치를 오프셋(offset)이라고 한다.

- 프로듀서가 메시지를 저장을 하게되면  offset0, offset1 ... offset7 이런식으로 값을 가지게 된다.(파티션 맨 뒤에 추가된다.)

- 컨슈머는 오프셋 기준으로 순서대로 읽는다. (이후 메시지만 읽을 수 있다. 전에 메시지는 읽지 못한다.)

- 메시지는 삭제되지 않는다.

 

여러 파티션과 프로듀서

토픽은 여러 파티션으로 구성될 수 있는데 프로듀서는 어떤 파티션에 메시지를 저장을 할까? 

라운드로빈 또는 키를 이용해서 파티션을 선택한다. (같은 키에 대해서는 같은 파티션에 저장이 된다.  말인즉슨 같은 키는 순서가 유지된다.)

 

여러 파티션과 컨슈머

 - 컨슈머는 컨슈머그룹에 속하게 된다.

 - 한 개 파티션은 컨슈머그룹의 한 개 컨슈머만 연결이 가능하다.

     - 즉 컨슈머그룹에 속한 컨슈머들은 한 파티션을 공유할 수 없다.

     - 한 컨슈머그룹 기준으로 파티션의 메시지는 순서대로 처리된다.

     - 한개의 파티션을 서로 다른 그룹의 컨슈머는 공유할 수 있다.

성능이 좋은 이유

1. 파티션 파일을 OS 페이지캐시를 사용한다.

 - 파티션에 대한 파일 IO를 메모리에서 처리한다.

 - 서버에서 페이지캐시를 카프카만 사용해야 성능에 유리

2. Zero Copy

 - 디스크 버퍼에서 네트워크 버퍼로 직접 데이터 복사하기 때문에 빨라진다.

3. 브로커가 하는 일이 비교적 단순

 - 메시지 필터, 메시지 재전송과 같은 일은 브로커가 하지 않음(프로듀서, 컨슈머가 한다.)

 - 브로커는 컨슈머와 파티션 간 매핑 관리

4. 묶어서 보내고, 묶어서 받는다.

 - 프로듀서 : 일정 크기만큼 메시지를 모아서 전송 가능하다.

 - 컨슈머 : 최소 크기만큼 메시지를 모아서 조회 가능하다.

 - 낱개 처리보다 처리량 증가

5. 처리량 증대(확장)가 쉽다.

 - 1개 장비의 용량 한계 -> 브로커 추가, 파티션 추가

 - 컨슈머가 느림 -> 컨슈머 추가( +파티션 추가)

 

리플리카 - 복제

리플리카 : 파티션의 복제본

 - 복제수만큼 파티션의 복제본이 각 브로커에 생김

리더와 팔로워로 구성

 - 프로듀서와 컨슈머는 리더를 통해서만 메시지 처리

 - 팔로워는 리더로부터 복제

장애 대응

 - 리더가 속한 브로커 장애시 다른 팔로워가 리더가 됨

 

 

 

참고 

- kafka 조금 아는 척하기 1 (개발자용) (https://www.youtube.com/watch?v=0Ssx7jJJADI)

728x90
반응형

'Kafka' 카테고리의 다른 글

Kafka 기초3 - 컨슈머  (0) 2021.07.24
Kafka 기초2 - 프로듀서  (0) 2021.07.22

+ Recent posts