카프카란?
pub-sub 모델의 메세지 큐
분산환경에 특화되어 설계되어있어, 다른 메세지 큐에 비해 성능이 우수함
pub-sub 모델이란?
발행(publish)/구독(subscribe)을 의미한다.
공급자와 구독자로 구분된다.
데이터를 전송하는 공급자는 누가 받을 지 신경쓰지 않고 내가 보내는 곳에 데이터를 전송하기만 하면 된다.
데이터를 수신하는 구독자는 내가 받을 데이터 장소를 지켜보고 있다가, 그 곳에 오는 데이터를 가져오기만 하면 된다.
잡지, 신문 구독과 같은 개념이다.
잡지사나 신문사는 내가 쓴 글을 특정 토픽(잡지사/신문사)에 발행하면,
그 토픽에 관심 있는 사람들이 해당 잡지사나 신문사를 구독하여 매달 정기적으로 데이터를 받아보는 구조로 생각하면 된다.
키워드
- producer, consumer
- topic, partiton
- broker, zookeepr
- consumer group
- replication
- page cache
Producer / Consumer
Producer = 데이터를 전송하는 application (Topic에 데이터를 발행하는 발행자)
Consumer = 데이터를 수신하는 application (Topic을 구독하는 구독자)
* Producer나 Consumer 중 하나가 죽어도 상관없이 각자 하던 일을 계속 하면 된다.
Topic
위에서 말한대로 토픽은 데이터를 구별하는 논리적인 개념이라고 보면 된다.
우리가 토픽 별로 글들을 분류하듯, 데이터를 논리적인 개념으로 구분지어 토픽 별 메세지 큐를 사용한다.
Partition
분산처리를 위한 개념이다.
Producer가 1분에 1000개의 데이터를 보낸다고 가정하자.
그리고 Consumer는 데이터를 가져가서 처리하는 시간이 있기 때문에,
1분에 200개의 데이터를 가져갈 수 있다고 가정한다.
그럼 시간이 지날수록 카프카 메세지큐에 데이터는 계속 쌓일 것이고,
시간이 많이 지나면 카프카 서버의 메세지 큐는 가득 차서 더이상 Producer로부터 메세지를 받지 못할 것이다.
이런 오류가 발생하지 않게 하기 위해 분산처리를 할 수 있도록 제공하는 것이다.
한 토픽당 메세지 큐를 3개씩 두면,
Producer는 5개의 큐에 골고루 전송하여 큐 하나당 1분에 200개의 데이터가 쌓일 것이고,
Consucer 5대가 각자 맡은 큐에서 1분에 200개씩 가져가면 시간이 지나도 데이터가 쌓이지 않을 것이다.
5개의 큐라고 비유한 것을 파티션이라고 한다. 즉, 토픽 당 병렬처리 가능한 설정값을 파티션이라고 한다.
파티션이 많다고 무조건 좋은 것도 아니고, 그렇다고 너무 적어서도 안된다.
파티션 개수를 정할 땐 Producer, Consumer의 데이터 처리속도를 파악하여 적절한 값으로 설정해야 한다.
일반적으로 Consumer와 Partition 개수를 똑같이 구성한다고 한다.
그리고, 한 번 늘린 파티션 개수는 절대 줄일 수 없기때문에 처음에 최소한의 파티션으로 사용하다가 조금씩 늘려야한다.
메세지의 순서는 하나의 파티션 안에서만 보장되므로, 여러 파티션으로 구성했을 경우 메세지 순서는 보장되지 않는다.
즉 Consumer를 통해 가져간 데이터의 순서 보장이 필요하다면 특정 키로 재정렬 하는 로직이 필요할 것이다.
Broker
메세지 큐를 가진 카프카 서버라고 생각하면 된다.
Producer ----> Broker ----> Consumer
브로커를 한대로만 구성했을 경우에 장비가 다운되면 서비스 운영에 문제가 생길 수 있다.
그래서 보통 3대의 Broker로 운영한다.
Zookeeper
카프카서버(브로커)들에 대한 메타데이터를 관리하는 서버이다.
카프카를 띄우기 위해서는 주키퍼를 먼저 띄워야 했다.
그런데 최근 버전에는 주키퍼 없이 띄울 수 있도록 개선되었다고 한다...(직접 해보진 않음)
Consumer Group
Todo
Replication
Todo
Page Cache
Todo
https://needjarvis.tistory.com/601?category=925090
[카프카] Kafka의 분산 시스템
카프카(Kafka)의 분산 시스템이라고 포스팅 주제를 적긴 했으나 해당 내용은 빅데이터를 어느 정도 알고 공부했던 사람이면 사실 본인들이 알고 있는 지식에서 별 차이가 없다는 것을 잘 알고 있
needjarvis.tistory.com
Kafka 시스템 구조 알아보기
- Kafka 관련 이전 포스팅 1) AWS EC2에 Kafka 설치하기 Kafka를 공부하다 보면 여러 용어들을 볼 수 있습니다. 어딘지 모르게 익숙한 용어인 Cluster 부터 생소한 Zookeeper나 Topic 같은 용어들이 있습니다.
velog.io
Kafka 이해하기
카프카의 구성요소, 동작원리, Exactly-delivery-once 모델 차용
medium.com
http://ldg.pe.kr/Wiki.jsp?page=Kafkaboot1_ch3_kafkadesign
DongGukS Wiki: Kafkaboot1_ch3_kafkadesign
Add new attachment Only authorized users are allowed to upload new attachments.
ldg.pe.kr
'개발 > 지식' 카테고리의 다른 글
인프라 구성관리 툴 (0) | 2020.04.10 |
---|---|
[펌] 공룡책으로 정리하는 운영체제 (0) | 2020.03.23 |
[펌] TCP 연결종료 (0) | 2020.03.23 |
3Way-Hand Shaking vs 4Way-Hand Shaking (0) | 2019.10.18 |
SSH vs SSL (0) | 2019.10.14 |