๐Ÿ—ณ๏ธ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Raft ๋…ผ๋ฌธ ์ฝ๊ธฐ - 1. ๋ˆ„๊ฐ€๋ˆ„๊ฐ€ ๋ฆฌ๋”๊ฐ€ ๋˜๋‚˜

Broccolismยท2024๋…„ 9์›” 19์ผ
1
post-thumbnail

raft

์ด๋ฒˆ ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” In Search of an Understandable Consensus Algorithm
(Extended Version)
๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‹ค์Œ ๋ถ€๋ถ„์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค:

- Raft ๊ฐœ์š”: Raft๋Š” ์ผ๊ด€๋œ ๋ถ„์‚ฐ ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋™์ž‘์„ ๋ฆฌ๋” ์„ ์ถœ, ๋กœ๊ทธ ๋ณต์ œ, ์•ˆ์ „์„ฑ 3๊ฐ€์ง€ ์ž‘์€ ์ผ๋กœ ๋‚˜๋ˆ„์–ด ์ •๋ฆฌํ•œ๋‹ค.
- ๋ฆฌ๋” ์„ ์ถœ: Raft๋Š” ํˆฌํ‘œ ๊ณผ์ •์„ ํ†ตํ•ด ๋กœ๊ทธ ๋ณต์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์‹œ์Šคํ…œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ๋ฆฌ๋”๋ฅผ ์„ ์ถœํ•œ๋‹ค.

Raft ๊ฐœ์š”

๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Raft ๋Š” ๋ณต์ œ๋œ ๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. Raft ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ ๋ชจ๋“œ์—์„œ๋Š” 1๊ฐœ์˜ ๋ฆฌ๋”๊ฐ€ write/read ์š”์ฒญ์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๊ณ , N๊ฐœ์˜ ํŒ”๋กœ์›Œ๊ฐ€ ๋กœ๊ทธ๋ฅผ ๋ณต์ œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰, ํŒ”๋กœ์›Œ๋Š” ๋ฆฌ๋”์™€ ๋‹ค๋ฅธ ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ์ฃฝ์—ˆ์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•œ ๋ฐฑ์—… ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค. Raft ๋Š” ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‘๋‹ต ์ง€์—ฐ์„ ์•ฝ๊ฐ„ ํฌ๊ธฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. Kafka (KRaft ๋ฒ„์ „), MongoDB, RabbitMQ ๋“ฑ์—์„œ Raft ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

์ œ 1 ๋ชฉํ‘œ: ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.

Raft ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 2๊ฐ€์ง€ ๋ชฉํ‘œ๊ฐ€ ์žˆ๋‹ค. 1์ˆœ์œ„ ๋ชฉํ‘œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ณ , 2์ˆœ์œ„ ๋ชฉํ‘œ๋Š” ์‹ค์ œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋Š”๋ฐ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์™œ โ€˜์‹ค์šฉ์ ์ž„โ€™๋ณด๋‹ค โ€˜์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€โ€™์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋ƒ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด, ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์›Œ์„œ ์ œ๋Œ€๋กœ ์จ๋จน๋Š”๋ฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Raft ์™€ ๋น„๊ต๋˜๋Š” Paxos ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ทธ๋ ‡๋‹ค.

์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋‘๊ฐ€์ง€ ์ „๋žต์„ ์‚ฌ์šฉํ–ˆ๊ณ  Raft ๊ฐ€ ํƒ„์ƒํ–ˆ๋‹ค.

  • Divide and Conquer
  • ๊ณ ๋ คํ•ด์•ผ ํ•  ์ƒํƒœ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ™”

ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

Divide and Conquer

์ปดํ“จํ„ฐ ๊ณตํ•™ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ•ญ์ƒ ๋งˆ์ฃผ์น˜๋Š” ๊ทธ divide and conquer ๊ฐ€ ๋งž๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” โ€˜ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜โ€™์ด๋ผ๋Š” ๋ณต์žกํ•ด๋ณด์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค์Œ 3๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ•˜๋‚˜์”ฉ ์ •๋ณตํ•˜๋Š” ๊ณผ์ •์ด ๋‚˜์˜จ๋‹ค.

  • Leader election: ์ง€๊ธˆ ์กด์žฌํ•˜๋Š” ๋ฆฌ๋”์— ์žฅ์• ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋ฐ˜๋“œ์‹œ ์ƒˆ๋กœ์šด ๋ฆฌ๋”๊ฐ€ ์„ ํƒ๋˜์–ด์•ผํ•œ๋‹ค.
  • Log replication: ๋ฆฌ๋”๋Š” ๋ฐ˜๋“œ์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋ฅผ ๋ฐ›๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ด๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๋กœ๊ทธ๋„ '๋™์˜'ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.
  • Safety: Raft ์˜ ์•ˆ์ „์„ฑ์€ State Machine Safety ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜ค๋ฉฐ, ์ด ์„ฑ์งˆ์€ ๋ฆฌ๋” ์„ ์ถœ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ ๋ คํ•ด์•ผ ํ•  ์ƒํƒœ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ™”

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” โ€˜์ƒํƒœโ€™๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „์ฒด์ ์ธ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด โ€˜๋ฆฌ๋” ๋…ธ๋“œ 1๊ฐœ๊ฐ€ ์ฃฝ์—ˆ์Œโ€™, โ€˜ํŒ”๋กœ์›Œ ๋…ธ๋“œ 1๊ฐœ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฆฌ๋”, ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ์ฃฝ์—ˆ์Œโ€™, โ€˜๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์ด ๋๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์ž์‹ ์ด ๋ฆฌ๋”๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚จโ€™ ๊ฐ™์€๊ฒŒ ์žˆ๋‹ค. (๋ณด๊ธฐ๋งŒ ํ•ด๋„ ์žฌ๋ฐŒ๋Š” ๋งˆ์Œ์ด ์•„ํ”ˆ ์ƒํ™ฉ!)

