Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

코딩블로그

Kafka란 무엇인가? 본문

카테고리 없음

Kafka란 무엇인가?

_hanbxx_ 2024. 3. 5. 13:26
728x90

Kafka란?

Kafka는 대규모 실시간 데이터 스트리밍을 처리하는 데 사용되는 분산 이벤트 스트리밍 플랫폼이다.

 

분산 이벤트 스트리밍

분산 이벤트라는 말은 "여러 대의 서버에 분산되어 저장된 이벤트(데이터)"를 말한다

이벤트 스트리밍은 대량의 이벤트(데이터)를 실시간으로 처리하는 방식을 의미한다

즉, 분산 되어 있는 이벤트들을 실시간으로 처리하는 플랫폼이다

 

Kafka는 분산 이벤트를 실시간으로 Pub/Sub 모델의 메세지 큐 형태로 동작한다

 

메세지 큐

메세지 지향 미들웨어(MOM)를 구현한 시스템이다

 

메세지 큐를 사용하면 메세지를 보낸 사람(발행자)와 메세지를 받는 사람(수신자)가 서로를 직접 알 지 못해도 전송, 수신이 가능하다. 메세지 큐가 발행자와 수신자 사이에서 중개하고 있기 때문이다

 

장점

  • 수신자의 서지스에서 장애가 발생하더라도 발행자로 인해 발행된 메세지는 메세지 큐에 남아있기 때문에 메세지 전달을 보장할 수 있다
  • 발행자와 수신자가 서로 독립적이라서 확장성이 좋다
  • 메세지 큐라는 중개체가 있기 때문에 발행자와 수신자가 비동기로 통신할 수 있다

Point to Point 와 Pub/Sub

P2P(Point to Point) : 한 명의 발행자의 메세지는 한 명의 Consumer에 의해 소비되는 방식. 1:1 메세지 전송 방식

Publish/Subscribe(Pub/Sub) : 발행자가 특정 Topic에 메세지를 보내면, 해당 Topic을 구독한 여러 수신자가 해당 메세지를 받는 방식이다. 

Kafka는 이러한 Pub/Sub를 지원한다

 

카프카 용어

출처 : https://www.linkedin.com/pulse/how-deploy-kafka-zookeeper-cluster-linux-based-operating-tiwari

 

  • Kafka Cluster
    • 브로커들의 모임이다. 확장성과 고가용성을 위해 Broker들이 클러서터로 구성되어 있다
  • Broker
    • 프로듀서로부터 메세지를 전달받아 토픽에 저장하고 컨슈머에 저장한다
  • Zookeeper
    • 카프카 클러스터 상태와 정보등을 관리하는 역할이다
    • 카프카를 실행시키려면 ZooKeeper도 같이 실행해야한다
  • Producer
    • 메세지를 발행하는 주체이다.
    • 메세지 발행 시 특정 토픽을 정하여 발행한다
  • Consumer
    • 메세지를 소비, 수신하는 주체이다
    • 특정 토픽을 구독하여 메세지를 전달받는다
  • Consumer Group
    • 하나 이상의 컨슈머가 모여 구성된 그룹
    • 각 파티션의 메세지는 한 번만 처리
    • 한 그룹 안에 있는 여러 컨슈머들이 서로 다른 파티션에서 동일한 토픽을 동시에 소비한다
  • Topic
    • 메세지를 구분하는 단위로 프로듀서로부터 전송된 데이터는 토픽이름으로 구별된다
  • Partition
    • 하나의 토픽은 하나 이상의 파티션으로 나눠진다
    • 동일한 토픽이 여러 파티션에 나눠서 저장된다
  • Offset
    • 파티션 내에서 메시지의 위치를 나타낸다. Offset 값을 알면 해당 메시지로 바로 접근할 수 있다

 

 

출처:

https://hstory0208.tistory.com/entry/Kafka-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EC%A3%BC%EC%9A%94%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-%EB%B0%8F-PubSub-%EB%AA%A8%EB%8D%B8-%EB%B9%84%EA%B5%90

728x90