Untitled

아파치 카프카는 주키퍼와 카프카 클러스터로 구성된다.

브로커

브로커는 토픽과 파티션을 유지 및 관리해주는 SW로 파티션에 대한 Read 및 Write를 관리한다.

카프카 서버라고도 불리며 토픽 내의 파티션을 분산, 유지 및 관리하며 각각의 브로커는 ID로 식별된다

카프카 클러스터는 최소 3대 이상의 브로커를 하나의 클러스터로 구성해야하며, 4대 이상을 권장한다.

참고)토픽의 데이터는 일부 파티션을 분산하여 갖고있기 때문에 토픽 데이터 전체를 담고있지 않음. 클라이언트는 특정 브로커에만 연결하면 전체 클러스터에 연결된다.

카프카 클라이언트가 데이터를 가져오는 원리

Untitled

클라이언트는 하나의 브로커에만 연결하면 카프카 클러스터 전체에 연결된다. 각각의 브로커는 모든 브로커, 토픽, 파티션에 대해 메타데이터를 갖고있으며 안정성을 위해서 카프카클러스터는 3대이상의 브로커로 구성해야한다. Broker가 하나가 죽더라도 클라이언트는 다른 브로커를 통해 데이터를 Sub할 수 있도록!

→ 전체 Broker List를 파라미터로 입력하는 것을 권장한다.

Zookeeper

브로커들의 목록, 설정을 관리해주는 SW

Untitled

위같은 구성을 주키퍼앙상블이라 한다.

위같은 구성을 주키퍼앙상블이라 한다.

주키퍼는 카프카의 분산되어있는 설정 정보를 가지고 있다. 이를 통해 분산 동기화 서비스를 제공하고, 대용량 분산 시스템을 위한 네이밍 정보를 가지고있다. (Naming Registry)

→ 주키퍼는 트리 형태의 데이터 저장소이며, Leader가 메타데이터를 갖고 나머지 Follower에게 카프카 브로커들간의 정보를 공유하고 동기화 하는 작업을 수행하게 된다.

→ 주키퍼는 쿼럼 알고리즘(정족수)을 기반으로 이루어져있다. 이를 통해 분산 코디네이션 환경에서 장애가 발생하더라도 분산 시스템의 일관성을 유지시킬 수 있다.