ㅅㅇ
[Kafka] Kafka & Zookeeper 본문
Kafka란?
- Apache KafKa(아파치 카프카)는 대용량의 이벤트 데이터를 처리하기 위해 링크드인(LinkedIn)에서 개발한 분산 스트리밍 플랫폼이다. 발행-구독 메시지를 분산 커밋 로그로 재해석한 시스템.
- 대용량의 실시간 로그처리에 특화되어 있는 솔루션으로 데이터를 유실없이 안전하게 전달하는 것이 주목적인 메세지 시스템에서 Fault-Tolerant한 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리해준다.
- 다수의 기업이 대용량 데이터의 저장 및 처리를 위한 전송 계층으로 Kafka를 사용합니다. 소개된 수많은 개발 프로젝트에서 Kafka는 데이터 스테이징과 관련하여 중요한 역할을 수행해왔습니다.
Kafka의 특징
- 카프카는 파티션이란 개념을 도입하여 여러 개의 파티션을 서버들에 분산시켜 나누어 처리할 수 있다. Producer가 메시지를 어떤 파티션으로 전송할지는 사용자가 구현한 분배 알고리즘에 따른다.
- 각 파티션에 균등하게 저장하거나, 메시지의 키를 활용하여 특정 문자로 시작하는 메시지는 특정 파티션에 할당할 수 있다. => 파티션을 나누었을 때, 메시지의 순서는 보장해주지 않는다. 한번 늘린 파티션은 절대로 줄일 수 없다.
- 카프카는 클러스터로 동작하여 고가용성 서비스를 제공할 수 있고, 서버를 수평적으로 늘려 안정성 및 성능을 향상 시킬 수 있다.
- 각 파티션을 복제하여 클러스터에 분산 시킬 수 있다.
- 각 파티션은 Leader 와 Follower로 구분 존재하며, Leader에서만 읽기(read)와 쓰기(write)가 일어난다.
구조 및 각 역할
- 프로듀서 : 카프카로 메시지를 보내는 역할
- 카프카 : 프로듀서가 보낸 메시지를 저장하는 역할
- 컨슈머 : 카프카에 저장되어 있는 메시지를 가져오는 역할
- 주키퍼 : 카프카가 분산 코디네이터인 주키퍼와 연결하여 메타 데이터 및 클러스터 노드 관리
- Kafka는 [Apache ZooKeeper](https://zookeeper.apache.org/)
에 의존성을 가지므로, Kafka를 실행하려면 ZooKeeper cluster에 대한 액세스가 필요하다.
- Kafka는 [Apache ZooKeeper](https://zookeeper.apache.org/)
Zookeeper란?
- 주키퍼 는 분산 애플리케이션을 위한 코디네이션 시스템이다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산 되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공한다.
- 분산 애플리케이션 관리를 위해서는 안정적인 코디네이션 애플리케이션이 추가로 필요하다. 카포카을 사용하기 위해서 주키퍼(Zookeeper)가 필수적으로 요구된다.
Zookeeper의 특징
- 서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 애플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고 받는다.
- 상태 정보들은 주키퍼의 지노드(znode)라고 불리는 공간에 Key-Value 형태로 저장하며, 지노드에 저장된 것을 이용하여 분산 애플리케이션들은 서로 데이터를 주고받게 된다. 지노드(znode)는 우리가 알고 있는 일반적인 디렉토리와 비슷한 형태로서 자식노드를 가지고 있는 계층형 구조로 구성되어 있다.
- 각 지노드는 데이터 변경 등에 대한 유효성 검사 등을 위해 버전 번호를 관리(데이터가 변동될 때마다 지노드의 버전 번호가 증가)
- 주키퍼에 저장되는 데이터는 모두 메모리에 저장되어 처리량이 매우 크고 속도 또한 빠르다.
- 주키퍼는 좀 더 신뢰성 있는 서비스를 위해 앙상블(클러스터)이라는 호스트 세트를 구성할 수 있다. 앙상블로 구성되어 있는 주키퍼는 과반수 방식에 따라 살아 있는 노드 수가 과반 수 이상 유지된다면, 지속적인 서비스가 가능하다.
[위키백과, https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%ED%94%84%EC%B9%B4]
https://velog.io/@iniestar/Kafka-for-Spring-Boot
'SW_STUDY > Kafka' 카테고리의 다른 글
[Kafka] 설치 및 테스트 (0) | 2023.03.08 |
---|---|
[Kafka] MQ (Message queue) (0) | 2023.03.08 |