얼렁뚱땅 스며드는 Data Science

Data Engineering/Kafka

[Kafka] Apache Kafka 초보 1 : 토픽, 파티션, 오프셋

Jesip14 2024. 7. 2. 09:03

이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다.

 

토픽

  • db로 치면 테이블과 비슷한 개념으로, 파티션을 구성할 수 있다.
  • 모든 종류의 message format 가능 (avro, json, txt ..)
  • message의 순서는 'data stream'으로 부름
  • topic을 query할 수 없지만, consumer로 데이터를 보내 읽을 수 있게 할 수 있음
  • 데이터가 한번 쓰이면 수정 불가 (immutable)
  • 데이터는 한정된 시간만큼 보관된다 (디폴트는 일주일)

 

파티션

  • 토픽 내에 여러개의 파티션을 만들 수 있다
  • 파티션 내 메세지 순서는 파티션 내부에서만 한정적으로 보장된다 (파티션 간에는 순서 보장 x)
  • topic은 immutable : partition에 데이터가 쓰이면 수정 불가
  • 데이터가 토픽으로 들어오면 해당 메세지의 파티션은 임의로 할당된다 (키를 설정하지 않으면)
  • 파티션 개수는 원하는 만큼 만들 수 있지만, 적절한 수의 파티션 개수를 갖는것이 좋음

 

오프셋

  • 파티션에 메세지가 순차적으로 들어와 id를 순차적으로 갖게되는데, 이를 오프셋이라 부름
  • 파티션내에 위치를 가리키는 의미로만 사용 (ex. 각 파티션의 오프셋 1은 같은 데이터를 가지고 있지 않음)
  • 앞선 오프셋이 사라지더라도 해당 오프셋을 재사용할 수 없음