Topic
- 전송되는 메시지가 저장되는 부분
- 논리적인 구분
Producer
- 메시지를 만들어서 Topic으로 전송
Consumer
- Topic에서 메시지를 가져와서 소비
Consumer Group
- Topic에서 메시지를 사용하기 위해 협력하는 Consumer 집단
- 하나의 Consumer는 Consumer group에 포함되어 Consumer끼리 협력하여 메시지를 분산 병렬 처리
Producer와 Consumer는 서로 알지 못한다
Producer와 Consumer는 각각의 속도로 Commit log에서 write (pro) / read (con)를 수행
Consumer group이 다른 각각의 Consumer들은 서로 연관이 없으며, Commit Log의 다른 부분의 메시지를 읽을 수도 있음
Commit Log
- 추가만 가능하고 변경이 불가능한 구조
Offset
- Commit Log에서의 이벤트의 위치
- Log End Offset → Producer가 생성하는 맨 끝 Offset
- Current Offset → Consumer가 메시지를 가져가고 Commit한 부분
- Offset 값은 계속 증가하며 0으로 돌아가지 않음
Partition
- 하나의 Topic은 하나 이상의 Partition으로 구성
- 병렬처리를 위해 다수의 Partition 사용
- Partition의 개수는 변경이 가능하나 운영시에는 권장하지 않음
- Partition 번호는 0부터 오름차순
- Topic내 Partition들은 서로 독립적
- 저장된 데이터는 변경불가
Segment
- 데이터가 실제로 저장되는 물리 파일
- 지정된 크기보다 커지거나 지정된 기간보다 오래되면 새 파일이 생성되고 메시지는 새 파일에 저장됨
Topic은 생성시 Partition의 개수를 지정해야한다
생성된 Partition은 Broker들로 분산되고 Segment 파일로 구성됨
분산되는 방식은 Kafka에서 최적화하여 분산한다
Segment를 분리하는 방식은 Rolling Strategy
- log.segment.bytes 용량으로 Segment 분산
- log.roll.hours 기간으로 Segment 분산
Partition당 단 하나의 Segment가 활성화됨
출처 - 패스트캠퍼스 Kafka 완전 정복
'IT > 개발' 카테고리의 다른 글
| 4) Producer (0) | 2023.09.05 |
|---|---|
| 3) Broker, Zookeeper (0) | 2023.08.28 |
| 1) Apache kafka 란? (0) | 2023.08.28 |
| 스프링 MVC 프레임워크 흐름 (0) | 2022.08.21 |
| 서블릿(java Servlet)이란? (0) | 2022.08.21 |