Raft ์—์„œ๋Š” ์ €๋Ÿฐ ์‹œ๋‚˜๋ฆฌ์˜ค ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๋„๋ก ์ƒํ™ฉ์„ ์‹ฌํ”Œํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ๋‹ค. ์ €๋Ÿฐ ์ƒํ™ฉ์„ ์™„์ „ํžˆ ๋ฐฉ์ง€ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ๋ณต๊ตฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. ๊ทธ ์˜ˆ์‹œ ์ค‘ ํ•˜๋‚˜๋กœ โ€˜๋ฆฌ๋”์—๊ฒŒ ๋ชจ๋“ ๊ฑธ ๋งก๊ธฐ๋Š”โ€™ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. P2P ๊ฐ€ ์•„๋‹Œ ๋ฆฌ๋”-ํŒ”๋กœ์›Œ ๊ตฌ์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ ๋ณต์ œ ๊ณผ์ •์ด ๊ฐ„๊ฒฐํ•ด์ง„ ๊ฒƒ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”? ์“ฑ ํ›‘์–ด๋ณด๊ธฐ

Raft ์˜ ์ „๋ฐ˜์ ์ธ ๋™์ž‘ ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. ํ›‘์–ด๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ์งง๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ฉดโ€ฆ

  • Raft ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 5๊ฐœ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ
  • ๊ฐ ์„œ๋ฒ„๋Š” ๋‹ค์Œ 3๊ฐ€์ง€ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๋ฅผ ํ•จ: ๋ฆฌ๋”, ํŒ”๋กœ์›Œ, ํ›„๋ณด
    • ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ ํ•ญ์ƒ 1๊ฐœ์˜ ๋ฆฌ๋”๋งŒ ์กด์žฌ
      • ๋ฆฌ๋”๊ฐ€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
        • ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒ”๋กœ์›Œ์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค๋ฉด ํŒ”๋กœ์›Œ๋Š” ๋ฆฌ๋”๋กœ ๊ทธ ์š”์ฒญ์„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
    • ํŒ”๋กœ์›Œ๋Š” ์ˆ˜๋™์ : ๋ฆฌ๋”๋‚˜ ํ›„๋ณด์˜ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ธฐ๋งŒ ํ•˜๊ณ  ์Šค์Šค๋กœ ์š”์ฒญ์„ ๋งŒ๋“ค์–ด๋‚ด์ง€ ์•Š์Œ.
    • ํ›„๋ณด๋Š” ์ƒˆ๋กœ์šด ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์„ ์œ„ํ•œ ์—ญํ• 
  • Raft ์—์„œ๋Š” ์‹œ๊ฐ„์„ ์ž„์˜์˜ ๊ธธ์ด๋กœ ์ชผ๊ฐœ์–ด term ์œผ๋กœ ๊ด€๋ฆฌ. ์ฆ‰, ์ผ์ข…์˜ logical clock,
    • ์ƒˆ๋กœ์šด term ์˜ ์‹œ์ž‘ ์‹œ์ : ๋ฆฌ๋” ์„ ์ถœ์ด ์‹œ์ž‘๋  ๋•Œ
    • term ์ด ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ 
      • ์ƒˆ term ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „
      • ํˆฌํ‘œ์—์„œ ๋ฆฌ๋”๋ฅผ ์„ ์ถœํ•˜์ง€ ๋ชปํ–ˆ์„ ๋•Œ
    • ์ฆ‰, ํ•˜๋‚˜์˜ term ์—๋Š” ์ตœ๋Œ€ 1๊ฐœ (!= ์ •ํ™•ํžˆ 1๊ฐœ)์˜ ๋ฆฌ๋”๊ฐ€ ์กด์žฌ
  • ๊ฐ ์„œ๋ฒ„๋Š” ์ž์‹ ์˜ current term ์„ ๊ฐ–๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ์™€ ํ†ต์‹ ํ•  ๋•Œ ํ•ญ์ƒ ์ด๊ฑธ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.
    • ๋‹ค๋ฅธ ์„œ๋ฒ„๋ณด๋‹ค ์ž‘์€ term ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋Š” ๊ทธ๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ
    • ๋ฆฌ๋”๊ฐ€ ์ž์‹ ์˜ term ์ด ๋‹ค๋ฅธ ์„œ๋ฒ„๋ณด๋‹ค ์ž‘๋‹ค๋Š”๊ฑธ ์ธ์ง€ํ•˜๋ฉด ์ฆ‰์‹œ ํŒ”๋กœ์›Œ ์—ญํ• ๋กœ ๋Œ์•„๊ฐ.
    • ์ž์‹ ์˜ term ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค๋ฉด ํ•ด๋‹น ์š”์ฒญ์€ ๋ฌด์‹œ
  • Raft ์—์„œ ์„œ๋ฒ„๋ผ๋ฆฌ์˜ ํ†ต์‹ ์€ RPC ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด ์ง
    • ๋งŒ์•ฝ ์‹œ๊ฐ„ ๋‚ด์— ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๊ณ„์† ์žฌ์ „์†ก
    • RPC ์ „์†ก์€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

