Kafka Zookeeper

김석·2023년 5월 17일
0

Kafka

목록 보기
5/11

1. Coordination System

분산 처리 시스템에서 분산된 시스템들 간의 정보를 어떻게 공유할 것인가? 클러스터 시스템에서 하위 노드를 관리하기 위해서는

  • 각 하위 노드들의 Healthcheck
  • Lock Processing

이 필요하다.

이러한 문제를 해결하는 시스템이 coordination system이고, 대표적인 오픈 소스 솔루션에 Zookeeper가 있다.

coordination system은 분산 시스템 내에서 중요한 상태 정보나 설정 정보를 유지하기 때문에, coordination system의 장애는 전체 시스템의 장애로 이어진다. 따라서 이중화 등을 이용한 고가용성을 제공해야 한다.

Coordination Service System: 분산 시스템 내에서 중요한 상태 정보나 설정 정보들을 유지, 클러스터에 있는 서버들의 상태를 체크, 분산된 서버들 간의 동기를 위한 lock 처리 등을 관리하는 시스템.


2. Zookeeper

분산 시스템을 coordinate하는 시스템은,

  • Data Access 속도가 빨라야 하고,
  • 자체적인 장애 대응 솔루션이 필요하다.

Zookeeper는 자체적으로 클러스터링 기능을 지원한다.

Zookeeper는 안정성을 확보하기 위해 다수의 Server를 사용하는 서버 클러스터 구조를 사용한다. 서버 클러스터는 1개의 Leader와 N개의 Follower로 구성되어 있고, 이를 Zookeeper Ensemble이라고 한다.

Client(Kafka)가 zookeeper 서버들로 이루어진 ensemble에 접근하여 데이터를 읽거나 데이터를 업데이트한다. 즉, Kafka의 broker를 관리하고 조정하는데 zookeeper가 사용된다.

Kafka도 분산 처리 플랫폼이지만, 메시지를 주고 받는 pub/sub 외에 아무것도 하지 않는다. 브로커의 상태를 저장하지 않기 때문에, 상태 관리를 위한 zookeeper를 사용한다.

producer와 consumer는 kafka의 broker 정보를 가지고 있다. 동적으로 broker의 상태가 변경(scale out)되는 경우 zookeeper가 producer와 consumer에게 알려준다.


출처

https://blog.neonkid.xyz/302

profile
handsome

0개의 댓글