Skip to content
- 카프카 클러스터가 다수의 브로커로 구성될 수 있다.
- 클러스터 안에서
- 토픽, 파티션, 레플리카, 파티션 리더, ISR이 있다.
- Kafka 내부 오프셋 토픽
- 프로듀서는 소스 시스템에서 원하는 데이터를 받고 아파치 카프카로 전송한다.
- 라운드 로빈 개념이 있다.
- 데이터가 토픽 안의 모든 파티션을 걸쳐 분산된다는 의미다.
- 키 기준 정렬은 사용자가 키를 지정하면 동일한 키가 결국 동일한 파티션으로 간다는 것이다.
- ACKS 전략
- ACKS = 0, 1, ALL 이 있다.
- 카프카 클러스터를 쓸 때 원하는 확인을 할 때 사용한다.
- 컨슈머란?
- 컨슈머 오프셋 토픽에 오프셋을 어떻게 저장하는지에 대한 모드
- 카프카 클러스터를 주키퍼로 관리하는 방법
- 주키퍼는 리더와 팔로워 개념이 있고 브로커 관리, 메타데이터 관리가 있다.
- 커뮤니티가 주키퍼에서 KRaft 모드로 카프카 클러스만 사용하는 방향으로 전환하고 있다.
- 주키퍼에 대한 의존성을 완전히 버리고 Kfaka 독립 체계로 간다.
기타 내용
- 카프카 토픽은 원하는 만큼 파티션을 만들 수 있다.
- 오프셋은 다음 수준에서만 관련이 있다
- 토픽이 전송되면 데이터는 immutable 이며, 메시지를 수정할 수 없다.
- 브로커는 ID(숫자)로 식별한다.
- 모든 브로커에는 토픽과 파티션의 하위집합만 포함된다.
- 토픽에 복제 계수가 3인 경우 각 파티션은 3개의 서로 다른 브로커에 남는다.
- 복제를 3개에 각기 다르게 분배해야 브로커가 죽었을경우 데이터 손실없이 복구가 가능하다.
- 토픽의 복제 계수가 N일 때 토픽의 가용성에 영향을 주지 않고도 중지할 수 있는 브로커는 N-1이다.
- 각 파티션에는 1개만의 리더와 다수의 레플리카가 있을 수 있다
- 토픽에 데이터를 생성하기 위해 프로듀서가 카프카 클라이언트에 제공해야 하는 것은 클러스터의 브로커, 토픽 이름이다.
- 매우 중요
- 브로커 하나에만(어떤 브로커든) 연결하고, 쓰고 싶은 토픽 이름만 제공하면 됩니다. 카프카 클라이언트가 데이터를 적당한 브로커와 파티션으로 라우팅해 줍니다!
- 토픽에서 데이터를 읽기 위해 컨슈머가 필요한 구성은 연결할 브로커, 토픽 이름
- 매우 중요
- 브로커 하나에만(어떤 브로커든) 연결하고, 읽어 오고 싶은 토픽 이름만 제공하면 됩니다. 카프카가 호출을 적당한 브로커와 파티션으로 라우팅해 줍니다!
- 같은 group.id(컨슈머 그룹 id)을 보유한 두 컨슈머는 상호 배타적인 파티션에서 읽을 수 있다.
- 카프카 컨슈머 오프셋이 저장되는 곳은 주키퍼가 아닌 카프카이다.
- 카프카 0.9부터 토픽 __consumer_offsets에 저장되고 있습니다.
관련