โ€ฆ ๋Œ€๋žต ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. ์ด๋ฒˆ์—๋Š” Raft ๋…ธ๋“œ ์ค‘์—์„œ ํ•ต์‹ฌ ์—ญํ• ์„ ๋งก๊ณ  ์žˆ๋Š” ๋ฆฌ๋” ๋…ธ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ ์ถœํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๋ฆฌ๋” ์„ ์ถœ์€ divide and conquer ๋ฅผ ํ†ตํ•ด ์ฐพ์€ 3๊ฐ€์ง€ ๋ฏธ์…˜ ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋„ ํ•˜๋‹ค.

๋ฆฌ๋” ์„ ์ถœ

์–ธ์ œ, ์–ด๋–ป๊ฒŒ, ์™œ ํ•˜๋Š”๊ฐ€?

Why?

๊ฐ€์žฅ ์‰ฌ์šด ๋‹ต๋ณ€๋ถ€ํ„ฐ ํ•ด๋ณด์ž. ์™œ ํ•˜๋Š”๊ฐ€? ๋ฆฌ๋” ์—ญํ•  ๋…ธ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ณ  ๋กœ๊ทธ ๋ณต์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, Raft ์—์„œ P2P๊ฐ€ ์•„๋‹Œ ๋ฆฌ๋”-ํŒ”๋กœ์›Œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

When?

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฆฌ๋” ์„ ์ถœ์„ ์–ธ์ œ ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ์ง๊ด€์ ์œผ๋กœ ๋Œ€๋‹ตํ•˜๊ธฐ๋Š” ์‰ฝ๋‹ค. โ€˜๋ฆฌ๋”๊ฐ€ ์—†์„ ๋•Œ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋งจ ์ฒ˜์Œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ๋‚˜ ์‚ด์•„์žˆ๋˜ ๋ฆฌ๋”์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œโ€™์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์•Œ์•„์ฑŒ ์ˆ˜ ์žˆ์„๊นŒ?

๋จผ์ € ๋งจ ์ฒ˜์Œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฆฌ๋”๋ฅผ ์„ ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‰ฝ๋‹ค. ์‚ฌ์‹ค ์„ ์ถœ ๊ณผ์ •์ด ํ•„์š”์—†๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์ดˆ๊ธฐ ์„ค์ •๊ฐ’์— ์–ด๋–ค ๋…ธ๋“œ๊ฐ€ ๋ฆฌ๋”๊ฐ€ ๋ ์ง€ ์…‹ํŒ…ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌธ์ œ๋Š” ๊ทธ ๋‹ค์Œ์ด๋‹ค. ์ž˜ ๋™์ž‘ํ•˜๋˜ ๋ฆฌ๋” ๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค๋Š” ์‚ฌ์‹ค์„ โ€˜์ž๋™์œผ๋กœโ€™ ์•Œ์•„์ฑ„๊ณ  โ€˜์ž๋™์œผ๋กœโ€™ ์„ ๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

๋ฆฌ๋” ์„ ์ถœ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด heartbeat ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ์ž์‹ ์ด ์‚ด์•„์žˆ์Œ์„ ๋ชจ๋“  ํŒ”๋กœ์›Œ์—๊ฒŒ ์ผ์ •ํ•œ ์ฃผ๊ธฐ๋กœ ์ „์†กํ•œ๋‹ค. ๋…ธ๋“œ ๊ฐ„ ํ†ต์‹ ์€ RPC ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ณ‘๋ ฌ ์ „์†กํ•œ๋‹ค๊ณ  ํ•˜์˜€์œผ๋‹ˆ ์ด heartbeat ๋„ RPC ๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ „์†กํ•œ๋‹ค.(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋Š๋ฆฌ๋‹ค!) ์ด RPC ๋ฅผ AppendEntries RPC ๋ผ๊ณ  ํ•˜์ž. ๋ฆฌ๋”๋Š” ๋‚ด์šฉ๋ฌผ์ด ๋น„์–ด์žˆ๋Š” ๋นˆ AppendEntries RPC ๋ฅผ ํŒ”๋กœ์›Œ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

