기술나눔

카프카 프로듀서

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

생산자

생산자는 메시지를 생성한 후 Kafka에 전달하는 일을 담당합니다.
여기에 이미지 설명을 삽입하세요.

로드 밸런싱

  1. 폴링 전략.
  2. 무작위 전략.
  3. 키에 따라 해시합니다.

Kafka의 기본 파티셔닝 전략: 키가 지정되면 동일한 키를 가진 메시지가 동일한 파티션으로 전송됩니다(파티션이 정렬됨). 키가 지정되지 않으면 폴링 전략이 사용됩니다.

메세지를 보내다

acks는 메시지가 성공적으로 기록되었다고 간주하기 전에 생성자가 메시지를 수신해야 하는 파티션 복제본 수를 지정합니다.

세 가지 방법에는 장단점이 없으며 대신 현지 상황에 따라 적절한 전략을 선택해야 합니다. 성능과 안정성 사이에는 균형이 있습니다.

메시지를 보내는 방법에는 3가지가 있습니다.

보내고 잊어버리세요.

acks = 0。
생산자는 메시지를 보낸 후 브로커의 응답을 기다리지 않습니다. 대부분의 경우 Kafka는 가용성이 높고 생산자가 자동으로 재전송을 시도하는 메커니즘을 갖고 있기 때문에 메시지가 성공적으로 전달될 수 있습니다. 그러나 재시도할 수 없는 오류나 시간 초과가 발생하면 메시지가 손실되고 애플리케이션은 어떤 정보나 예외도 수신하지 않습니다.
동일한 구성 환경에서 acks를 0으로 설정하면 최대 처리량을 얻을 수 있습니다.

비동기적으로 보내기

acks=1, 기본값.
생산자가 메시지를 보낸 후 파티션의 리더 복사본이 메시지를 성공적으로 쓰는 한 서버로부터 성공적인 응답을 받게 됩니다.

  • 리더 복사본이 충돌하고 새 리더 복사본이 다시 선택되는 경우와 같이 메시지를 리더 복사본에 쓸 수 없는 경우 생성자는 메시지 손실을 방지하기 위해 오류 응답을 받게 됩니다. 메시지.
  • 메시지가 리더 복사본에 기록되고 성공적인 응답이 생산자에게 반환되고 다른 팔로어 복사본이 가져오기 전에 리더 복사본이 충돌하는 경우 해당 메시지가 해당 메시지에 존재하지 않기 때문에 이때 메시지는 여전히 손실됩니다. 새로 선출된 지도자 사본.
    acks는 메시지 안정성과 처리량 간의 절충안인 1로 설정됩니다.
동기적으로 보내기

acks = -1 또는 acks = 모두.
생산자는 메시지를 보낸 후 서버로부터 성공적인 응답을 받기 전에 ISR의 모든 복제본이 메시지를 성공적으로 쓸 때까지 기다려야 합니다.
동일한 구성 환경에서 acks를 -1(all)로 설정하면 가장 강력한 안정성을 얻을 수 있습니다. 그러나 이것이 메시지가 신뢰할 수 있어야 한다는 의미는 아닙니다. 왜냐하면 ISR에는 리더 복사본만 있을 수 있고 이는 acks=1 상황으로 변질될 수 있기 때문입니다.