Message Queue/Kafka

[카프카, 데이터 플랫폼의 최강자] 1장. 카프카란 무엇인가

excited-hyun 2023. 4. 20. 21:12
반응형

1.2 카프카의 동작 방식과 원리

  • 카프카는 기본적으로 메시징 서버로 동작함.
  • 프로듀서에서 카프카에 토픽이라는 각각의 메시지 저장소에 데이터를 저장하면, 컨슈머가 원하는 토픽에서 데이터를 가져가는 방식으로 동작

pub-sub 모델

  • 중앙에 메시징 시스템 서버를 두고 메시지를 보내고 받는 형태의 통신. 비동기 메시징 전송 방식
  • 발신자의 메시지에는 수신자가 정해져있지 않음. 구독한 수신자만이 정해진 메시지를 받음.
  • 수신자는 발신자에 대한 정보가 없어도 원하는 메시지만을 수신 할 수 있음.
  • 프로듀서가 중간의 메시징 시스템에 메시지를 전달(메시지 데이터와 수신처 id 정보를 포함시킴) -> 메시징 시스템의 교환기가 메시지의 수신처 id를 확인해 컨슈머들의 큐에 전달 -> 컨슈머는 자신의 큐를 모니터링하다가 큐에 메시지가 전달되면 이 값을 가져옴
  • 일반적인 통신의 경우 통신에 참여하는 개체가 많을 수록 일일이 연결하고 데이터를 전송해야해 확장성이 좋지 않음
  •  장점
    • 개체 하나가 수신 불능 상태가 되어도 메시징 시스템만 살아있으면 프로듀서에서 전달된 메시지가 유실되지 않음
    • 각 개체가 다대다 통신이 아닌 메시징 시스템을 중심으로 연결되어 확장성 용이
    • 사용자나 어드민이 연결을 직접 관장하는게 아닌, 교환기 룰에 의해 데이터가 수신터의 큐에 정확히 전달되므로 메시지 데이터 유실의 염려가 없음
  • 단점
    • 직접 통신을 하지 않기 때문에 베시지가 정확히 전달되었는지 확인하려면 코드가 더 복잡해짐
    • 중간에 메시징 시스템이 있어 메시지 전달 속도가 빠르지 않음

기존의 메시징 시스템을 보완한 카프카

  • 메시지 교환 전달의 신뢰성 관리를 프로듀서와 컨슈머 쪽으로 넘기고, 부하가 많이 걸리는 교환기 기능도 컨슈머가 만들 수 있게해 메시징 시스템의 작업량 줄임.
  • 절약한 작업량을 메시징 전달 성능에 집중시켜 고성능 메시징 시스템을 만들어냄

카프카의 메시지 전달 순서

  1. 프로듀서는 새로운 메시지를 카프카로 보냄
  2. 프로듀서가 보낸 메시지는 카프카에 토픽에 도착해 저장됨
  3. 컨슈머는 카프카 서버에 접속해 새로운 메시지를 가져감

카프카의 동작

  • 기존 메시징 시스템과 동일한 비동기 시스템
  • 프로듀서는 컨슈머와 관계없이 새로운 메시지를 카프카로 전송하고 컨슈머는 프로듀서와 관계없이 카프카에서 새로운 메시지 가져옴
  • 카프카에도 수많은 메시지가 저장되고, 메시지는 토픽이라는 식별자를 통해 토픽 단위로 저장됨

 

1.3 카프카의 특징

프로듀서와 컨슈머의 분리

  • 메시지를 보내는 역할과 받는 역할이 완전히 분리된 펍/섭 방식 적용
  • 이를 통해 구조를 단순화하고 각각의 서비스 서버는 카프카로 메시지를 보내는 역할만 하고 모니터링&분석 시스템은 카프카에 저장된 메시지를 가져오기만 하면 됨
  • 완벽한 분리를 통해 한쪽에 문제가 발생하더라도 연쇄작용이 발생할 확률을 낮춤
  • 서버가 추가되더라도 카프카로만 보내면되어 서버 추가 부담도 줄임

멀티 프로듀서, 멀티 컨슈머

  • 하나의 토픽에 여러 프로듀서나 컨슈머들이 접근 가능한 구조
  • 하나의 프로듀서가 하나의 토픽에만 메시지를 보내는게 아니라 하나 이상의 토픽으로 메시지를 보낼 수 있음.
  • 컨슈머도 하나의 토픽에서만 메시지를 가져오는게 아닌 하나 이상의 토픽으로부터 메시지를 가져올 수 있음.

디스크에 메시지 저장

  • 일반적인 메시징 시스템은 컨슈머가 메시지를 읽어가면 큐에서 바로 삭제함.
  • 반면 카프카는 읽어가더라도 정해둔 보관 주기 동안 디스크에 저장해둠.
  • 트래픽이 일시적으로 폭주해 컨슈머의 처리가 늦어져도 디스크에 보관되기 때문에 메시지 손실이 발생하지 않음
  • 멀티 컨슈머 기능도 디스크에 저장하기 때문에 가능한 것
  • 컨슈머에 버그가 있어 오류가 발생하더라도 컨슈머를 중단하고 해결한 후 다시 실행해 메시지를 가져올 수 있음

확장성

  • 확장이 용이하도록 설계됨.
  • 확장 작업은 카프카 서비스의 중단 없이 온라인 상태에서 작업이 가능함.

높은 성능

  • 고성능 유지를 위해 내부적으로 분산처리, 배치 처리 등 다양한 기법 사용

 

728x90
반응형