기술나눔

Kafka 기본 구성 요소 다이어그램 추론

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 컨트롤러 브로커

여기에 이미지 설명을 삽입하세요.

Kafka 클러스터에는 메타데이터 관리 및 조정을 담당하는 컨트롤러 브로커가 있습니다.

Kafka는 Zookeeper를 클러스터 메타데이터의 저장 및 관리 도구로 사용합니다. Zookeeper는 모든 주제, 파티션, 리더 및 복제본 정보 등을 포함한 클러스터의 상태 정보를 저장합니다.

클러스터 상태가 변경되면 Controller Broker는 변경 정보를 Zookeeper에 기록합니다.

현재 컨트롤러 브로커가 실패하면 Kafka 클러스터의 다른 브로커가 이 상황을 감지하고 Zookeeper를 통해 선택을 수행합니다.

브로커가 새 컨트롤러 브로커로 성공적으로 선출되면 Zookeeper에서 최신 클러스터 메타데이터를 읽습니다.

보증 메커니즘

  • 영구 메타데이터: Zookeeper는 클러스터의 메타데이터를 지속적으로 저장하여 언제든지 최신 상태 정보를 얻을 수 있도록 합니다.
  • 하트비트 메커니즘: Broker와 Zookeeper 간의 연결은 Heartbeat 메커니즘을 통해 유지되어 Controller Broker 오류를 신속하게 감지합니다.
  • 선거 메커니즘: Zookeeper의 선출 메커니즘을 통해 새로운 Controller Broker를 신속하게 선출하고 Zookeeper에서 메타데이터를 동기화할 수 있습니다.

2. 구성 요소 아키텍처

여기에 이미지 설명을 삽입하세요.

1. 로그 관리자

LogManagerKafka 로그(log)의 저장 및 검색 관리를 주로 담당합니다.

예를 들어 생산자는 Partition0의 Leader Broker1에게 메시지를 보냅니다.LogManagerBroker1의 Partition0 로그 파일에 메시지를 씁니다.

2. 복제 관리자

ReplicationManager주로 파티션 데이터의 복제 및 동기화 관리를 담당합니다.

각 파티션의 Leader와 Follower 간의 동기화는 독립적으로 수행됩니다. 즉, 각 파티션에는 자체 동기화 프로세스가 있으며 다른 파티션에 종속되지 않습니다.

각 파티션의 동기화 프로세스는 독립적이지만 각 브로커는 관리하는 각 파티션(리더 또는 팔로어)에 대해 해당 복제 스레드를 시작하며 이러한 스레드는 특정 동기화 작업을 처리합니다.

예를 들어:ReplicationManagerBroker1에 새로 작성된 메시지를 Partition0의 Follower Broker2 및 Broker3에 푸시합니다.ReplicationManagerBroker1에서 수신된 복제 요청은 Broker2 및 Broker3에서 처리되어 해당 로그 파일에 메시지를 기록합니다.

3. 소켓서버

SocketServer Kafka Broker의 구성 요소이며 네트워크 연결 및 I/O 작업 처리를 담당합니다. 클라이언트 및 다른 브로커의 연결 요청을 수락하고 처리를 위해 각 연결에 스레드를 할당하는 일을 담당합니다.

4. 네트워크 서버

NetworkServer Kafka 네트워크 통신 프레임워크의 핵심 부분이며 네트워크 요청을 관리하고 예약하는 역할을 담당합니다. NIO(비차단 I/O)를 사용하여 동시 네트워크 연결을 처리합니다.

5. ZK클라이언트

Zookeeper와 통신하는 구성요소입니다.