ํŒ”๋กœ์›Œ๋Š” ๋ฆฌ๋”๊ฐ€ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„๋ก heartbeat ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฆฌ๋” ๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜๊ณ  ์ƒˆ ๋ฆฌ๋”๋ฅผ ๋ฝ‘๊ธฐ ์œ„ํ•œ ํˆฌํ‘œ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ์ด ๋•Œ โ€˜์ผ์ • ์‹œ๊ฐ„โ€™์„ election timeout ์ด๋ผ๊ณ  ํ•œ๋‹ค. Election timeout ์ด ๋ฐ”๋กœ ๋ฆฌ๋” ์„ ์ถœ์„ ์œ„ํ•œ ํŠธ๋ฆฌ๊ฑฐ์ธ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด election timeout ์€ ์–ด๋–ป๊ฒŒ ์ •ํ• ๊นŒ? ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ฆฌ๋”๊ฐ€ ๋ฉ€์ฉกํ•˜๊ฒŒ ์‚ด์•„์žˆ๋Š” ์ƒํ™ฉ๊ณผ ์žฅ์• ๊ฐ€ ์ƒ๊ธด ์ƒํ™ฉ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์•„์„œ ์ •ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ž˜ ์‚ด์•„์žˆ๋Š” ๋ฆฌ๋”๊ฐ€ ๋ณด๋‚ธ AppendEntries RPC(heartbeat) ๊ฐ€ ํŒ”๋กœ์›Œ์—๊ฒŒ ๋ฏธ์ฒ˜ ๋„๋‹ฌํ•˜๊ธฐ ์ „์— election timeout ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ณค๋ž€ํ•˜๋‹ค. ๋˜ํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ํŒ”๋กœ์›Œ๊ฐ€ ๋™์ผํ•œ election timeout ๊ฐ’์„ ๊ฐ€์ ธ์„œ ๋™์‹œ์— ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•ด์„œ๋„ ์•ˆ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‘ ํŒ”๋กœ์›Œ๊ฐ€ ๋™์‹œ์— ์„ ๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ  ์„œ๋กœ์—๊ฒŒ ํˆฌํ‘œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋“ฑ ๋ณต์žกํ•œ ์ƒํ™ฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

Raft ์—์„œ๋Š” ์•ž์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ตœ๋Œ€ํ•œ ์‹ฌํ”Œํ•œ ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค. ๋žœ๋ค์œผ๋กœ ๊ฐ ๋…ธ๋“œ๋ณ„ election timeout ์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋žœ๋ค๊ฐ’์€ ์ƒˆ term ์ด ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ๋ฐ”๋€๋‹ค. ๊ฐ€๋Šฅํ•œ 1๊ฐœ์˜ ์„œ๋ฒ„๋งŒ election timeout ์ด ๋ฐœ์ƒํ•˜๋„๋กํ•˜์—ฌ split vote ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค.

๋ฌผ๋ก  ์ด ๋•Œ ๋žœ๋ค ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ์ •ํ•ด๋†“๋Š”๋‹ค. ๋ฆฌ๋”๊ฐ€ ๋ณด๋‚ธ AppendEntries RPC(heartbeat) ๊ฐ€ ํŒ”๋กœ์›Œ์—๊ฒŒ ๋„๋‹ฌํ•  ์ •๋„์˜ ์‹œ๊ฐ„์€ ๋ฒŒ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ๊ณ ์ •๋œ ๊ฐ’์˜ election timeout ์„ ์ง€์ •ํ•˜๋ฉด ์ž๊พธ ์ฝ”๋„ˆ ์ผ€์ด์Šค๊ฐ€ ์ƒ๊ฒจ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณต์žกํ•ด์กŒ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, ํŒ”๋กœ์›Œ๊ฐ€ ์„ ๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ ๊ทธ ์‹œ์ ์€ ๋ฆฌ๋”๊ฐ€ ๋ณด๋‚ธ heartbeat ์‹ ํ˜ธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ์ฑ„ ์ž์‹ ์˜ election timeout ์ด ์ง€๋‚ฌ์„ ๋•Œ์ด๋‹ค.

How?

