교육/[온라인] KOSTA EDU

[KOSTA] Kafka를 이용한 서비스와 데이터 통합 - 1편

코드몬스터 2024. 7. 19. 09:39
728x90

 

Topcis, Partitions, Offsets

  • 파티션
    • 토픽은 파티션을 나눌 수 있음
    • 토픽당 데이터를 분산 처리하는 단위
    • 병렬 처리와 많은 양의 데이터 처리를 위해서 파티션을 늘릴 수 있음
      (늘리기만 하고 줄이는 것은 안됨)
    • 파티션의 인덱스는 0부터 1, 2, ... 을 가짐
    • 파티션 별로 증가되는 아이디, Offset 값을 가지게 됨.
    • Offset은 파티션에서만 의미가 있음 
  • 토픽과 파티션
    • ⭐️ 파티션 안에서는 데이터의 순서가 보장
      -> 다른 파티션의 경우 데이터의 순서성 보장이 안됨
    • 파티션에 데이터가 한 번 쓰여지면 변경이 안됨(write once)
    • key를 주지 않으면 어느 ㅍ티션에 데이터가 들어가는지 모름

 

Broker

 

Zookeeper

  • 분산 애플리케이션 코디네이터
  • 주키퍼는 브로커를 관리한다.
  • 파티션의 리더 선출을 도와준다.
  • 카프카의 변경에 대하여 알림을 준다.
  • 카프카는 주키퍼 없이 동작 못함

 

 Producer

  • 메세지를 생산하여 토픽으로 메세지를 보내는 애플리케이션, 서버 등을 Producer라고 부른다.

 

Consumer

  • 토픽 이름으로 저장된 메세지를 가져가는 앱, 서버 등을 Consumer 라고 부른다.
  • Consumer Group 안의 각각의 Consumer는 파티션의 데이터를 읽는다.

 

Consumer Offset

 

 

 

Kafka Scaling

 

Partition

 

Consumer Group

  • Message Lagging이 높을 경우, 치리를 담당하는 컨슈머를 증가한다.
    • 컨슈머 그룹별로 그룹 코디네이터가 각 컨슈머 그룹을 관리
    • 컨슈머는 풀링(poliing)하거나 커밋할 때 Heartbeat 메세지를 그룹 코디네이터에게 전달.

 

Replication Factor

 

 

Zookeeper

  • Zookeeper는 Broker를 관리(Broker 들의 목록/ 설정을 관리)하는 소프트웨어
    • Zookeeper는 변경사항에 대해 Kafka에 알린다.
    •  

 


 

Kafka Connect

  • Producer와 Consumer를 사용해 데이터 파이프라인을 생성해 준다.
  • Connect와 Source Connector를 사용해 Kafka Broker로 데이터를 보내고, Connect와 Sink Connector를 사용해 Kafka에 담긴 데이터를 타겟 DB에 저장한다.

 

Kafka Connect 용어 정의

  • Connect:Connector를 동작하게 하는 프로세서(서버)
  • Connector: Data Source(DB)의 데이터를 처리하는 소스가 들어있는 jar 파일
    • Source Connector: data source에 담긴 데이터를 topic에 담는 역할(Producer)을 하는 connector
    • Sink Connector: topic에 담긴 데이터를 특정 data source로 보내는 역할(Consumer 역할)을 하는 connector

 

Kafka Connect DLQ(Dead Letter Queue)

  • 오류가 발생한 레코드를 별도의 토픽에 처리한다.

 

 


Message Flow in Kafka

  • Topic=mall, Partition=1, Replica=1 인 경우, 한 개 파티션으로 처리한다.
  • LAG는 Consumer offset과 Producer offset의 차이를 의미한다.

 

 

리밸런싱이란 컨슈머 그룹의 파티션 소유권을 재할당하는 작업, Producer의 메세지는 모든 파티션에 균등하게 배분하고 저장된다.

 

  • Conumser offset이 있다는 것은, Consumer Group 로 데이터를 전달하지 않은 것이다.

 

멀티 파티션 및 멀티 컨슈머 환경에서 중요한 것은 어떤 상황에서도 메세지를 유실하지 않으면서 순서대로 처리하는 "메세지 순서성"이 보장되어야 한다.

 

 


  • 이벤트 설정
  • 트리거(명령, 정책