/*
-- Title : [kfk] 카프카 아키텍처(Architecture) 및 용어(Terminologies)
-- Tag : apache kafka terminology apache kafka architecture terminologies 아파치 카프카 아키텍처 아파치 카푸카
*/
■ 카프카 아키텍처 다이어그램(Kafka Architecutre Diagram)
■ Kafka Record (카프카 레코드)
Producer와 Consumer가 Kafka를 통해 데이터를 적재하고 소비하는 단위로 Event(이벤트)나 Message(메시지)라고도 불리고 있다.
■ Kafka Broker (카프카 브로커)
Kafka Broker는 Kafka 시스템, 또는 Kafka 노드를 의미하고 일반적으로 프로듀서와 컨슈머 사이의 레코드를 중계하는 Kafka 서버이다. 하나의 DB서버 Instance와 유사한 개념으로 생각할 수 있다.
■ Kafka Cluster (카프카 클러스터)
여러대의 Kafka 서버 노드로 구성된 Kafka Broker 그룹을 의미한다. Kafka Cluster는 여러대의 Kafka Broker와 Zookeeper로 구성되는데 Zookeeper는 Kafka의 상태 관리 및 메타 정보 저장, Producer나 Consumer와의 통신을 담당한다.
ㅁ Zookeeper
• 분산 시스템의 메타 정보를 관리하고 필요시 분산 시스템의 마스터를 선출하거나 권한 등을 관리
■ Kafka Topic (카프카 주제)
주제별로 발생되는 레코드를 저장하는 공간으로 Producer가 발생한 실제 레코드 데이터가 저장되고 Consumer에 의해 레코드 데이터가 읽혀지게 된다. DB에서 Table과 유사한 Object나 메시지를 저장하는 Queue로 생각할 수 있다.
■ Kafka Partition (카프카 파티션)
실제 레코드 데이터가 Kafka Topic내에 저장되는 공간으로 단일 주제는 파티션이라는 여러 대기열로 구성되고 분산처리를 위해 여러 Kafka Broker에 복제된다. DB에서 Tablespace나 Filegroup과 유사한 Object로 생각할 수 있다.
■ Leader/Follower (리더/팔로워)
여러 Kafka Broker에 복제된 Topic내 Partition에서 하나의 Leader가 선출되면 Producer가 데이터를 Leader에 적재를 하고 모든 읽기, 쓰기를 담당하게 된다.Follower는 Leader에 적재된 데이터를 복재하는 역할을 한다.
■ Producer (프로듀서, 생산자)
Kafka Topic에 레코드 스트림을 게시하는 프로세스로 Producer는 레코드를 Kafka Topic으로 보내는 클라이언트 코드(연결 풀링, 네트워크 버퍼링 등)를 구성한다.
■ Messages/Records (메시지, 레코드)
Kafka Topic에 저장되는 데이터를 의미하는 용어로 키와 값 및 타입스탬프로 구성된 바이트 배열이다.
■ Consumer (컨슈머, 소비자)
Kafka Topic에 저장되어 있는 레코드 스트림을 소비/구독하는 프로세스를 의미하고 여러 Consumer Group으로 구성될 수 있다.
■ Kafka Offset (카프카 오프셋)
레코드에서 Consumer의 위치와 소비자별로 유지되는 레코드 위치를 Offset이라고 하고 Consumer별로 유지되는 메타데이터이다.
※ Resources
• docs.confluent.io
• medium.com/analytics-vidhya
• www.cloudkarafka.com/blog
• developer.ibm.com/articles
• kafka.apache.org
• data-flair.training/blogs