6.3 스태틱 멤버십
- 하드웨어 등의 이유로 컨슈머 그룹 내의 컨슈머들을 순차적으로 재시작해야할 때가 있다.
- 하지만 하트비트, 세션 타임아웃 등으로 인해 리밸런싱이 발생한다.
- 리밸런싱 동안에 컨슈머들은 일시 중지한다.
- 10개 컨슈머가 있다면 최소 10번 이상의 리밸런싱이 발생할 것
- 컨슈머 그룹은 일반적으로 각 컨슈머 식별을 위해 엔티티 ID를 부여한다.
- 컨슈머 그룹 내에서 임시로 사용되는 값
- 컨슈머가 재시작되면 동일한 컨슈머임에도 새 컨슈머로 인식해 새 ID가 부여되어 버린다.
- 이로 인해 리밸런싱이 발생하는 것
- 카프카는 이러한 불필요한 리밸런싱을 방어하기 위해 2.3 버전부터 스태틱 멤버십 개념을 도입했다.
- 컨슈머가 재시작 등으로 그룹에서 나갔다 들어와도 리밸런싱이 일어나지 않게 한다.
- 컨슈머가 다시 합류해도 그룹 코디네이터가 기존 구성원임을 인식할 수 있게 하는 것
- 스태틱 멤버십이 적용된 컨슈머는 그룹에서 떠날 때 코디네이터에게 알리지 않기에 불필요한 리밸런싱도 발생하지 않는다.
- 떠난 컨슈머가 다시 합류해도 기존 구성원임을 ID를 통해 식별하고 리밸런싱을 하지 않는다.
group.instance.id
- 스태틱 멤버십을 적용하기 위한 옵션으로 기본값은 null이다.
- 인스턴스별로 고유한 값을 설정하면 스태틱 멤버십이 적용된다.
- ex)
consumer-hostname1
등
- 스태팁 멤버십을 적용한다면
session.timeout.ms
를 기본값(10000)보다는 크게 조정해야 한다.
- 스태틱 멤버십으로 인한 리밸런싱이 사라지더라도 하트비트를 받지 못해 발생하는 리밸런싱은 막을 수 없다.
- 컨슈머 재시작 시간을 고려하여 더 큰 값으로 조정할 필요가 있다.