본문 바로가기
Opensource/kafka

[Kafka 1편] Kafka 는 무엇인가?

by 무대포 개발자 2022. 4. 14.
728x90
반응형

목차

Kafka 개념

  • 카프카는 분산 스트리밍, 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 입니다.
  • 분산 처리 시스템이며, publish, subscribe message 플랫폼입니다.
  • producer 는 하나의 토픽이 데이터를 넣고, 토픽은 여러 개의 partition 으로 이루어집니다.
  • partition 은 consumer group 으로 매핑되며, consumer group 과 partition 이 늘어날수록 처리량이 늘어납니다.

카프카 사용 시 주의사항

중복 메시지

  • 다음과 같은 상황이 있을 수 있습니다.
  • partition 에서 consumer group 이 데이터를 가져가서 처리합니다.
  • consumer group 에서 정상적으로 메시지를 처리한 후, kafka 에게 처리 잘됐다고 응답을 줍니다.
  • 응답을 주는 순간 네트워크 장애가 발생해 kafka 는 이를 인지하지 못합니다.
  • 이를 해결하기 위해 consumer 에 중복 로직 방어 로직을 넣어서 처리합니다.
    1. 중복 메시지라면 Exception 을 낼 수 있습니다. 즉, 어플리케이션 에러를 만들어내서 중지를 시키는 것입니다.
    2. 중복 메시지라면 일단 response 를 200으로 던지지만 error message 에 중복이라고 응답할 수 있습니다. (어짾든 정상 처리됐으니 중지는 되지 않습니다.)
    3. 테이블에 message id (unique key) 를 넣어서 메시지가 들어올 때마다 저장한 후, 처리하게 함. 이렇게 하면 중복 메시지면 Exception 발생
  • 이건 카프카 뿐만이 아니라 Queue 기반 오픈소스에도 비슷하게 나올 수 있는 문제입니다.
    • ex) AWS SQS

순서 보장

  • topic 에는 여러 partition 이 있고, partition 내부에서는 순서 보장이 됩니다.
  • 즉, 순서 보장을 하고 싶다면 같은 partition 에 데이터를 넣어서 순서 보장 하면 됩니다.
  • 특정 partition 에만 데이터를 넣어놓고 하나의 스레드로 처리한다면 순서 보장이 가능합니다.

리밸런싱

  • consumer group 에서 consumer 가 빠지거나 추가될 때, 기존 버전에서는 kafka 가 멈춰버립니다.
  • 이를 해결하기 위해 kafka 의 특정 버전을 사용하여 방지할 수 있습니다.

댓글