Topic
- Topic은 카프카 클러스터 내의 특정한 데이터 스트림을 의미한다.
- 하나의 Kafka cluster가 다수의 토픽을 가질 수 있다.
- ex)로그 토픽, 구매 토픽, 댓글 토픽
- 비유하자면 DB의 테이블이라고 할 수 있다.
- 테이블과 다르게 constraint은 존재하지 않는다. 카프카 토픽으로 무엇을 보내더라도 데이터에 대한 검증은 이루어지지 않는다.
- 클러스터 내의 토픽 간의 구분은 name을 통해 이루어진다.
- 다양한 메시지 포맷을 지원한다.
Partition
- 토픽은 파티션으로 나뉜다.
- ex) 특정한 토픽이 [파티션 0, 파티션 1, 파티션 2] 3개의 파티션을 가질 수 있다.
- 토픽으로 보내진 메시지는 이러한 파티션들에게로 순차적으로 전달된다.
- 한 번 파티션에 저장된 메시지는 immutable하다. 즉 해당 데이터를 삭제하거나 수정할 수 없다.
- 데이터는 제한된 기간 동안만 저장된다. (기본 설정은 1주일)
- 각 파티션에 보내진 메시지들은 0부터 순차적으로 증가하는 id 값을 가진다. (offset)
- 각 파티션은 서로 다른 오프셋을 가진다. (파티션 0의 오프셋 1과 파티션 1의 오프셋 1은 서로 다른 데이터를 가진다) 따라서 메시지 간의 순서는 각 파티션을 기준으로만 보장된다.
- 한 번 증가한 오프셋 번호는 메시지가 지워지더라도 재사용 되지 않는다.
- key를 설정하지 않는다면 데이터는 랜덤한 파티션에 저장되게 된다.
- 원하는 개수만큼의 파티션을 설정할 수 있다. (어떤 기준으로 하면 될지는 추후 학습)
ex) 토픽 사용 예시
몇 대의 트럭이 자신의 gps 위치 정보에 대한 메시지를 20초마다 카프카로 전송한다.
해당 데이터를 위치 대시보드를 보여주는 서비스, 고객에게 배송이 임박했다는 알림을 주는 서비스 등 여러 실시간 서비스에 동시에 사용할 수 있을 것이다.
참고)
'Kafka' 카테고리의 다른 글
[Kafka] 'Topic Replication'에 대해 알아보자 (0) | 2024.03.11 |
---|---|
[Kafka] 'Broker'에 대해 알아보자 (0) | 2024.03.06 |
[Kafka] 'Consumer'에 대해 알아보자 (0) | 2024.03.04 |
[Kafka] 'Producer과 Message key'에 대해 알아보자 (0) | 2024.03.02 |