Data Engineering/Kafka

[Kafka] 카프카 개념 정리

Zyung 2023. 9. 28. 09:54

사용하는 이유

  1. 높은 처리량으로 실시간 처리
  2. 임의의 타이밍에 데이터 읽기
  3. 다양한 제품과 시스템에 쉽게 연동
  4. 메시지를 잃지 않음

⇒ 데이터의 이동이 서비스나 모니터링, 데이터베이스 등 다양하게 이동하게 되는데 거기에 따른 많은 파이프라인 구축이 필요하게 된다.

이것을 한곳으로 모아서 데이터가 이동하게 해서 확장성과 안정성을 높이자!! ⇒ 카프카

 

💡 브로커가 있는 이유
- 접속처를 하나로 할 수 있다.
- 증감에 대응할 수 있다.

 

Kafka Cluster

  • 카프카 브로커 여러개가 모여서 카프카 클러스터를 구성하게 된다.
  • 브로커를 여러개 두는 이유는 ISR(In Sync Replica)가 가능하기 때문
    • ISR

위와 같이 브로커를 여러개를 두게 되면 토픽에 대해서 복제가 가능하게 된다. 이럴 경우 하나의 브로커가 갑자기 일을 중단하게 되더라도 토픽 내부에 있는 레코드를 잃을 걱정을 하지 않아도 되기 때문에 클러스터 환경을 구성하게 된다.

 

 

Kafka Broker

  • 카프카 서버라고 생각하면 된다
  • Topic
    • 같은 토픽에 대해서는 같은 곳으로 모을 수 있다.
  • Partition
    • 키에 대해서 같은 파티션으로 이동하게 된다.
      • 만약 순서가 중요한 데이터일 경우에는 키를 적절히 정하여 같은 파티션으로 들어가게 하는 것이 필요함
    • 키가 없을 경우에는 해시로 적절히 배분된다.
    • 컨슈머의 개수 <= 파티션의 개수
      • 같은 것이 가장 이상적 

Kafka Producer

  • 레코드를 생성하는 어플리케이션

Kafka Consumer

  • 레코드를 받는 어플리케이션
  • 그룹(Kafka Consumer Group)으로 운영 가능
    • 하나의 그룹은 MySQL로 수신, 다른 그룹은 MongoDB로 수신하는 등 같은 레코드에 대해서도 다르게 처리할 수 있다.
    • rebalance 지원: 장애에 대응하기 편리하다

Kafka Connect

  • 작업의 형태를 하나의 템플릿으로 만들어 스레드나 프로세스로 병렬처리가 가능하도록 한다.
  • REST API로 통신하며 해당 통신에 따라 새로 생성하고 삭제하며 관리할 수 있다.
  • 오픈소스로 다양하게 제공된다(Mysql, HDFS 등)
  • 다음과 같이 동기화하는데에도 사용할 수 있다.