1. Topic
- 카프카에서는 토픽을 여러개 생성 할 수 있습니다.
- 토픽은 이름을 가질 수 있는데, ‘click_log’, ‘send_sms’ 와 같이 어떤 데이터를 담는지 명시적으로 표현하면 여러모로 용이합니다.
2. 파티션
- 하나의 토픽은 여러개의 파티션으로 구성될 수 있습니다. (시작은 0번부터)
- 하나의 파티션은 큐와 같이 내부의 데이터가 파티션 끝에서부터 쌓이게 됩니다.
- 이 파티션에 Consumer가 붙게 되면 가장 오래된 데이터부터 가져가게 됩니다.
- 더 이상 데이터가 들어오지 않으면 데이터가 들어올 때까지 기다립니다.
- Consumer가 데이터(record)들을 가져가도 데이터는 삭제되지 않습니다.
- 남은 데이터는 새로운 Consumer를 기다립니다.
3. 파티션이 두 개 이상일 때
- 위와 같이 RR or Hash를 통해 배분을 하게 됩니다.
- 파티션을 늘리는 것은 조심해야합니다.
- 파티션은 늘릴 수는 있지만 줄일 수는 없습니다!
- 그렇다면… 파티션을 늘리는 이유
- 파티션을 늘리면 컨슈머 갯수를 늘려서 데이터 처리를 분산 시킬 수 있습니다.
- 파티션의 데이터는 언제 삭제 될까?
- 레코드가 저장되는 최대 시간과 크기를 지정 할 수 있습니다
- log.retention.ms: 최대 record 보존 시간
- log.retention.byte: 최대 record 보존 크기 (byte)