Kafka 완전 기본 개념을 알아보자

Karim·2021년 10월 26일
12

kafka 운영

목록 보기
1/9
post-thumbnail

1. Kafka

💬 이벤트 스트리밍

  • 시스템 사이에서 대용량 메세지를 지속적으로 넣어지고 빼지기를 하기 위한 메세징 큐 종류
  • 실시간 비동기 처리 시스템
  • 확장성이 좋은 분산 스트리밍

2. Kafka 용이점

💬

  • 높은 처리량을 실시간으로 처리하는 경우
  • 메세지를 받는 시스템이 받지 못하는 상황이 있을 수 있어도 메세징 큐에 메세지가 유실되지 않고 간직하고 있다. (파일 시스템에 저장)
  • 여러 시스템이랑 연동이 좋다.
  • 여러 시스템이 한 주제에 쓰고 여러 시스템이 가져갈 수 있다.

3. Kafka 용어 정리

💬 zookeeper

  • zookeeper는 kafka와 직접 통신하면서 kafka의 상태관리 및 메타 데이터를 관리한다.
  • zookeeper에 저장되는 데이터는 메모리에 저장되어 처리량이 크고 속도도 빠르다.

💬 broker

  • producer와 consumer 사이에 메세지를 중계하는 데몬 프로세스

💬 producer

  • 메세지를 topic에 제공하는 시스템

💬 consumer

  • 해당 topic에서 메세지를 구독하는 시스템

💬 consumer group

  • consumer가 여러 개 있을 시 consumern group을 지정한다.
  • 메세지를 가지고 있는 각 파티션에 대해 offset 값을 할당 받는다.
  • group id 이름이 같을 시 같은 그룹이며, topic에 대하여 오프셋을 공유하며 해당 파티션에 대해 메세지를 어디까지 읽었는지 의미한다.
    • gorup id 이름이 같은 3개의 consumer 일 경우
      offset을 공유하기 때문에 3개의 consumer들이 메세지를 하나씩 돌아가면서 받는다. (분배)

      만약 1개의 consumer가 장애가 발생하여 메세지를 받지 못하는 경우가 생기면 나머지 consumer가 장애난 counsumer의 메세지를 읽을 수 있도록 리밸런싱이 된다.

    • gorup id 이름이 다른 3개의 consumer 일 경우
      offset을 공유하지 않기 때문에 3개의 consumer들이 다 똑같은 메세지를 받는다.

💬 topic

  • Kafka로 받은 메세지들을 종류별로 관리하는 단위

💬 partition

  • 토픽에 대한 대량의 메세지를 입출력 지원하기 구성하는 데이터 저장소
  • 토픽을 구성하는 데이터의 저장소로 수평 확장이 가능하다.
  • kafka에서는 브로커 당 약 2천 개 정도의 최대 파티션 수를 권장
  • 파티션은 제약없이 늘릴 수 있지만 줄일 수는 없다.

    파티션을 삭제하면 그 안에 있던 데이터가 삭제되기 때문에이다. (Kafka 지속성 특징에 위배)

💬 offset

  • consumer group마다 topic partition에 대해 offst을 관리한다.
  • 파티션 내에서 메세지의 위치를 표시하는 값
  • consumer는 offset의 값으로 자기가 어디까지의 메세지를 읽었는지 관리한다.

📚 참고

https://kafka.apache.org/documentation/

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글