✔️ 대규모 트래픽 처리를 위한 분산 서비스 도구들은 대부분 클러스터 구성과 데이터 복제를 통해 장애 상황을 대비
카프카 클러스터의 구조
3개의 브로커에 replication factor를 3으로 설정한 카프카 클러스터의 내부
각각의 브로커에는 이름이 topic-example1인 토픽이 동일하게 생성되어 있음
토픽 : 하나의 주제, 즉 데이터 또는 메시지 종류를 구분하기 위한 Kafka의 기본 단위 ex) 주문팀에서 order-completion이라는 이름의 토픽을 생성한 뒤, 새로운 주문이 완료될 때마다 주문 정보를 이 토픽에 지속적으로 발행할 수 있음
파티션의 replication factor는 최소 3으로 설정하는 것이 좋음 (기본값은 1 → 원본 이외에 복제를 저장하지 않겠다는 의미)
파티션 : 카프카가 실제 메시지를 저장하는 단위
Leader 파티션에 장애가 발생하면 follower 파티션 중 하나를 즉시 leader로 선정
Producer가 토픽을 지정하여 메시지를 발행하면 브로커는 해당 토픽의 하위 저장소인 파티션에 메시지를 저장 (파일시스템의 폴더와 같은 구조)
config/server.properties 안의 log.dirs에서 실제 저장되는 위치를 확인할 수 있다
해당 위치에 저장된 로그들
<aside> ✅ 토픽 이름 짓기
Kafka는 leader 파티션에서만 읽기/쓰기가 이루어지므로, 하나의 파티션으로만 이루어져 있다면 브로커가 많아도 처리량이 제한적
각 토픽을 여러 파티션으로 분할하고, 각 브로커에 파티션을 고르게 분산 → 훨씬 많은 메시지를 동시에 처리할 수 있음