Kafka Topic
Topic
- 데이터베이스가 데이터를 table로 조직화하는 것과 유사하게 카프카는 메세지와 관련된 topic이라는 개념을 사용한다.
- Topic은 이름으로 구별 된다.
- Kafka Topic은 어떤 포맷의 메세지도 포함할 수 있고, 이 연속적인 메세지들을 data stream이라고 부른다.
데이터베이스와 다르게 카프카 토픽은 쿼리로 데이터를 불러올 수 없다. 카프카 프로듀서는 메세지를 전송하고 컨슈머가 순서대로 데이터를 읽는다.
- 기본적으로 일주일이 지나면 카프카 토픽 안의 데이터는 삭제 된다. (설정은 변경할 수 있다.)
Partition
- 토픽은 여러 개의 파티션으로 나눠져 있다. (한 토픽에서 보통 100개 정도의 파티션을 쓴다.)
- 파티션의 개수는 토픽이 생성될 때 결정된다.
- 카프카의 각 메세지에는 오프셋(offset)이 부여되는데 한 파티션 내의 각 메세지 오프셋은 unique하다.
카프카 토픽은 변경할 수 없다., 한 번 파티션에 기록 되면 바꿀 수 없다.
Offset
- 오프셋은 카프카 파티션 안의 메세지의 position을 나타낸다.
- 특정 파티션 내의 오프셋은 0부터 시작하여 점점 증가한다.
- 즉 파티션 내의 오프셋은 자기 파티션 내에서만 의미를 가진다.
- 파티션0의 오프셋 3은 파티션 1의 오프셋 3과 다른 데이터다.
토픽이 한 개 이상의 파티션을 가지고 있다면 한 파티션 내에서의 순서는 보장한다. 하지만 여러 파티션 간의 순서를 보장해 주지는 않는다.
https://www.conduktor.io/kafka/kafka-topics