728x90

https://zookeeper.apache.org/
Apache ZooKeeper
<!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or ag
zookeeper.apache.org
Zookeeper?
분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트

- 직접 어플리케이션 작업을 조율하는 것을 쉽게 개발할 수 있도록 도와준다.
- 일반적으로 N개의 주키퍼 서버의 집합인 Ensemble로 구성
- leader-follower 구조 : Leader가 Follwer에게 동기화를 위한 명령을 내린다.
- 일반적으로 Server로 Zookeeper, Client로 Kafka로 구성
분산 코디네이션 서비스?
분산 시스템에서 시스템 간의 정보 공유, 상태 체크, 서버들 간의 동기화를 위한 락 등을 처리해주는 서비스
→ 여러 서버 간의 동기화를 담당하여 클러스터 내의 서비스들이 안정적으로 동작할 수 있도록 지원
구성
- Request Processor : Write 요청 처리
- Zab (Zookeeper Atomic Broadcast Protocol)
- Request Processor에서 처리한 요청을 트랜잭션을 생성하여 모든 서버에게 전파한다.
- [Leader-Propose] -> [Follower-Accept] -> [Leader-Commit] 단계로 구성된다.
- In-memory DB : Znode의 정보가 저장되며, 로컬 파일시스템에 Replication을 구성할 수 있다.
Ensemble
- 일반적으로 N개의 주키퍼 서버의 집합
- 클러스터로 구성하여 고가용성을 확보
Quorum
- 주키퍼 앙상블을 이루고 있는 모든 서버 중 과반수 서버로 이루어진 그룹
- 주키퍼 서버는 홀수로 구성하는 것을 권고
- 어떤 서버에 문제가 생겼을 경우 과반수 이상의 데이터를 기준으로 일관성을 맞추므로 살아있는 노드가 과반수 이상이라면 지속적인 서비스를 제공
Zookeeper와 Kafka
카프카가 빨라질 수 있는 이유 = 하는 일이 간단해져서
이를 가능하게 한 것이 주키퍼!!
즉, 카프카는 단순히 주키퍼가 시키는 일을 하면 된다. 그에 대한 검증 또한 주키퍼가 한다.
728x90
'OpenSource > Kafka' 카테고리의 다른 글
[Kafka] 카프카 기본 용어 정리 (0) | 2024.05.08 |
---|