์„ ๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ๋ฐ”๋กœ โ€˜Quorum ์ •์กฑ์ˆ˜โ€™ ๊ฐœ๋…์ด๋‹ค. ์ •์กฑ์ˆ˜๋Š” ์ œ์•ˆ์ด ํ•ฉ์˜๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ์— ์ฐฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด ๋…ธ๋“œ๊ฐ€ 5๊ฐœ์ด๊ณ  ์ •์กฑ์ˆ˜๊ฐ€ 2์ผ ๋•Œ, โ€˜1๋ฒˆ ๋…ธ๋“œ๊ฐ€ ๋ฆฌ๋”๋‹ค.โ€™ ๋ผ๋Š” ์ œ์•ˆ์— ๋Œ€ํ•ด ์ตœ์†Œ 2๊ฐœ ๋…ธ๋“œ๋งŒ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์ ธ๋„ ๋ชจ๋“  ๋…ธ๋“œ๋Š” 1๋ฒˆ ๋…ธ๋“œ๊ฐ€ ๋ฆฌ๋”๋ผ๊ณ  ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ •์กฑ์ˆ˜์˜ ์ค‘์š”์„ฑ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์ „์ฒด ๋…ธ๋“œ๊ฐ€ 5๊ฐœ, ์ •์กฑ์ˆ˜๊ฐ€ 2๋ผ๋ฉด ์ด์ƒํ•œ ์ƒํ™ฉ์ด ๋ฒŒ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. 1๋ฒˆ๊ณผ 2๋ฒˆ์ด โ€˜1๋ฒˆ์ด ๋ฆฌ๋”๋‹คโ€™์— ์ฐฌ์„ฑํ•˜๊ณ  3๋ฒˆ๊ณผ 4๋ฒˆ์ด โ€˜3๋ฒˆ์ด ๋ฆฌ๋”๋‹คโ€™์— ์ฐฌ์„ฑํ–ˆ๋‹ค๋ฉด โ€˜๋ฆฌ๋”๋Š” 1๋ฒˆ๊ณผ 3๋ฒˆ์ด๋‹คโ€™๊ฐ€ ์ตœ์ข… ํ•ฉ์˜๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ์ •์กฑ์ˆ˜๋กœ ๊ณผ๋ฐ˜์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ณผ๋ฐ˜์ˆ˜๋Š” ์ „์ฒด ๊ฐœ์ˆ˜์˜ ์ ˆ๋ฐ˜์ด ๋„˜๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. (์ ˆ๋ฐ˜์ด ์•„๋‹ˆ๋‹ค. ์ ˆ๋ฐ˜๋ณด๋‹ค ๋งŽ์•„์•ผ ํ•œ๋‹ค.)
    • ์ „์ฒด๊ฐ€ ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ: (N + 1) / 2
      • ๋”ฐ๋ผ์„œ ์ „์ฒด ๋…ธ๋“œ๊ฐ€ 5๊ฐœ์ผ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ์ •์กฑ์ˆ˜๋Š” 3์ด๋‹ค.
    • ์ „์ฒด๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ: N / 2 + 1
      • ๋”ฐ๋ผ์„œ ์ „์ฒด ๋…ธ๋“œ๊ฐ€ 6๊ฐœ์ผ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ์ •์กฑ์ˆ˜๋Š” 4์ด๋‹ค.

์ž ์ด์ œ ์„ ๊ฑฐ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  โ€˜์ง„์งœ๋กœ ๋žœ๋ค timeout์„ ๋‘๋ฉด ๋ชจ๋“ ๊ฒŒ ํ•ด๊ฒฐ๋˜๋Š”์ง€โ€™๋„ ์•Œ์•„๋ณด์ž.

  1. ํŠน์ • ํŒ”๋กœ์›Œ๊ฐ€ ์ž์‹ ์˜ election timeout ์ด ์ง€๋‚˜๋„๋ก ๋ฆฌ๋”์˜ heartbeat ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•จ
  2. ํŒ”๋กœ์›Œ๊ฐ€ ์ž์‹ ์˜ term ๊ฐ’์„ ์˜ฌ๋ฆฌ๊ณ  ํ›„๋ณด ์—ญํ• ์ด ๋จ - ์ด ํ›„๋ณด๋ฅผ Cโ‚ ์ด๋ผ๊ณ  ํ•˜์ž.
    1. term ์€ Raft ์—์„œ ๋…ผ๋ฆฌ์  ์‹œ๊ณ„ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. โ€˜์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”? ์“ฑ ํ›‘์–ด๋ณด๊ธฐโ€™ ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•˜์ž.
  3. Cโ‚ ์ด ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ 1ํ‘œ๋ฅผ ๋˜์ง€๊ณ  RequestVote RPC ๋ฅผ ๋‹ค๋ฅธ ์„œ๋ฒ„์—๊ฒŒ ๋ฐœํ–‰
    1. Cโ‚ : ์•ผ ์šฐ๋ฆฌ ๋ฆฌ๋” ์ฃฝ์€๊ฑฐ๊ฐ™์€๋ฐ ์ƒˆ๋กœ ํ•˜๋‚˜ ๋ฝ‘์•„์•ผ๊ฒ ๋‹ค. ์ผ๋‹จ ๋‚˜ ํ›„๋ณด๋กœ ๋“ฑ๋กํ•˜๊ณ  ์ฐฌ์„ฑํ‘œ ํ•˜๋‚˜! ๋„ˆ๋„ค๋„ ๋‹ต์žฅ ์ค˜
    2. ๋ฆฌ๋” ์„ ์ถœ์ด ๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์ธ '๊ณผ๋ฐ˜์ˆ˜์˜ ์ฐฌ์„ฑํ‘œ'์—์„œ '๊ณผ๋ฐ˜์ˆ˜'์—๋Š” Cโ‚ ์ž๊ธฐ์ž์‹ ๋„ ํฌํ•จ๋œ๋‹ค.
  4. ์•„๋ž˜ 3๊ฐ€์ง€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€ Cโ‚ ์€ ํ›„๋ณด ์ƒํƒœ๋กœ ๋Œ€๊ธฐ

