Message Queue/Kafka
[카프카, 데이터 플랫폼의 최강자] 1장. 카프카란 무엇인가
excited-hyun
2023. 4. 20. 21:12
반응형
1.2 카프카의 동작 방식과 원리
- 카프카는 기본적으로 메시징 서버로 동작함.
- 프로듀서에서 카프카에 토픽이라는 각각의 메시지 저장소에 데이터를 저장하면, 컨슈머가 원하는 토픽에서 데이터를 가져가는 방식으로 동작
pub-sub 모델
- 중앙에 메시징 시스템 서버를 두고 메시지를 보내고 받는 형태의 통신. 비동기 메시징 전송 방식
- 발신자의 메시지에는 수신자가 정해져있지 않음. 구독한 수신자만이 정해진 메시지를 받음.
- 수신자는 발신자에 대한 정보가 없어도 원하는 메시지만을 수신 할 수 있음.
- 프로듀서가 중간의 메시징 시스템에 메시지를 전달(메시지 데이터와 수신처 id 정보를 포함시킴) -> 메시징 시스템의 교환기가 메시지의 수신처 id를 확인해 컨슈머들의 큐에 전달 -> 컨슈머는 자신의 큐를 모니터링하다가 큐에 메시지가 전달되면 이 값을 가져옴
- 일반적인 통신의 경우 통신에 참여하는 개체가 많을 수록 일일이 연결하고 데이터를 전송해야해 확장성이 좋지 않음
- 장점
- 개체 하나가 수신 불능 상태가 되어도 메시징 시스템만 살아있으면 프로듀서에서 전달된 메시지가 유실되지 않음
- 각 개체가 다대다 통신이 아닌 메시징 시스템을 중심으로 연결되어 확장성 용이
- 사용자나 어드민이 연결을 직접 관장하는게 아닌, 교환기 룰에 의해 데이터가 수신터의 큐에 정확히 전달되므로 메시지 데이터 유실의 염려가 없음
- 단점
- 직접 통신을 하지 않기 때문에 베시지가 정확히 전달되었는지 확인하려면 코드가 더 복잡해짐
- 중간에 메시징 시스템이 있어 메시지 전달 속도가 빠르지 않음
기존의 메시징 시스템을 보완한 카프카
- 메시지 교환 전달의 신뢰성 관리를 프로듀서와 컨슈머 쪽으로 넘기고, 부하가 많이 걸리는 교환기 기능도 컨슈머가 만들 수 있게해 메시징 시스템의 작업량 줄임.
- 절약한 작업량을 메시징 전달 성능에 집중시켜 고성능 메시징 시스템을 만들어냄
카프카의 메시지 전달 순서
- 프로듀서는 새로운 메시지를 카프카로 보냄
- 프로듀서가 보낸 메시지는 카프카에 토픽에 도착해 저장됨
- 컨슈머는 카프카 서버에 접속해 새로운 메시지를 가져감
카프카의 동작
- 기존 메시징 시스템과 동일한 비동기 시스템
- 프로듀서는 컨슈머와 관계없이 새로운 메시지를 카프카로 전송하고 컨슈머는 프로듀서와 관계없이 카프카에서 새로운 메시지 가져옴
- 카프카에도 수많은 메시지가 저장되고, 메시지는 토픽이라는 식별자를 통해 토픽 단위로 저장됨
1.3 카프카의 특징
프로듀서와 컨슈머의 분리
- 메시지를 보내는 역할과 받는 역할이 완전히 분리된 펍/섭 방식 적용
- 이를 통해 구조를 단순화하고 각각의 서비스 서버는 카프카로 메시지를 보내는 역할만 하고 모니터링&분석 시스템은 카프카에 저장된 메시지를 가져오기만 하면 됨
- 완벽한 분리를 통해 한쪽에 문제가 발생하더라도 연쇄작용이 발생할 확률을 낮춤
- 서버가 추가되더라도 카프카로만 보내면되어 서버 추가 부담도 줄임
멀티 프로듀서, 멀티 컨슈머
- 하나의 토픽에 여러 프로듀서나 컨슈머들이 접근 가능한 구조
- 하나의 프로듀서가 하나의 토픽에만 메시지를 보내는게 아니라 하나 이상의 토픽으로 메시지를 보낼 수 있음.
- 컨슈머도 하나의 토픽에서만 메시지를 가져오는게 아닌 하나 이상의 토픽으로부터 메시지를 가져올 수 있음.
디스크에 메시지 저장
- 일반적인 메시징 시스템은 컨슈머가 메시지를 읽어가면 큐에서 바로 삭제함.
- 반면 카프카는 읽어가더라도 정해둔 보관 주기 동안 디스크에 저장해둠.
- 트래픽이 일시적으로 폭주해 컨슈머의 처리가 늦어져도 디스크에 보관되기 때문에 메시지 손실이 발생하지 않음
- 멀티 컨슈머 기능도 디스크에 저장하기 때문에 가능한 것
- 컨슈머에 버그가 있어 오류가 발생하더라도 컨슈머를 중단하고 해결한 후 다시 실행해 메시지를 가져올 수 있음
확장성
- 확장이 용이하도록 설계됨.
- 확장 작업은 카프카 서비스의 중단 없이 온라인 상태에서 작업이 가능함.
높은 성능
- 고성능 유지를 위해 내부적으로 분산처리, 배치 처리 등 다양한 기법 사용
728x90
반응형