Closed junhyeokpark1213 closed 2 years ago
안녕하세요 독자님, 리더에포크는 리더가 변경될때마다 하나씩 증가되고, 리더가 변경되기 전 리더에포크와 커밋된 오프셋 정보도 같이 저장합니다. 문의주신 리더에포크1에서 오프셋이 1증가한 이유를 말씀드리겠습니다. 리더에포크 실습을 위해 리더에포크가 1인 상태에서, 프로듀서가 하나의 메시지를 전송한 후, 브로커를 강제 종료하여 리더에포크를 1->2로 증가시켰습니다. 브로커 내부적으로는 리더에포크와 오프셋 정보를 기록하게 됩니다. leader-epoch-checkpoint 파일에서 아래의 내용을 확인할 수 있습니다. 0(리더에포크) 0(오프셋) 1(리더에포크) 1(오프셋) 문의하셨던 부분에 대해 이해가 되셨기를 바라고, 이해가 안되시는 부분이 있으시면 추가 문의 부탁드립니다. 감사합니다.
134p 리더에포크 1인 상태에서 프로듀서가 하나의 메시지를 또 전송한 부분은 안 나와 있습니다. 리더에포크 1인 상태에서 그대로 브로커 1을 강제 종료로 넘어갑니다,, 아니면 업데이트 과정에서 전 오프셋과 리더에포크 정보가 업데이트 되면서 오프셋이 증가하는건 아닌거죠??
네 독자님, P134에서 콘솔 프로듀서를 이용해 메시지를 전송한 부분이 있는데 아무래도 놓치신 것 같습니다. 제가 페이지별로 순서대로 말씀드리자면, P133 그림(메시지가 없는 상태)의 리더에포크 1인 상태에서, P134 상단에서 콘솔 프로듀서를 이용해 메시지를 하나 전송했습니다. P134 그림에서는 리더 변화가 일어나지 않았으므로 여전히 리더에포크1이고, 메시지가 하나 추가된 상태입니다. P135에서 리더에포크 변화를 주기 위해 강제로 리더를 종료시켰습니다. 리더가 종료되면서 리더에포크 1 -> 2로 변경되었습니다. 리더에포크 변경이 일어난 후 체크포인트를 확인해보면, 리더에포크1 일때 오프셋 1증가한 부분을 확인할 수 있습니다. 문의 주셨던 궁금증이 해소 되었으면 합니다. ^^
넵 제가 앞에서 배웠던 내용 기반으로 말씀드리자면 기존 p133 메시지가 없는 상태의 리더에포크 1인 상태에서 , P134 상단에 콘솔 프로듀서로 MESSAGE1를 보내는거를 확인을 했습니다! 그리고 나서 메시지가 하나 추가가 되어 오프셋 번호 0번에 message1번을 저장한것이 맞지 않나요? 앞에서 오프셋 번호는 0번부터 저장한다고 배웠구요 그리고 나서 리더에포크 변화를 위해 강제로 리더를 종료 후 리더에포크 1 ->2로 변경되었고 체크포인트 같은 경우 마지막 저장된 오프셋 번호는 0번이었기에 리더에포크 번호만 바뀔줄 알았는데 오프셋 번호도 1로 증가되어서,, 그랬습니다..
네 독자님, 문의 주신 내용을 다시 한번 찬찬히 훝어보니 제가 쓴 표현이 명확하지 않았던 것 같습니다. '커밋된 오프셋 번호'라는 표현은 '커밋 후 시작할 오프셋 번호'로 표기하는 게 맞을 것 같습니다. 말씀하신 사항은 도서 정오표( https://www.onlybook.co.kr/entry/kafka2-errata )에 등록했습니다. 독자님 덕분에 더욱 잘 정리할 수 있어서 다행입니다. 문의 주셔서 감사드리며 혹시 또 잘 이해되지 않는 부분이 있으시다면 언제든 답글 주시거나 새 이슈 등록해주시면 답변 드리겠습니다. 꼼꼼히 읽어주셔서 정말 감사합니다.
네 감사합니다.
P134 리더에포크 설명 부분 중 브로커1과 3이 있었고 현재 오프셋0번에 message1번이 저장되어 있는 그림 4-18을 보며 리더에포크체크포인트를 cat으로 본 결과 리더에포크번호 1과 리더에포크 번호 0 오프셋 번호 0 으로 되어있는걸 확인이 됩니다. 여기 부분까지는 이해가 되는데 이해가 안되는 부분이 브로커1을 죽이고 브로커3이 새 리더파티션으로 되었을때 다시한번 체크포인트를 확인해보면 리더에포크 번호가 2 , 리더에포크 번호 1 오프셋번호 1로 변경이 되어있는걸 확인이 되는데 오프셋 번호는 왜 1로 바뀌는건가요 ? 그림 예제에서는 새리더 파티션이 프로듀서한테 메시지 요청을 해서 1로 바뀐건가요 ? 그림 예제에는 그런 말이 없이 바로 1로 바뀌어 있어 헷갈립니다.