์—ฌ๊ธฐ๊นŒ์ง€๋Š” ์‹ฌํ”Œํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 3๊ฐ€์ง€ ์ƒํ™ฉ์€ ์–ด๋–ค ์ƒํ™ฉ์ผ๊นŒ?

  • Cโ‚ ์ด ๋ฆฌ๋”๋กœ ๊ฒฐ์ •๋จ
  • ํˆฌํ‘œ๊ฐ€ ๋๋‚˜๊ธฐ ์ „, Cโ‚ ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ heartbeat ๋ฅผ ๋ฐ›์Œ
  • Split Vote: ๋ฆฌ๋”๊ฐ€ ๋ฝ‘ํžˆ์ง€ ๋ชปํ•œ ์ฑ„๋กœ ์‹œ๊ฐ„์ด ํ๋ฆ„

๊ฐ ์ƒํ™ฉ์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ (how), ๋ฐœ์ƒํ•œ ๋‹ค์Œ์—๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ (and) ์‚ดํŽด๋ณด์ž.

4-1. Cโ‚ ์ด ๋ฆฌ๋”๋กœ ๊ฒฐ์ •๋จ

  • how? ๋™์ผํ•œ term ์— ๋Œ€ํ•ด ๊ณผ๋ฐ˜์ˆ˜์˜ ์„œ๋ฒ„๊ฐ€ Cโ‚ ์ด ๋ฆฌ๋”์ž„์— ๋™์˜ํ•œ ๊ฒฝ์šฐ.
    • ๊ฐ ์„œ๋ฒ„๋Š” ํ•˜๋‚˜์˜ term ์— ๋Œ€ํ•ด์„œ ์ตœ๋Œ€ 1๊ฐœ์˜ ํ›„๋ณด์—๊ฒŒ๋งŒ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค.
      • ์ฐฌ์„ฑํ‘œ๋ฅผ ๋ฐ›์„ ํ›„๋ณด๋ฅผ ๊ณ ๋ฅด๋Š” ๊ธฐ์ค€: FIFO. ๋‚˜ํ•œํ…Œ ์ œ์ผ ๋จผ์ € ๋ฐ›์€ RPC ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๊ฑธ ๋ณด๋‚ธ ํŒ”๋กœ์›Œํ•œํ…Œ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์ง„๋‹ค.
      • ์ƒˆ ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค term ๊ฐ’์ด ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์„œ๋ฒ„๋Š” ํˆฌํ‘œ๋ณ„๋กœ ์ตœ๋Œ€ 1๊ฐœ์˜ ํ›„๋ณด์—๊ฒŒ๋งŒ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์ง„๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ณด์žฅ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ํˆฌํ‘œ์— ๋Œ€ํ•ด 2๊ฐœ์˜ ๋ฆฌ๋”๊ฐ€ ์„ ์ถœ๋  ์ˆ˜๋Š” ์—†๋‹ค.
  • and? ๋ฆฌ๋”๊ฐ€ ๋œ Cโ‚ ์€ ๋‚˜๋จธ์ง€ ์„œ๋ฒ„์—๊ฒŒ heartbeat ์„ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ ์ƒˆ term ๊ฐ’๋„ ๊ฐ™์ด ์ „์†ก๋œ๋‹ค.
    • ์›๋ž˜ ํŒ”๋กœ์›Œ์˜€๋˜ ๋…ธ๋“œ๋Š” ๋” ํฐ term๊ฐ’์œผ๋กœ heartbeat ๊ฐ€ ๋“ค์–ด์™”๊ตฐ. ๋‚ด current term ๋„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ฆฌ๋” ๋…ธ๋“œ ์ •๋ณด๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ๊ฒ ์–ด ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.
    • ์›๋ž˜ ๋ฆฌ๋”์˜€๋˜ ๋…ธ๋“œ๋Š” ์žฅ์• ๊ฐ€ ๋ณต๊ตฌ๋œ ๋‹ค์Œ Cโ‚ ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ณ ์„œ term ๊ฐ’์ด ๋‚ด๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋˜๊ฑฐ๋ณด๋‹ค ํฌ๊ณ  heartbeat ๋ฉ”์„ธ์ง€๋‹ค. ๋‚ด๊ฐ€ ์ฃฝ์€ ์‚ฌ์ด์— ์ƒˆ ๋ฆฌ๋”๊ฐ€ ์ƒ๊ฒผ๊ตฐ ํ•˜๊ณ  ํŒ”๋กœ์›Œ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

