4.8. 리밸런스 영향 최소화

그룹의 활성 소비자 간에 파티션 재조정은 다음과 같은 시간이 걸립니다.

  • 소비자는 오프셋을 커밋합니다.
  • 형성될 새로운 소비자 그룹
  • 그룹 멤버에 파티션을 할당할 그룹 리더
  • 그룹의 소비자는 할당을 받고 가져오기 시작합니다.

명확하게, 이 프로세스는 특히 소비자 그룹 클러스터를 롤링 재시작하는 동안 반복적으로 발생하는 경우 서비스 다운 타임을 늘립니다.

이 경우 정적 멤버십 개념을 사용하여 리밸런스 수를 줄일 수 있습니다. 리밸런싱은 소비자 그룹 멤버 간에 주제 파티션을 균등하게 할당합니다. 정적 멤버십은 지속성을 사용하므로 세션 시간 초과 후 소비자 인스턴스가 재시작 중에 인식됩니다.

소비자 그룹 조정자는 group.instance.id 속성을 사용하여 지정된 고유 ID를 사용하여 새 소비자 인스턴스를 식별할 수 있습니다. 다시 시작하는 동안 소비자에는 새 멤버 ID가 할당되지만 정적 멤버로서 동일한 인스턴스 ID로 계속되고 주제 파티션의 동일한 할당이 수행됩니다.

소비자 애플리케이션이 적어도 모든 max.poll.interval.ms 밀리초를 폴링하도록 호출하지 않으면 소비자는 실패한 것으로 간주되어 재조정이 발생합니다. 애플리케이션이 폴링에서 반환된 모든 레코드를 처리할 수 없는 경우 max.poll.interval.ms 속성을 사용하여 소비자의 새 메시지에 대한 폴링 간격을 밀리초 간 간격을 지정하여 재조정을 방지할 수 있습니다. 또는 max.poll.records 속성을 사용하여 소비자 버퍼에서 반환된 레코드 수에 대한 최대 제한을 설정할 수 있으므로 애플리케이션이 max.poll.interval.ms 제한 내의 더 적은 수의 레코드를 처리할 수 있습니다.

# ...
group.instance.id=UNIQUE-ID 1
max.poll.interval.ms=300000 2
max.poll.records=500 3
# ...
1
고유한 인스턴스 ID를 사용하면 새 소비자 인스턴스가 동일한 주제 파티션 할당을 받습니다.
2
간격을 설정하여 소비자가 계속 메시지를 처리하고 있는지 확인합니다.
3
소비자에서 반환된 처리된 레코드 수를 설정합니다.