리더가 둘이었다 · 받은 것과 확정한 것 · 퀴즈
퀴즈: 로그와 커밋
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
리더가 클라이언트 값을 자기 로그에 적었다. 이 시점에 클라이언트에게 성공을 돌려줘도 되는가?
- 된다 — 리더의 로그가 곧 클러스터의 진실이다
- 된다 — 팔로워는 어차피 리더를 따라오게 되어 있다
- 안 된다 — 과반이 같은 항목을 가질 때까지는 사라질 수 있다
- 안 된다 — 모든 팔로워가 받을 때까지 기다려야 한다
팔로워의 로그가 [임기1, 임기1, 임기1] 이고, 리더가 prev_index=1, prev_term=1 과 함께 임기 1의 항목 하나를 보냈다. 이미 같은 항목이 그 자리에 있다면?
- 그 자리부터 뒤를 모두 자르고 새로 붙인다
- 거절하고 리더가 한 칸 물러나게 한다
- 로그를 통째로 비우고 리더에게 전체를 다시 요청한다
- 그대로 두고 뒤도 자르지 않는다
리더의 임기는 3이고 로그 2번 자리에는 임기 1의 항목이 있다. 그 항목이 과반에 복제됐다면 커밋 번호를 2로 올려도 되는가?
- 된다 — 과반이 가졌으면 그것으로 충분하다
- 된다 — 임기와 커밋은 별개의 값이다
- 안 된다 — 앞 임기의 항목만으로는 커밋하지 않는다
- 안 된다 — 커밋은 팔로워가 판단할 일이다
선거 제한(후보의 로그가 최신이어야 표를 준다)에서 '최신' 을 가르는 기준은?
- 로그의 길이만 본다 — 긴 쪽이 최신이다
- 마지막 항목의 임기를 먼저 보고, 같을 때만 길이로 가른다
- 커밋 번호가 큰 쪽이 최신이다
- 마지막으로 값을 쓴 시각이 늦은 쪽이 최신이다
팔로워가 재시작해 로그가 비었다. 리더는 이 노드를 어떻게 따라잡게 하는가?
- 그 노드를 클러스터에서 빼고 새 멤버로 다시 넣는다
- 팔로워가 자기 로그의 마지막 자리를 리더에게 알려 주고 그 뒤만 받는다
- 리더가 보내는 자리 번호를 한 칸씩 뒤로 물리며 맞는 지점을 찾는다
- 과반이 이미 있으므로 그 노드는 그대로 두어도 된다
etcd 에 쓰기를 보냈는데 응답이 timeout 이었다. 이 쓰기의 상태는?
- 확실히 실패했다 — timeout 은 롤백을 뜻한다
- 성공했을 수도 실패했을 수도 있다 — 응답만 유실됐을 수 있다
- 확실히 성공했다 — 과반에 닿은 뒤라 응답이 늦은 것이다
- 다음 읽기가 성공하면 그때 결정된다