카프카 커넥트는 언제 사용하나?

  • 카프카를 직접 코드나 API를 작성하지 않았고, 변경도 할 수 없는 데이터 저장소에 연결시켜야 하는 경우

카프카 커넥트의 구성

  • Worker
    • 커넥터와 태스크를 실행시키는 역할
    • 커넥터 설정을 내부 토픽에 저장
    • 적절한 설정값 전달
    • 소스와 싱크 커텍터의 오프셋 커밋
    • 문제 발생시 재시도
    • REST API, 설정관리, 신뢰성, 고가용성, 규모 확장성, 부하 분산 담당
    • 워커 프로세스의 장애 또는 신규 추가
      • 커넥터 클러스트안의 다른 워커들이 감지
      • 해당 워커에서 실행중이던 커넥터와 태스크를 다른 워커에 할당
  • 커넥터 플러그인
    • 커넥터 API 구현
    • Connector
      • 커넥터에서 몇 개의 태스크가 실행되어야 하는지 결정
      • 데이터 복사 작업을 각 태스크에 어떻게 분할해 줄지 결정
      • 워커로부터 태스크 설정을 얻어와서 태스크에 전달
    • Task
      • 데이터를 실제로 카프카에 넣거나 가져오는 작업 담당
      • 워커로부터 컨텍스트를 받아서 초기화
      • 소스 태스크
        • 소스 레코드의 오프셋을 저장할 수 있게 해주는 객체 포함
        • 외부 시스템을 폴링해서 워커가 카프카 브로커로 보낼 레코드 리스트 리턴
      • 싱크태스크
        • 카프카로부터 받는 레코드를 제어할 수 있게 해주는 메소드들 포함
        • 워커를 통해 카프카 레코드를 받아서 외부 시스템에 쓰는 작업 담당
  • Data API
    • 소스 커넥터에서 데이터 객체를 어떻게 생성할지에 대한 방법을 알려줌
  •  Converter
    • 소스 커넥터에서 카프카에 데이터를 어떻게 쓸지에 대한 방법을 알려줌
    • 카프카에서 데이터를 읽어 컨버터를 통해 데이터 API 레코드로 변환하여 싱크 커넥터로 전달
    • 기본 데이터 타입, 바이트 배열, 문자열, Avro, Json, 스키마 있는 JSON, Protobuf 사용가능
  • 오프셋 관리
    • 소스커넥터
      • 커넥터가 워커에 리턴하는 레코드에 논리적인 파티션과 오프셋 포함
        • 파일 인경우, 파일이 파티션, 파일안의 줄 또는 문자 위치가 오프셋
        • JDBC의 경우, 테이블이 파티션, 테이블의 레코드 id/timestamp 가 오프셋
    • 싱크커넥터
      • 토픽, 파티션, 오프셋 식별자가 포함되어 있는 카프카 레코드를 읽은 뒤 대상 시스템에 저장
      • 성공하면 오프셋 커밋

+ Recent posts