[infra] kafka의 partition 및 replication 동작

orca·2024년 10월 12일

CS

목록 보기
33/46

kafka 의 각 파티션은 리더 브로커와 팔로워 브로커를 갖습니다. 리더 브로커는 읽기쓰기 요청을 처리하고, 팔로워 브로커는 데이터를 복제해둡니다. Kafka는 각 파티션을 여러 브로커에 분산시켜 클러스터의 자원을 효율적으로 사용하며, 이를 통해 병렬 처리가 효과적으로 이루어지도록 합니다.

partition

  • 토픽 하나를 여러개로 나눠 병렬 처리가 가능하게 만든 것
  • 각 파티션은 리더 브로커와 팔로워 브로커를 가짐

broker

  • kafka 애플리케이션이 설치된 노드
  • kafka 클러스터에 속함
  • Kafka는 각 파티션을 처리하는 리더 브로커를 할당함
    ➡️ 여러 파티션이 있을 때, 브로커마다 리더가 다르게 배치되어 다양한 브로커가 서로 다른 파티션의 리더로 역할을 나눠서 맡게됨
    ➡️ Kafka는 파티션을 여러 브로커에 분산시킴으로써, 전체 클러스터의 부하를 분산시키고, 한 브로커에 지나치게 많은 부하가 몰리는 것을 방지함
  • 리더 브로커
    • 모든 읽기 및 쓰기 요청을 처리함
    • 컨슈머는 데이터를 리더 브로커를 통해 읽고, 프로듀서는 데이터를 리더 브로커에 쓰게됨
  • 팔로워 브로커
    • 리더 브로커의 데이터를 복제
    • 리더가 장애가 발생할 경우 자동으로 리더로 승격됨

cluster

  • 여러 kafka broker 의 집합
  • kafka 는 일반적으로 다수의 브로커로 구성된 클러스터에서 실행됨

replication

  • 파티션을 여러개로 복제 해, 클러스터 내 브로커들에 분산시키는 동작
  • --replication-factor n
    • '카프카 클러스터 내 n 개의 리플리케이션을 유지하겠다' 라는 의미
    • replication의 수는 Kafka 클러스터 내의 브로커 수를 초과할 수 없음
  • replication 수가 커지면, 안정성은 높아지지만 브로커 리소스를 많이 사용하게 됨
    • 테스트나 개발 환경 : 1으로 설정
    • 운영 환경(약간의 유실 허용) : 2으로 설정
    • 운영 환경(유실 허용하지 않음) : 3으로 설정
  • replica는 단순히 파티션의 데이터를 복사한 복제본일 뿐, 파티션과는 다른 개념
    • 리더-팔로워 구조로 리더가 데이터를 처리하고 팔로워는 복사본을 유지함
    • 컨슈머는 오직 리더 파티션에서만 데이터를 읽어옴

example

  1. 파티션이 4개가 있고, Replication factor 가 3 인 케이스

    • 파티션 4개는 그대로 유지됨
    • 각 파티션의 데이터는 3개의 복제본으로 분산되어 저장됨. 즉 4개의 파티션은 각기 3개의 복제본을 가짐
    • 리더는 파티션당 한 개만 존재하며, 나머지는 팔로워
  2. consumer 동작

    • 컨슈머는 파티션 단위로 병럴 처리를 하므로, 4개의 파티션에 각기 다른 컨슈머가 연결될 수 있음
    • replication 은 컨슈머와 직접적인 상관이 없고, 컨슈머는 오직 리더에게서만 데이터를 읽음

    ➡️ 파티션 수는 데이터를 병렬로 처리하기 위한 것이고, 복제본은 데이터 안정성을 높이기 위해 여러 브로커에 데이터를 복사해 저장하는 것
    ➡️ 복제본이 많아져도 물리적인 파티션 개수는 늘어나지 않음

참고

Hands-Free Kafka Replication: A Lesson in Operational Simplicity

0개의 댓글