Gidhub BE Developer

Kafka의 특징

2019-11-22
goodGid

이 글의 코드 및 정보들은 을 바탕으로 작성하였습니다.

Kafka의 특징

프로듀서와 컨슈머의 분리

  • Kafka는 Pub/Sub 모델이다.

  • 만약 Pub/Sub 모델이 아닌 경우 발생할 수 있는 문제 상황을 알아보자.

  • 위 그림에서 웹 서버군 1대가 추가된다면?

  • 엄청난 복잡성을 띄게 된다.


  • 그렇다면 여기서 Pub/Sub 방식인 Kafka를 중앙에 놓는다면?

  • 구조가 매우 단순해졌다.

  • 각 서비스 서버들은 Kafka로 메시지를 보내는 역할을 하게 되고

  • 모니터링 혹은 분석 시스템들도

  • 서비스 서버들의 상태 유무와 관계없이

  • Kafka에 저장되어 있는 메시지만 가져오면 된다.


  • 각자의 역할이 확실하게 분리되면서

  • 어느 한쪽 시스템에 문제가 발생해도

  • 연쇄 작용이 발생할 확률은 낮아진다.


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

  • Kafka는

  • 하나의 토픽에

  • 멀티 프로듀서 / 컨슈머 접근이 가능한 구조다.

  • 즉 1개의 프로듀서는

  • 하나의 토픽에만 메시지 전송을 하는게 아닌

  • 여러개의 토픽에 메시지 전송이 가능하다.


디스크에 메시지 저장

  • Kafka가 기존의 메시징 시스템과 가장 다른 특징 중 하나는

  • 디스크에 메시지를 저장하고 유지한다는 점이다.


일반적인 메시징 시스템

  • 컨슈머가 메시지를 읽어가면

  • 큐에서 바로 메시지를 삭제한다.

Kafka

  • 컨슈머가 메시지를 읽어가도

  • 보관 주기 동안 디스크에 메시지를 저장한다.


  • 트래픽이 일시적으로 폭주하여

  • 컨슈머의 처리가 늦어지더라도

  • Kafka의 디스크에 메시지가 저장되어 있기 때문에

  • 컨슈머는 메시지 손실 없이 메시지를 가져갈 수 있다.


  • 또한 컨슈머에 버그가 있어 오류가 발생해도

  • 컨슈머를 잠시 중단하고

  • 버그 Fix 후 Kafka 디스크에 있는 메시지를 다시 가져가 재작업이 가능해진다.


높은 성능

  • 고성능을 유지하기 위해

  • Kafka는 내부적으로

  • 분산 처리, 배치 처리 등 다양한 기법을 사용한다.


Reference


Recommend

Index