Coder Social home page Coder Social logo

hello-kafka's Introduction

👋Hello Kafka

용어

발행-구독 모델

발신자의 메시지는 수신자가 정해져 있지 않으며 정해진 범주에 따라 구독을 신청한 수신자에게 브로드캐스팅 되는 방식으로 수신자는 발행자에 대한 정보가 없어도 메시지를 수신받을 수 있음

토픽

발행-구독 모델의 범주의 역할

파티션

카프카의 토픽은 파티션이란 단위로 쪼개져 각 클러스터에 분산되어 저장되며 복제 및 장애 발생 시에도 파티션 단위로 처리된다.

오프셋

파티션이 메시지에 부여하는 값으로 메시지를 식별하는 ID로 사용 (초기 값: 0)

토픽에서 메시지를 식별할 때는 파티션 번호와 오프셋 번호를 함께 사용하여 식별

프로듀서

발행-구독 모델의 발신자 역할

메시지를 생성하여 브로커에게 전달한다. 메시지를 배치 형태로 한번에 전달할 수 있음

브로커

전달받은 메시지를 토픽별로 분류하여 메시지를 쌓는 역할 역할

주키퍼

카프카는 브로커들이 클러스터로 구성되어 동작하도록 설계되어 있으며 주키퍼는 클러스터 내의 브로커에 대한 분산처리를 담당

컨슈머

발행-구독 모델의 수신자 역할

토픽을 구독하며 메시지가 존재하면 가져가서 처리

컨슈머 그룹

특정 파티션에 대한 접근을 허용하는 방식 동일한 그룹의 컨슈머는 동일한 파티션에 접근할 수 없음

컨슈머 그룹 내의 컨슈머의 수가 파티션의 수 보다 적으면 하나의 컨슈머가 여러개의 파티션을 소유하게 되고 컨슈머의 수가 파티션의 수 보다 많으면 여분의 컨슈머는 메시지를 처리하지 않는 유휴 상태가 됨

파티션 오너

컨슈머 그룹에 속해있는 컨슈머 중 특정 파티션에 대한 접근권한을 가진 컨슈머

브로커나 컨슈머의 구성이 변동되지 않는 한 계속 유지 됨

  • 컨슈머가 추가되거나 제거되면 컨슈머 그룹내의 컨슈머들이 파티션 재분배
  • 브로커가 추가되거나 제거되면 전체 컨슈머 그룹에서 파티션 재분배

특징

  • 브로커가 한개 일때도 클러스터로 동작
  • 다수의 메시지를 배치형태로 브로커에게 한 번에 전달 가능
  • 메시지를 파일 시스템에 저장
    • 영속성 보장
    • 메시지가 쌓여도 성능저하 없음
    • 처리된 메시지를 삭제하지 않기 때문에 문제가 발생하거나 처리로직이 변경되면 재작업(rewind) 가능
  • 컨슈머가 브로커에서 메시지를 가져오는 pull 방식
    • 컨슈머가 처리능력 만큼의 메시지만 브로커에서 가져올 수 있음
    • 브로커는 컨슈머가 어떤 메시지를 처리하는지 계산하고 추척하지 않아도 됨
    • 메시지를 쌓아두었다가 주기적으로 처리(batch) 가능

설치

INSTALLATION

출처

hello-kafka's People

Contributors

dungsil avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.