Programming/Kafka

[kafka] 카프카 특징

bisi 2020. 4. 10. 22:12

 

1. 카프카 특징 

# 대표적인 특징 

  • 프로듀서와 컨슈머의 분리
  • 멀티 프로듀서, 멀티 컨슈머
  • 디스크에 메시지 저장
  • 확장성
  • 높은 성능

 

 

1. 프로듀서와 컨슈머의 분리

  • 카프카는 메시징 전송방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 펍/섭 방식 적용.

  • 이런 느슨한 결합을 통해 어느 한쪽 시스템에서 문제가 발생하더라도 서로 의존성이 없으므로 연쇄작용이 발생할 확률은 매우 낮음

  • 장점 : 컨슈머의 서버가 하나더 추가 되더라도 카프카로만 보내면 되기 때문에 서버 추가에 대한 부담도 줄일 수 있음

 

 

 

2. 멀티 프로듀서, 멀티 컨슈머

  • 카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어 있음.

  • 하나의 프로듀서가 하나의 토픽에만 메시지를 보내는 것이 아니라, 하나 또는 하나이상의 토픽으로 메시지를 보낼 수 있음.

  • 컨슈머는 역시 하나의 토픽에서만 메시지를 가져오는 것이 아니라, 하나 또는 하나 이상의 토픽으로부터 메시지를 가져올 수 있음.

  • 이러한 멀티기능은 데이터 분석 및 처리 프로세스에서 하나의 데이터를 다양한 용도로 사용하는 요구가 많아지기 시작했고, 이러한 요구 사항들을 중앙 집중형 구조로 구성하여 손쉽게 충족. 

 

3. 디스크에 메시지 저장

  • 카프카는 컨슈머가 메시지를 읽어가더라도 일정한 보관 주기 동안 파일형태로 보관(일반적인 메시징 시스템의 메시지는 메모리 큐에 적재하고, 컨슈머가 메시지를 읽어가면 큐에서 바로 메시지를 삭제)

  • 파일 시스템에 메시지를 저장하기 때문에 별다른 설정 없이도 데이터의 영속성(Persistence)가 보장된다는 것을 의미.

  • 트래픽이 일시적으로 폭주해 컨슈머의 처리가 늦어지더라도 카프카의 디스크에 안전하게 보관되어 있기 때문에, 컨슈머는 메시지의 손실 없이 메시지를 가져갈 수 있음.

  • 디스크가 순차적으로 저장되어 있으므로 디스크 I/O가 줄어들어 성능이 빨라짐

 

4. 확장성

  • 카프카는 확장이 매우 용이하도록(Scale-out) 설계

  • 하나의 카프카 클러스터는 3대의 브로커로 부터 시작해 수십대의 브로커로 확장 가능

  • 확장 작업은 카프카 서비스의 중단 없이 온라인 상태에서 작업이 가능

  • 최초 카프카 클러스터 구성시 적은 수로 시작하더라도 이후 트래픽 및 사용량 증가로 클러스터를 확장하는 작업은 매우 간단하고, 큰 부담이 없음

 

5. 높은 성능

  • 카프카는 고성능을 유지하기 위해 내부적으로 분산 처리, 배치 처리 등 다양한 기법을 사용

  • 클러스터 구조의 분산 시스템은 단일 시스템보다 성능이 좋음

  • 2015년 8월 기준으로 링크드인에서는 1조개의 메시지를 생산하고 카프카를 이용하 하루에 1페타바이트 이상의 데이터를 처리하고 있음.

 

 

 

 

참고사이트 

https://epicdevs.com/17

https://engkimbs.tistory.com/691

https://sugerent.tistory.com/586

 

참고 문헌 

카프카, 데이터 플랫폼의 최강자 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지

'Programming > Kafka' 카테고리의 다른 글

[kafka] 기본 용어 정리  (0) 2020.04.11
[kafka] 카프카의 동작 방식과 원리  (0) 2020.04.09
[kafka] 링크드인과 카프카 탄생배경  (0) 2020.04.08