ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kafka 설계
    개발/kafka 2024. 8. 20. 09:20

    크게 pub 브로커 sub 으로 구성된다. 

    pub 시점에 시리얼라이즈를 통해 key와 value를 보낸다. 

    이를 브로커가 적절한 양을 판단 후 sub(컨슈머) 그룹에 보내게 된다. (key 단위 ) 

    sub의 경우 batch로 받을 지 single로 받을지 판단할 수 있다. 

    pub 주요 config 

    ProducerConfig.COMPRESSION_TYPE_CONFIG - 압축유형 
    ProducerConfig.LINGER_MS_CONFIG - pub 대기 시간 
    ProducerConfig.MAX_REQUEST_SIZE_CONFIG -pub max 용량 
    ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG - key 시리얼라이즈 
    ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG - value 시리얼라이즈

     

    저의 경우 KafkaTemplate을 이용했으며 해당 template을 통해 send를 할 경우 callback을 통해 성공여부를 확인이 가능하다 .

    해당 구조를 통해 실패 시 해당 value를 별도 테이블에 등록하여 재발행이 가능한 구조도 설계할 수 있다. 

     

    private  void failureCallback(String topic ,T value, Throwable exception) {
        recordInterfaceHistory(topic, value,null, exception);
    }

     

    sub 주요 config 

    ConsumerConfig.AUTO_OFFSET_RESET_CONFIG 파티션 재분배 시 어떤 데이터부터 분배를 할건지 
    ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG commit을 자동 or 수동 어떤걸로 할건지 
    ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG sub max 용량 
    ConsumerConfig.MAX_POLL_RECORDS_CONFIG record를 몇개씩 poll 할건지

     

    retry 

    private RetryTemplate retryTemplate() {
      RetryTemplate k = new RetryTemplate();
      k.setBackOffPolicy(BackOff기간);
      k.setRetryPolicy(몇번 재시도할지);
    }

     

    댓글

Designed by Tistory.