주문이 두 번 도착했고 한 번은 사라졌다 · 무엇을 남기고 무엇을 버리나 · 퀴즈
퀴즈: 토픽 설정
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
`retention.ms=60000` 을 주었는데 5분이 지나도 옛 레코드가 남아 있다. 문서로 설명되는 원인은?
- retention.ms 는 밀리초가 아니라 초 단위다
- 삭제는 세그먼트 단위이고 활성 세그먼트는 지워지지 않으며, 검사도 log.retention.check.interval.ms(기본 5분)마다만 한다
- cleanup.policy 를 compact 로 바꿔야 시간 보존이 동작한다
- retention.bytes 가 -1 이면 retention.ms 가 무시된다
로그 압축이 보장하는 것으로 설계 문서에 있는 것은?
- 압축 뒤 오프셋이 0 부터 다시 매겨져 빈틈이 없다
- 같은 키의 레코드가 하나로 합쳐지며 값은 모든 갱신을 이어 붙인 것이다
- 순서는 바뀌지 않고 오프셋도 바뀌지 않으며, 처음부터 읽으면 모든 키의 최종 상태를 본다
- 압축된 토픽은 시간 보존이 함께 적용되지 않는다
압축 토픽에서 키를 지우려면 무엇을 보내는가?
- 값이 null 인 레코드(tombstone) — 이전 레코드를 지우게 하고 delete.retention.ms 뒤 스스로 사라진다
- 값이 빈 문자열인 레코드 — 브로커가 삭제로 해석한다
- kafka-configs.sh 로 그 키를 delete-config 에 적는다
- 키 없는 레코드 — 직전 키의 삭제로 처리된다
복제 계수 3, `min.insync.replicas=2`, `acks=all` 인 토픽에서 ISR 이 리더 하나뿐이 됐다. 프로듀서의 쓰기는?
- 리더가 쓰고 성공으로 답한다 — 팔로워는 나중에 따라잡는다
- NotEnoughReplicas 계열 예외로 실패한다 — ISR 이 최소 수보다 적다
- acks 가 자동으로 1 로 내려가 성공한다
- 브로커가 ISR 밖의 복제본을 리더로 뽑아 계속 쓴다
`min.insync.replicas` 의 기본값과, 그 값이 뜻하는 것은?
- 3 — 복제 계수와 같아 언제나 전부 확인한다
- 2 — 과반 확인이 기본이다
- 1 — 리더 하나만 확인하면 되므로 acks=all 이어도 팔로워 확인은 보장되지 않는다
- 0 — acks 설정이 없으면 확인을 기다리지 않는다
실행 중인 토픽의 `retention.ms` 를 바꾸는 방법으로 운영 문서가 적은 것은?
- 토픽을 삭제한 뒤 `--create --config retention.ms=<값>` 으로 다시 만들어 설정을 준다
- 브로커의 server.properties 에 `log.retention.ms=<값>` 을 적고 브로커를 재시작한다
- `kafka-topics.sh --alter --topic <토픽> --config retention.ms=<값>` 으로 토픽 도구에서 바꾼다
- `kafka-configs.sh --entity-type topics --entity-name <토픽> --alter --add-config retention.ms=<값>`