목록분산 시스템/Kafka (7)
쿼카러버의 기술 블로그
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글을 참고하길 바란다. 앞 글에서 카프카가 실제로 어떻게 활용되는지에 대해 알아보았다. 본 글에서는 카프카를 직접 도커를 활용하여 직접해보기 위해 예제를 아주 잘 정리해준 글을 번역하고, 일부 수정한 글이다. Setup - 실행환경 준비 먼저 아파치 카프카 도커 컨테이너를 실행해보자. Confluent의 도커 이미지르 사용할 수도 있지만 필요 메모리가 8GB가 넘기 때문에 wurstmeister의 이미지를 fork한 내 개인 레포를 사용한다. cd git clone https://github.com/getveryrichet/kafka-docker.git cd kafka-docker 카프카와 주키퍼..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 앞서 카프카의 프로듀서와 컨슈머가 무엇인지 그리고 그들의 동작방식에 대해 이론적으로 알아보았다. 본 글에서는 카프카를 그래서 어디에 쓰는데?, 프로듀서와 컨슈머가 서로 어떻게 동작하는데?와 같은 질문에 답하려고 한다. Kafka의 사용 목적을 읽다보면, 왜인지는 알겠으나 구체적으로 어떤 형태로 활용되는지에 대해 감이 통 잡히지 않았다. 따라서 Kafka를 사용하는 이유를 크게 세가지로 나누어보고 각 이유별로 예시를 들어 설명하려고 한다. Kafka를 사용하는 이유를 크게 나누면 아래 세 가지를 꼽을 수 있다. 분산 큐잉 시스템으로 활용 데이터 허브 Response가 필요 ..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 컨슈머 개념을 이해하기 위해 작성했다. 컨슈머에 대한 개념과 구현예시를 중점으로 다룬다. Consumer란? 토픽의 파티션에 저장되어 있는 메시지를 소비하는 역할을 하는 애플리케이션이나 서버를 컨슈머라고 부른다. 컨슈머가 단순하게 카프카로부터 메시지만 가져오는 것 같지만 내부적으로는 컨슈머 그룹, 리밸런싱 등 여러 동작을 수행한다. 컨슈머는 데이터를 요청할 때 리더 파티션을 가지고 있는 카프카 브로커와 통신한다. Consumer 동작 방식 프로듀서가 카프카의 토픽으로 메시지를 전송하면 해당 메시지들은 브로커들의 로컬 디스크에 저장된다. 그리고 컨슈머는 토픽에 저장..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 프로듀서의 개념을 이해하기 위해 작성했다. 프로듀서에 대한 개념과 기본적인 동작방식그리고 간단한 파이썬 프로듀서 구현체 대해 다룬다. Producer란? 프로듀서는 메시지를 생산해서 카프카의 토픽으로 메시지를 보내는 역할을 담당한다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신한다. Producer 동작방식 먼저 프로듀서의 전체 흐름을 아래 그림과 함께 설명하겠다. Producer Record 카프카로 전송하기 위한 실제 데이터며, 레코드는 토픽, 파티션, 키, 밸류로 구성된다. 프로듀서가 카프카로 레코드를 전송할 때 카프카..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 카프카의 아키텍처 및 구성요소, 즉 카프카를 이해하기 위해 알아두어야 할 필수 Term들에 대해 다룬다. Kafka의 아키텍처 pub - sub 모델 : 앞 글에서 다루었듯, publisher subscriber모델은 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비한다. 이런 느슨한(loose) 결합을 통해 publisher나 subscriber가 죽더라도 서로 간에 의존성이 없기 때문에 안정적으로 데이터를 처리할 수 있다. 특히 kafka에는 offset을 통해 특정 토픽을 어디까지 읽었는지에 대한 정보를 관리하고 있기 때문에 컨슈머중 어느 ..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글을 참고하길 바란다. 본 시리즈는 아파치 카프카 시리즈의 첫 번째 글로, 카프카가 무엇인지에 대해 간략하게 소개한다. 카프카란? 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 분산 메시징 플랫폼이다. 기술적으로 표현하면 비동기 처리를 위한 메시징 큐의 한 종류이며, 프로듀서와 컨슈머가 있다. 비동기라는 단어에서 겁먹지 말고 우리가 흔히 사용하는 메일의 예시로 비동기 메시징 큐의 의미를 한번 이해해보자. Mail : 비동기 메시징 우리가 일상적으로 사용하는 메일에서 보내는 사람은 받는 사람이 언제 메일을 받을지 모르는 상태에서도 메일 서버로 메시지(메일)를 보낼 수 있다. 보낸 메시지는..
카프카는 이제 개발자라면 꼭 알아야 하는 플랫폼이다. 예전 일이지만 아파치 카프카를 알기 전의 내가 카프카를 처음 들었을때는 의 작가 프란츠 카프카? 라고 반문했다 ㅋㅋ (실제로 카프카의 이름은 프란츠 카프카 이름에서 따왔다고함) 개발 공부를 시작하면서부터 내가 카프카라는 단어를 듣게되면 이제 아파치 카프카가 떠오르기 시작했다. 카프카카 무엇인지, 그리고 MSK를 사용할줄 아는 정도에 머물렀던 찰나에 회사에서 카프카를 활용해볼만한 일이 생기면서 카프카에 대해 열심히 찾아봤다. 하지만 책을 읽고 여러 포스팅을 읽는다 하더라도, 뭔가 머릿속에 딱 그려지는 느낌이 없어서 나중에 내가 보기 위해 카프카에 대한 정리 시리즈를 작성하려고 한다. 본 시리즈는 고승범님의 를 토대로 여러가지 웹 상에 존재하는 글들을 종..