최대 1 분 소요

Kafka에 대해 알아보자

Kafka란

  • 확장 가능한 작업을 위해 데이터 피드의 분산 스트리밍, 파이프 라이닝 및 재생을 위한 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 분산형 게시-구독 메시징 플랫폼

필요성

  • 각각의 마이크로서비스에서 하나의 db 를 참조하고 있다면 트래픽이 심할 경우에 db를 락킹을 하고 있기 때문에 delay 가 생길 수가 있다.
  • 그래서 각각의 마이크로 서비스에서 다른 db 를 참조하고 있다면 문제는 해결이 되지만
  • 동기화 문제가 발생
  • 동기화 문제를 해결하기 위해 사용

구성 요소

  • 브로커 : 브로커라 카프카 서버로서 보토 3대 이상 클러스터로 구성이 된다.
  • zookeeper : 다수의 브로커 서버를 관리해주는 코디네이터
  • 프로듀서 : 메시지를 전달하는 주체
  • 컨슈머: 메시지를 받는 주체
  • 토픽 : 브로커 안에 생성, 프로듀서는 토픽에 메시지를 전달하고 토픽을 구독한 컨슈머는 메시지를 받는다.

흐름

  • 코디네이터(주키퍼) 를 실행
  • 브로커(카프카 서버)를 실행
  • 브로커에 토픽을 생성
  • producer 가 토픽에게 메시지를 전달
  • 구독한 컨슈머는 메시지를 수신

Kafka Connect

image

  • kafka 를 통해서 데이터 베이스끼리 통신을 할 수가 있다.
  • 그러기 위해서 필요한 것이 Kafka Connect이다. confluent 가 예시이다.
  • 그래서 confluent 를 통해서 Kafka Connect Source 와 Kafka Connect Sink 역할을 하고
  • jdbc 를 이용하기 위해서 mariadb-java-client가 필요하다.
  • Kafka Connect Source가 데이터를 토픽으로 전달하고 Kafka Connect Sink가 토픽의 데이터를 db 에 전달한다.

설정

image

태그:

카테고리:

업데이트: