10.9.3.2. 소비자 그룹 오프셋 동기화
__consumer_offsets 주제는 각 소비자 그룹에 대해 커밋된 오프셋에 대한 정보를 저장합니다. 오프셋 동기화는 소스 클러스터의 소비자 그룹에 대한 소비자 오프셋을 대상 클러스터의 소비자 오프셋 주제로 주기적으로 전송합니다.
오프셋 동기화는 특히 활성/수동 구성에서 유용합니다. 활성 클러스터가 다운되면 소비자 애플리케이션은 패시브(standby) 클러스터로 전환하고 마지막으로 전송된 오프셋 위치에서 선택할 수 있습니다.
주제 오프셋 동기화를 사용하려면 체크포인트 커넥터 구성에 sync.group.offsets.enabled 를 추가하고 속성을 true 로 설정하여 동기화를 활성화합니다. 동기화는 기본적으로 비활성화되어 있습니다.
소스 커넥터에서 IdentityReplicationPolicy 를 사용하는 경우 Checkpoint 커넥터 구성에서도 구성해야 합니다. 이렇게 하면 미러링된 소비자 오프셋이 올바른 항목에 적용됩니다.
소비자 오프셋은 대상 클러스터에서 활성 상태가 아닌 소비자 그룹에 대해서만 동기화됩니다. 소비자 그룹이 대상 클러스터에 있는 경우 동기화를 수행할 수 없으며 UNKNOWN_MEMBER_ID 오류가 반환됩니다.
활성화하면 소스 클러스터의 오프셋 동기화가 주기적으로 수행됩니다. checkpoint 커넥터 구성에 sync.group.offsets.interval.seconds 및 emit.checkpoints.interval.seconds 를 추가하여 빈도를 변경할 수 있습니다. 속성은 소비자 그룹 오프셋이 동기화되는 빈도(초)와 오프셋 추적을 위해 내보낸 체크포인트의 빈도를 지정합니다. 두 속성의 기본값은 60초입니다. 기본적으로 10분마다 수행되는 refresh.groups.interval.seconds 속성을 사용하여 새 소비자 그룹의 점검 빈도를 변경할 수도 있습니다.
동기화는 시간 기반이므로 소비자가 수동 클러스터로 전환하면 메시지가 중복될 수 있습니다.
Java로 작성된 애플리케이션이 있는 경우 RemoteClusterUtils.java 유틸리티를 사용하여 애플리케이션을 통해 오프셋을 동기화할 수 있습니다. 유틸리티는 체크포인트 항목에서 소비자 그룹의 원격 오프셋을 가져옵니다.