4-2. ํˆฌํ‘œ๊ฐ€ ๋๋‚˜๊ธฐ ์ „, Cโ‚ ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ heartbeat ๋ฅผ ๋ฐ›์Œ

  • and? Heartbeat ์— ์žˆ๋Š” term ์ด Cโ‚ ์˜ ๊ฒƒ๋ณด๋‹ค ํฌ๋‹ค๋ฉด: Heartbeat ๋ฅผ ๋ณด๋‚ธ ๋…ธ๋“œ๊ฐ€ ๋ฆฌ๋”์ž„์„ ์ธ์ •ํ•˜๊ณ  Cโ‚ ์€ ํŒ”๋กœ์›Œ ์—ญํ• ์ด ๋œ๋‹ค.
    • how? ์–ด๋–ป๊ฒŒ Cโ‚ ์˜ ํˆฌํ‘œ ๋„์ค‘์— Cโ‚์˜ term ๋ณด๋‹ค ํฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ heartbeat ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ์„๊นŒ?
      • ๋จผ์ € Cโ‚ ์˜ term ๋ณด๋‹ค ํฐ term ์„ ๊ฐ–๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์ƒˆ ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. term ๊ฐ’์€ ์ƒˆ ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
      • ์ƒˆ ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง, ์–ด๋–ค ํŒ”๋กœ์›Œ ๋…ธ๋“œ(Cโ‚‚ ๋ผ๊ณ  ํ•˜์ž.)์˜ election timeout ์ด ์ง€๋‚ฌ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
      • ํˆฌํ‘œ ๋„์ค‘์— Cโ‚‚ ์˜ election timeout ์ด ์ง€๋‚˜๋Š” ์ผ€์ด์Šค๋Š” ์ถฉ๋ถ„ํžˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํˆฌํ‘œ ๋„์ค‘ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ๋‚˜๋น ์ ธ์„œ ๊ทธ election timeout ์ด ์ง€๋‚˜๋„๋ก ํˆฌํ‘œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํˆฌํ‘œ ๊ณผ์ •์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๊ฐ€ ์ง€์—ฐ๋˜๋Š” ์ผ€์ด์Šค๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ง€๊ธˆ์ฒ˜๋Ÿผ ์ƒˆ ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
        • Cโ‚‚: ์•„ ๋ชจ๋ฅด๊ฒ ๊ณ  ๋‚œ election timeout ์ง€๋‚ฌ์œผ๋‹ˆ๊นŒ ์ƒˆ ํˆฌํ‘œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค~ ๋‚˜ ํ›„๋ณด๋กœ ๋ฐ”๊พธ๊ณ  ์ฐฌ์„ฑํ‘œ 1๊ฐœ ๋˜์ง. ๋„ˆํฌ๋„ ๋‹ต์žฅ ์ค˜
          • ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•ด์ง„๋‹ค. โ€˜๋‚˜์˜ Election timeout ์€ ์ง€๋‚ฌ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€์— ์˜ํ•ด ํˆฌํ‘œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๊ณ  ๊ทธ๊ฒŒ ๋๋‚˜์ง€ ์•Š์•˜์„ ๋•Œโ€™ ๋”ฐ์œ„์˜ ์ฝ”๋„ˆ์ผ€์ด์Šค๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • and? Heartbeat ์— ์žˆ๋Š” term ์ด Cโ‚ ์˜ ๊ฒƒ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด: ๋ฌด์‹œ. ๋‹ค์‹œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค.
    • how? ์–ด๋–ป๊ฒŒ Cโ‚ ์˜ ํˆฌํ‘œ ๋„์ค‘์— Cโ‚ ์˜ term ๋ณด๋‹ค ์ž‘์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ heartbeat ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ์„๊นŒ?
      • ์œ„ ์˜ˆ์‹œ์™€ ๋ฐ˜๋Œ€๋‹ค. ์œ„์—์„œ Cโ‚ ๊ณผ Cโ‚‚ ๋ฅผ ๋ฐ”๊ฟ”์„œ ๋Œ€์ž…ํ•ด๋ณด๋ฉด ๋ฐ”๋กœ ์ด ์ผ€์ด์Šค๊ฐ€ ๋œ๋‹ค. ์–ด๋–ค ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ์‹œ์ž‘ํ•œ ์„ ๊ฑฐ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€ ์ž์‹ ์˜ election timeout ์ด ๋๋‚˜๋ฒ„๋ ค์„œ ๋˜ ์ƒˆ๋กœ์šด ํˆฌํ‘œ๋ฅผ ์‹œ์ž‘ํ•œ ์ผ€์ด์Šค๋‹ค.

