일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- DatagramPacket
- 파스칼케이스
- NamingRule
- PascalCase
- tcp
- Java
- KebabCase
- UDP통신
- Socket
- 명명규칙
- DatagramSocket
- 카멜케이스
- udp
- 케밥케이스
- SnakeCase
- 스네이크케이스
- camelcase
- ServerSocket
- Today
- Total
MATT's
kafka란? 본문

- 메세징 큐의 일종
- 분산형 스트리밍 플랫폼 (A distributed streaming platform)
LinkedIn에서 여러 구직, 채용 정보들을 한 곳에서 처리(발행/구독)할 수 있는 플랫폼으로 개발됨 - 대용량의 실시간 로그 처리에 특화된 메세징 시스템
기존 메세징 시스템 대비 TPS가 매우 우수하다는 평을 듣는다.
( *TPS : 초당 트랜잭션 수, 초당 특정 엔티티가 수행한 동작의 수 (Transactions per second) ) - 메세지를 기본적으로 메모리에 저장하는 기존 방식과는 달리, 메세지를 파일 시스템에 저장하는 방식 사용
-> 메세지 유실 우려 감소 - 기존 메세징 시스템에서는 broker가 consumer에게 메세지를 push해주는 방식인데 반해,
Kafka는 consumer가 broker로부터 직접 메세지를 가져가는 pull방식으로 동작
consumer는 자신의 처리 능력만큼만의 메세지를 가져오기 때문에 최적의 성능을 낼 수 있다.

Kafka 주요 개념

Producer
- 메세지 생산(발행)자
- 메세지를 생성하여 Broker로 전송
- 전송된 메세지는 Partition에 신규 offset과 함께 기록됨
Consumer
- 메세지 소비자
- Consumer는 Broker로부터 메세지를 요청하여 가져감(polling)
Broker
- Kafka Server를 의미
- 한 개의 클러스터 내에서 여러 kafka Server를 실행할 수 있다. (주로 3대 이상의 Broker로 Cluster를 구성)
Zookeeper
- Broker에 분산 처리된 메세지큐의 정보들을 관리
- 클러스터 최신 설정 정보 관리, 동기화 리더 채택 등 클러스터 서버들이 공유하는 데이터를 관리하기 위해 사용한다.
- Meta-Data (broker id, controller id 등) 저장하는 역할
- 클러스터를 관리하는 Zookeeper 없이는 kafka 구동이 불가능하다.
때문에 Kafka 서버를 가동하려면 Zookeeper를 먼저 가동해줘야 한다.
Controller
- Broker 중 1대는 Controller 기능을 수행
- 각 Broker에게 담당 파티션 할당 수행
- Broker 정상 동작 모니터링 관리
Cluster
- Broker 묶음

Topic
- 메시지 종류 (메세지 분류 단위)
- 메세지가 생산되고 소비된느 주제
- 예를 들어 카톡 단체방 같다고 생각하면 쉽다.
(카톡 단체방 A, B가 있을 때, A에서 나눈 대화는 A 대화방에 존재하는 사람들에게만 보여져야한다.)
- 주제에 따라 여러 topic을 생성하면 된다.
Partitions
- Topic 내에서 메세지가 분산되어 저장되는 단위
- 한 Topic에 Partition이 3개 있다면, 3개의 Partition에 대해 메세지가 분산되어 저장된다
- Partition 내부에 Queue 방식으로 저장되기 때문에 Partition 내부에서는 순서가 보장되지만, Partition 끼리는 순서가 보장되지 않는다.
Offset
- Partition 내에서 각 메세지를 식별할 수 있는 Unique ID
- 메세지를 소비하는 Consumer가 읽을 차레를 의미하므로 Partition마다 별도로 관리된다.
Log
- 1개의 메세지를 뜻한다.
- Partition의 한 칸을 Log라고 한다.
- Log는 key, value, timestamp로 구성된다.
Kafka segment

- 실제로 메세지는 파일 시스템 단위로 저장
- 세그먼트는 시간 또는 크기 기준으로 닫힘
- 세그먼트가 닫힌 이후 일정 시간(또는 용량)에 따라 삭제(delete) 또는 압축(compact)
[참고]
'Kafka' 카테고리의 다른 글
Kafka - 실습 (0) | 2020.08.03 |
---|---|
메세징 시스템(Messaging System) (0) | 2020.07.20 |