>Java >java지도 시간 >Kafka 메시지 승인 옵션

Kafka 메시지 승인 옵션

Karen Carpenter
Karen Carpenter원래의
2025-03-07 17:37:52538검색
Kafka 메시지 승인 옵션

Kafka는 성능과 신뢰성에 영향을 미치는 몇 가지 메시지 승인 옵션을 제공합니다. 이러한 옵션은 소비자가 메시지를 성공적으로 처리 한 브로커에 대한 소비자 신호를 제어합니다. 핵심 옵션은 다음과 같습니다.

    자동 승인 : 소비자는 특정 시간 간격 후 또는 특정 수의 메시지를 처리 ​​한 후 메시지를 자동으로 승인합니다. 이것은 높은 처리량이지만 신뢰성을 희생하는 가장 간단한 접근법입니다. 소비자가 승인하기 전에 충돌하는 경우, 메시지는 처리 된 것으로 간주되어 잠재적으로 데이터 손실로 이어집니다.
  • 매뉴얼 승인 : 소비자는 각 메시지를 또는 메소드를 사용하여 개별적으로 명시 적으로 인정합니다. 이것은 메시지가 명시 적 승인 후에 만 ​​소비되는 것으로 간주되므로 가장 높은 신뢰성을 제공합니다. 그러나 추가 조정이 필요한 추가 조정으로 인해 성능 오버 헤드가 제공됩니다. 특정 오프셋이 포함 된 수동 승인 :
  • 이렇게하면보다 세분화 된 제어가 가능합니다. 소비자는 수신 된 메시지 배치 내에서도 특정 오프셋을 인정할 수 있습니다. 이것은 합리적인 수준의 성능을 유지하면서 개별 메시지 처리 실패를 처리 할 수있는 유연성을 제공합니다. Kafka는 메시지 승인을 어떻게 처리하고 다른 승인 전략의 영향은 무엇입니까? consumer.commitSync() Kafka는 오프셋을 사용하여 메시지 소비를 추적합니다. 오프셋은 파티션 내 각 메시지에 대한 고유 식별자입니다. 소비자가 주제를 구독하면 특정 오프셋에서 시작하는 일련의 메시지를 수신합니다. 승인 전략은 소비자가 오프셋을 업데이트하는 방법과시기를 결정하여 브로커에게 해당 메시지를 처리했음을 나타냅니다.
      자동 승인 : 브로커는 구성된 시간 또는 메시지 수에 따라 오프셋을 자동으로 업데이트합니다. 자동 승인 전에 소비자가 실패하면 메시지가 손실됩니다. 이 전략은 데이터 손실이 발생하기 쉽지만 가장 높은 처리량을 제공합니다.
    • 수동 승인 (Sync) : 소비자는 를 명시 적으로 호출하여 오프셋을 업데이트합니다. 이것은 차단 작업입니다. 소비자는 다음 메시지 배치를 처리하기 전에 중개인의 확인을 기다립니다. 이것은 메시지 전달을 보장하지만 동기 특성으로 인한 성능에 영향을 미칩니다. 수동 승인 (async) : 소비자는 를 호출하여 소비자가 중개인의 승인을 기다리지 않고 메시지를 계속 처리 할 수 ​​있도록합니다. 이는 성능을 크게 향상 시키지만 비동기 커밋이 완료되기 전에 소비자가 충돌하면 데이터 손실 가능성을 도입합니다. 콜백은 잠재적 커밋 실패를 처리하는 데 사용될 수 있습니다.
    • 특정 오프셋이 포함 된 수동 승인 :
    • 이것은 가장 큰 제어 및 유연성을 제공합니다. 메시지 처리가 실패하면 소비자는 해당 오프셋을 인정하지 않으므로 나중에 재 처리 할 수 ​​있습니다. 이것은 모든 단일 메시지를 동기식으로 인정하는 성능 페널티없이 신뢰성을 제공합니다. 다른 Kafka 메시지 승인 옵션 간의 성능 트레이드 오프는 무엇입니까? consumer.commitSync() 성능 트레이드 오프는 주로 처리량과 신뢰성 사이에있다. 손실.
    • 수동 승인 (동기화) : 통화 차단으로 인한 처리량이 낮지 만 메시지 전달을 보장합니다. 이것은 종종 가장 느린 옵션입니다. 수동 승인 (async) : consumer.commitAsync() 처리량과 신뢰성 사이의 균형이 양호합니다. 비동기 특성은 동기식 접근 방식보다 성능이 향상되지만 동기식 승인에 비해 데이터 손실의 위험이 더 높습니다.
    • 특정 오프셋이 포함 된 수동 승인 :
    • 성능은 일반적으로 특정 오프셋 만 커밋되기 때문에 동기 커밋보다 낫습니다. 이 옵션은 처리량과 신뢰성 사이의 균형을 잘 제공합니다. 실제 성능은 개별 메시지 실패의 빈도에 따라 다릅니다. kafka 메시지 승인 옵션은 응용 프로그램의 특정 요구 사항 및 신뢰성 요구 사항에 가장 적합한가? 최상의 옵션은 애플리케이션의 요구 사항에 전적으로 의존합니다.데이터 손실이 허용되고 처리량이 높은 응용 분야의 경우 의 경우, 높은 처리량이 중요합니다 (예 : 로깅, 메트릭) : 자동 승인은 적합한 선택입니다.
      • 데이터 손실이 허용되지 않는 곳에 절대적인 신뢰성을 요구하는 응용 프로그램의 경우 : 재무 전송이 있습니다. 한계. 처리량과 신뢰성 사이의 균형이 필요한 응용 프로그램의 경우 (가장 일반적인 시나리오) :
      • 수동 비동기 승인 또는 적절한 오류 처리 또는 특정 오프셋을 포함한 수동 승인은 우수한 타협을 제공합니다. 메시지 처리 실패한 메시지 처리를 처리하기 위해 재 시도 메커니즘을 사용하는 것을 고려하십시오.
      • 가끔 메시지 처리 실패가있는 응용 프로그램의 경우 : 특정 오프셋이있는 수동 승인은 선택적 승인을 허용하여 성능을 최적화하면서 신뢰성을 확보하는 데 신뢰성을 보장하는 것은 올바른 인정 전략을 선택하는 데 중요합니다. 처리량과 신뢰성 사이의 상충 관계를 신중하게 고려하여 귀하의 요구를 가장 잘 충족시키는 옵션을 선택하십시오.

위 내용은 Kafka 메시지 승인 옵션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.