4-3. Split vote: ๋ฆฌ๋”๊ฐ€ ๋ฝ‘ํžˆ์ง€ ๋ชปํ•œ ์ฑ„๋กœ ์‹œ๊ฐ„์ด ํ๋ฆ„

  • how?
    • ๋ฆฌ๋”๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณผ๋ฐ˜์ˆ˜์˜ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.
    • ์•„๋ฌด๋„ ๋ฆฌ๋”๊ฐ€ ๋˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋ฌด๋„ ๊ณผ๋ฐ˜์ˆ˜์˜ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    • ์ฃผ๋กœ ์—ฌ๋Ÿฌ ํŒ”๋กœ์›Œ๊ฐ€ ๋™์‹œ์— ํ›„๋ณด ์—ญํ• ์ด ๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ํ›„๋ณด ์—ญํ• ์ด ๋œ ๋…ธ๋“œ๋Š” ์ƒˆ ์„ ๊ฑฐ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ์ด๋ฏธ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์ง„ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • and?
    • ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  election timeout ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ๊ฐ ์„œ๋ฒ„๋Š” ๋˜ ์ƒˆ๋กœ์šด ์„ ๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ์ž์‹ ์˜ term ๊ฐ’์„ ์˜ฌ๋ฆฌ๊ณ  RequestVote RPC ๋ฅผ ๋ณด๋‚ด๊ณ  election timeout ๊ฐ’์„ ๋žœ๋ค์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ์ด๋ก ์ƒ, ์ด ์ƒํ™ฉ์ด ์˜์›ํžˆ ์œ ์ง€๋  ์ˆ˜๋„ ์žˆ๋‹ค.

์–ด๋ผ! ์ปค๋ฒ„ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ผ€์ด์Šค๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ โ€˜์ด๋ก ์ƒโ€™์˜ ์ผ์ด๋‹ค. Split vote ๊ฐ€ ์˜์›ํžˆ ์œ ์ง€๋˜๋ ค๋ฉด ์ผ์ • ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฑฐ์˜ ๋ช‡ ms ์ฐจ์ด๋กœ ์•„์ฃผ ๋น„์Šทํ•œ ๊ฐ’์˜ election timeout ๊ฐ’์ด ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ํ• ๋‹น๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋žœ๋ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ๋  ํ™•๋ฅ ์€ ๋งค์šฐ ๋‚ฎ๋‹ค. ๊ทธ๋Ÿฌ๋ ค๊ณ  ๋žœ๋ค์„ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค.

์ •๋ฆฌ

๋ฆฌ๋”-ํŒ”๋กœ์›Œ ๊ตฌ์กฐ์ธ Raft ์—์„œ๋Š” ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡๊ฐ€์ง€ ์ „๋žต์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • Election timeout ์€ ๋žœ๋ค์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.
  • ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„ ๊ฑฐ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š๋Š”๋‹ค.

๋˜ํ•œ ์ตœ๋Œ€ 1๊ฐœ์˜ ๋ฆฌ๋”๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ์ „์žฅ์น˜๋ฅผ ๋งˆ๋ จํ–ˆ๋‹ค.

  • RPC ๋ฉ”์„ธ์ง€์˜ term ๊ฐ’๊ณผ ์ž์‹ ์˜ term ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋ฌด์‹œํ•  ๊ฑด ๋ฌด์‹œํ•˜๊ณ , ๋”ฐ๋ผ์•ผ ํ•  ๋ฉ”์„ธ์ง€๋งŒ ๋”ฐ๋ฅธ๋‹ค.
  • ๊ฐ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ์„ ๊ฑฐ์—์„œ ์ตœ๋Œ€ 1๊ฐœ์˜ ํ›„๋ณดํ•œํ…Œ๋งŒ ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  ์ƒํ™ฉ์˜ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์ด๋ก ์ƒ์œผ๋กœ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ split vote ์ƒํ™ฉ์„ ์ตœ๋Œ€ํ•œ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ–ˆ๋‹ค. (์นดํ”„์นด, ๋ชฝ๊ณ DB, RabbitMQ ๋“ฑ ์ƒ์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์“ฐ์ด๊ณ  ์žˆ๋Š”๊ฑธ ๋ณด๋ฉด ์ •๋ง ์ด๋ก ์ƒ์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์ธ๋“ฏํ•˜๋‹ค. ํ˜น์€ ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์—์„œ ์•ฝ๊ฐ„์˜ ์ปค์Šคํ…€์„ ํ–ˆ๊ฑฐ๋‚˜..!)

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋กœ๊ทธ ๋ณต์ œ ๊ณผ์ •์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์—ญ์‹œ๋‚˜ term ๊ฐ’์„ ํ™œ์šฉํ•œ๋‹ค.

profile
์ฝ”๋“œ๋„ ์ ๊ณ  ๊ทธ๋ฆผ๋„ ๊ทธ๋ฆฌ๊ณ  ๊ธ€๋„ ์”๋‹ˆ๋‹ค. ๋„“๊ณ  ์–•์€ ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€