ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kafka]kafka 필수 개념인 Topology와 Streaming processing 종류 알아보기- , Kpub/sub, Kstreams, KsqlDB의 차이점
    데이터 엔지니어링/Kafka 2022. 7. 22. 21:27
    반응형

    Kafka 기본 아키텍쳐

    producer - broker - consumer

    좌-consume한 message, 우 - 데이터 생성하여 producer한 데이터

    • 기본적인 아키텍쳐는 source에서 message를 만들고 broker에 보내주면 consumer가 그 메세지를 받아서 소비하는 형식이다. 위에 그림은 1대1 매칭을 나타낸다.
    • 그런데 메세지를 기반으로 내가 원하는 데이터로 처리하는 것을 보통 원한다.예를 들어 카드를 사용할 때 1초안에 3번 이상 결제된데이터, 주식 상승률이 5퍼 이상이 되었을 때 푸쉬 알림하기 등 메세지의 내용만으로 처리하기 힘든 것을 processing하고 컨슘하게 하는 형식을 가질 필요성이 많았다. 그래서 생겨 난 것이 Topology이다.

     

    Topology(토폴로지)

    • 토폴로지는 기본적으로 네트워크 토폴로지를 나타낸다. 특히, 노드들의 연결성을 나타낸다. 망형, 성형, 트리형 등이 있다.
    • Kafka에서 기본적인 1대1이 아니라 메세지가 들어오면 그 메세지를 가공해서 다시 topic으로 보내주는 로직을 갖는다.아래에서 오른쪽 그림을 보면, 결제에서 토픽에서 결제에 대한 이상감지가 있을 경우 없을 경우를 판다름 해서 다시 토픽으로 보내는 형식으로 구성이 되는데 이런 토픽단위로 로직을 구성 할 수 있다.
    • Kstreasm와 KsqlDB에서 생성하는 것들과 Aggregate API는 모두 토폴로지 개념으로 토픽을 생성하여 계산후 다시 받는 형식으로 생성이 된다. 내부적으로 하는 것이니 우리가 할 필요는 없다.

     

    KPub/Sub

    • 가장 처음에 도입된 producer, consumer 개념
    • 손쉬운 스트리밍 프로세싱 api 제공 x
    • 마이크로한 작업을 진행

    KStreams

    • Pub/Sub에서 사용되는 로직에 반복적인 부분이 많았다. aggregate, producer같은 반복적으로 생성해야하는 로직이나 구현하기 힘든 로직을 개선하기 위해 나왔다.
    • Event Streaming용 Library(Java, Scala)이다.
    • Kafka 0.10.0.0에 처음 포함 (2016)
    • Framework아니라 Library라 별도의 클러스터 설정없이 사용 kafka cluster에서 하는 것이 아니라 외부에서 돌리고 다시 클러스터로 보내는 형식으로 사용
    • application.id로 KStreams Application을 grouping
    • groupBy, Count, filter, join, aggregate 등 손쉬운 스트리밍 프로세싱 api제공

    KSQL

    • KStreams에서 처리 하면 불편한 점이 있었는데, App에서 연동해서 사용해야 한다는 점과 꼭 java나 scala등 언어를 사용하여 돌려서 활용해야한다는 점이였다. 그런데 이런 부분을 해결하고 좀더 간편하게 테스트 및 로직을 구현 할 수 있도록 나왔다.
    • Event Streaming Database(or SQL엔진) - RDB/Nosql아님
    • SQL과 유사한 형태로 KSqlDB에 명령어를 전송하여 스트림 프로세싱 수행
    • Cluster를 구축하기 위해서는 Ksql.service.id값을 서로 다르게 하기만 하여 여러개 가동하면 됨

     

     

    3개의 차이점이 뭔가? 언제 사용하나

    • pub/sub은 복잡한 로직을 한땀한땀 만들 때 사용
    • KStreams Library이기 때문에 App 과 App을 연동할 때 사용한다.
    • KSQL은 SQL형식으로 Stream을 할 수 있게 해주는 SQL엔진이다. SQL과 똑같지는 않다.
    • pub/sub은 마이크로하게 소스를 작성하여 사용해야하지만, ksql로 갈수록 구문이 짧아진다.
    • Kafka Streams는 마이크로하게 로직을 작성해야 할 때 사용하며
    • Ksql은 streams보다 훨씬 간편한 작업을 수행할 때 사용한다.

    좌-아래 동영상 참조 우 - 패스트캠퍼스

     

     

     

     

     

    참고자료 

    https://www.youtube.com/watch?v=-GpbMAK3Uow&feature=emb_logo

    반응형

    댓글

Designed by Tistory.