๐Ÿฆ„ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Raft ๋…ผ๋ฌธ ์ฝ๊ธฐ - 2. ๋ฆฌ๋”์˜ ์—ญํ• 

Broccolismยท2025๋…„ 2์›” 2์ผ
3
post-thumbnail

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

  • ๋ฆฌ๋” ๋…ธ๋“œ์˜ ์—ญํ•  2๊ฐ€์ง€: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ฒ˜๋ฆฌ, ๋กœ๊ทธ ๋ณต์ œ
  • ๋กœ๊ทธ ๋ณต์ œ: ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ๋กœ๊ทธ ๋ณต์ œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ACK๋ฅผ ๋ณด๋‚ธ๋‹ค. ๋กœ๊ทธ๋Š” ๋ณต์ œ, ์ปค๋ฐ‹, ์ ์šฉ๋œ๋‹ค.

๋‹ค ๋ฝ‘์•˜๋‹ˆ? ์ด์ œ ํ•  ์ผ์„ ํ•˜์ž

์ง€๋‚œ ๊ธ€์—์„œ๋Š” raft ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฆฌ๋” ์„ ์ถœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—๋Š” ๋Œ€์ฒด ๋ฆฌ๋”๊ฐ€ ๋ฌด์Šจ ์ผ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๊ธธ๋ž˜ ๊ทธ๋ ‡๊ฒŒ ์—ด์‹ฌํžˆ ๋ฝ‘์•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

๋ฆฌ๋”์˜ ์—ญํ• 

Raft ์‹œ์Šคํ…œ์—์„œ ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ์—ญํ• ์„ ํ•œ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ 
  • ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๊ฒŒ ๋กœ๊ทธ ๋ณต์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ์ด๊ด„ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ

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

๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฑด, ๋‹ค๋ฅธ ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ๊ทธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ฆ‰, raft ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ ๊ธฐ๊ณ„(state machine)์˜ ์ƒํƒœ์— ๋ณ€๊ฒฝ์ด ์ƒ๊ฒจ์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ ๋ณ€๊ฒฝ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” ์—”๋“œํฌ์ธํŠธ๋Š” ํ•ญ์ƒ ๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ๋…ธ๋“œ ํ•˜๋‚˜๋งŒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋‹ˆ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ด์ง€ ์•Š์„๊นŒ? ๋ผ๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค. ๊ทธ๋ž˜์„œ ์ฝ๊ธฐ ์—ฐ์‚ฐ์€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๊ฒŒ๋„ ๋ณด๋‚ด๊ฑฐ๋‚˜ lease ๋ชจ๋“œ, quorum reads ๋ฅผ ์“ฐ๋Š” ๋“ฑ raft ๋ฅผ ๋ณ€ํ˜•ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์“ฐ์ธ๋‹ค. ์‹ค์ œ๋กœ ๋ชฝ๊ณ DB์—์„œ๋Š” ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์— ๋Œ€ํ•ด raft ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ€ํ˜• ๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋กœ๊ทธ ๋ณต์ œ

Raft ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ด๋‹ค๋Š” ๊ฑด ๋ฆฌ๋”-ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ ๋…ธ๋“œ๋“ค์ด ์„œ๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผํ•จ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๊ฒƒ์ด.. ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ์ด๋‹ˆ๊นŒ..! ์ด ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ์ด๋Ÿฐ ์ผ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

  • ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ
  • ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ACK ์ฒ˜๋ฆฌ
  • ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ ์žฌ์‹œ๋„

์•ž์„œ ๋ดค๋“ฏ์ด ๋ฆฌ๋” ๋…ธ๋“œ๋งŒ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์—†๋‹ค. ๋Œ€์‹  ๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ๋จผ์ € ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๊ฒŒ ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ๊ทธ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ๊ทธ์ œ์„œ์•ผ ๋กœ๊ทธ ๋ณต์ œ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ๋‹ค.

๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์—๋Š” ํŒ”๋กœ์›Œ ๋…ธ๋“œ์— ๋ฐ˜์˜ํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. 0๋ฒˆ key์— ๋Œ€ํ•œ ๊ฐ’์„ 10์œผ๋กœ ์—…๋ฐ์ดํŠธ ์™€ ๊ฐ™์€ ์‹์ด๋‹ค. ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ์ด ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ž์‹ ์˜ ๋กœ๊ทธ์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ์ด ์‚ฌ์‹ค์„ ๋ฆฌ๋”์—๊ฒŒ ๋‹ค์‹œ ์•Œ๋ฆฐ๋‹ค. ACK๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋ฆฌ๋”๋Š” ์–ด๋–ค ํŒ”๋กœ์›Œ๊ฐ€ ACK๋ฅผ ๋ณด๋ƒˆ๋Š”์ง€, ์ฆ‰ ๋ˆ„๊ฐ€ ๋กœ๊ทธ ๋ณต์ œ์— ์„ฑ๊ณตํ–ˆ๋Š”์ง€๋ฅผ ์ง€์ผœ๋ณธ๋‹ค.

๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ๋กœ๊ทธ ๋ณต์ œ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ACK๋ฅผ ๋ณด๋ƒˆ๋‹ค๋ฉด ๊ทธ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋Š” ๋ฆฌ๋” ๋…ธ๋“œ์—๊ฒŒ ์ ์šฉํ•ด๋„ ๋˜๋Š” ์—”ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค. ๋ฆฌ๋” ๋…ธ๋“œ์˜ ์ƒํƒœ ๊ธฐ๊ณ„(state machine)์˜ 0๋ฒˆ key ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ์‹œ์ ์€ ๋ฐ”๋กœ ์ด ๋•Œ๊ฐ€ ๋œ๋‹ค. ๋งŒ์•ฝ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ACK๋ฅผ ํ™•๋ณดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋ฆฌ๋”๋Š” ๊ณ„์†ํ•ด์„œ ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. (๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ ์žฌ์‹œ๋„)

AppendEntries RPC

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์–ด๋ณด์•˜๋‹ค๋ฉด ๋…ธ๋“œ ๊ฐ„ ํ†ต์‹  ์†๋„๊ฐ€ ์ƒ๋‹นํžˆ ๋นจ๋ผ์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค ๊ฒƒ์ด๋‹ค. Raft ์—์„œ๋Š” RPC ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ๋…ธ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. ๋ฆฌ๋”๊ฐ€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๊ฒŒ ๋ณด๋‚ด๋Š” RPC ๋Š” ๋ณ‘๋ ฌ๋กœ ์ „์†ก๋œ๋‹ค. Raft ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์•ˆ์—์„œ ๋ณด๋‚ด๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ RPC๋ฅผ ๋ชฉ์ ์— ๋”ฐ๋ผ ์ด๋ฆ„ ๋ถ™์˜€๋Š”๋ฐ, ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์€ AppendEntries RPC ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ๋‹ค. ๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์ธ๋ฐ ์™œ ๋ญ”๊ฐ€ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์˜๋ฏธ์˜ Append ๋ฅผ ์ผ์„๊นŒ?

์œ„์˜ ๋กœ๊ทธ ๋ณต์ œ ๊ณผ์ •์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด์ž.

๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ์—๋Š” ํŒ”๋กœ์›Œ ๋…ธ๋“œ์— ๋ฐ˜์˜ํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. 0๋ฒˆ key์— ๋Œ€ํ•œ ๊ฐ’์„ 10์œผ๋กœ ์—…๋ฐ์ดํŠธ ์™€ ๊ฐ™์€ ์‹์ด๋‹ค. ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ์ด ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ž์‹ ์˜ ๋กœ๊ทธ์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ โ€ฆ

ํŒ”๋กœ์›Œ ๋…ธ๋“œํ•œํ…Œ ๋“ค์–ด๊ฐ„ ๊ฑด ๊ฐ’์„ โ€˜๋ณ€๊ฒฝโ€™ํ•˜๋ผ๋Š” ์š”์ฒญ์ธ๋ฐ, ํŒ”๋กœ์›Œ๋Š” ์ด๊ฑธ โ€˜์ž์‹ ์˜ ๋กœ๊ทธ์— ์ถ”๊ฐ€โ€™ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์—…๋ฐ์ดํŠธ๋Š” ํ•˜์ง€ ์•Š๋Š”๊ฑธ๊นŒ?

์ •๋‹ต์€ โ€˜์•„๋‹ˆ๋‹คโ€™. ์—…๋ฐ์ดํŠธ๋„ ์ผ์–ด๋‚œ๋‹ค. ๊ทธ ๋Œ€์ƒ์ด ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

Raft ์— ์ฐธ์—ฌํ•˜๋Š” ๋ฆฌ๋”, ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์Œ“์ด๊ธฐ๋งŒ ํ•œ๋‹ค. ์—…๋ฐ์ดํŠธ๋Š” โ€˜Raft ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ ๊ธฐ๊ณ„(state machine)โ€™์— ์ผ์–ด๋‚œ๋‹ค. ์ฆ‰, 0๋ฒˆ key์™€ ๊ทธ ๊ฐ’์€ ์ƒํƒœ ๊ธฐ๊ณ„์— ์ €์žฅ๋œ๋‹ค. ๋ฆฌ๋”, ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ๊ทธ ์ƒํƒœ ๊ธฐ๊ณ„์— ์ผ์–ด๋‚œ ๋ณ€ํ™”์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋น„์œ ํ•˜์ž๋ฉด ์ƒํƒœ ๊ธฐ๊ณ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฆฌ๋”์™€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ๋ฉ”์„ธ์ง€ํ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. ๋ฆฌ๋”์™€ ํŒ”๋กœ์›Œ๊ฐ€ ์ €์žฅํ•˜๋Š” ๋กœ๊ทธ์—๋Š” ๊ฐ ํ‚ค๋ณ„๋กœ ์ผ์–ด๋‚œ ๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜๊ณ , ๊ฐ’์˜ ๋ณ€๊ฒฝ์€ state machine ์— ๋ฐ˜์˜๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ 0๋ฒˆ key ์— ๋Œ€ํ•œ ๊ฐ’์„ ์š”์ฒญํ•œ๋‹ค๋ฉด state machine ์˜ ๊ฒƒ์„ ์ฝ์–ด์„œ ๋Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆผ์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ๋…ธ๋“œ์— ๋กœ๊ทธ๊ฐ€ ๋ณต์ œ๋œ ์‚ฌ์‹ค์€ key: 0, value: 10์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ์ž์‹ ์˜ state machine ์— ๊ทธ ์‚ฌ์‹ค์„ ๋ฐ˜์˜ํ•œ ์ƒํƒœ์ด๋‹ค. ์ด ๋•Œ โ€˜๊ณผ๋ฐ˜์ˆ˜โ€™๋ฅผ ํŒ๋‹จํ•  ๋•Œ๋Š” ๋ฆฌ๋” ์ž๊ธฐ์ž์‹ ๋„ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋“œ 2๊ฐœ์— ๋ณต์ œ๋œ ๋กœ๊ทธ๋Š” ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ๋ณต์ œํ•œ ๋กœ๊ทธ๋ผ๊ณ  ๋ณธ๋‹ค.

Committed Log Entry ์ปค๋ฐ‹ ๋œ ๋กœ๊ทธ

๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ๋ณต์ œ์— ์„ฑ๊ณตํ•œ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋ฅผ โ€˜commit ๋˜์—ˆ๋‹คโ€™๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. ๋ฆฌ๋”๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ปค๋ฐ‹๋œ ๋กœ๊ทธ ์—”ํ„ฐ๋ฆฌ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉด์„œ ํŒ”๋กœ์›Œ์—๊ฒŒ AppendEntries RPC ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค.

์ด ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ์ปค๋ฐ‹๋œ ๋กœ๊ทธ์™€ ์ ์šฉํ•œ ๋กœ๊ทธ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ์‚ฌ์‹ค์ด๋‹ค.

  • ์ปค๋ฐ‹ ๋œ ๋กœ๊ทธ: ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ๋ณต์ œํ•œ ๋กœ๊ทธ
  • ์ ์šฉ(apply) ํ•œ ๋กœ๊ทธ: ๋ฆฌ๋”/ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ ์ƒํƒœ์— ์ ์šฉํ•œ ๋กœ๊ทธ

ํŒ”๋กœ์›Œ๋Š” ๋ฆฌ๋”์˜ AppendEntries RPC ์— ๋“ค์–ด์˜จ โ€˜๋งˆ์ง€๋ง‰์œผ๋กœ ์ปค๋ฐ‹๋œ ์—”ํŠธ๋ฆฌ ์ธ๋ฑ์Šคโ€™๋ฅผ ๋ณธ ๋‹ค์Œ์—์•ผ ๊ทธ ์—”ํŠธ๋ฆฌ๋ฅผ ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ์ ์šฉํ•œ๋‹ค. ์ฆ‰, ํŒ”๋กœ์›Œ๊ฐ€ ACK ๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „๊นŒ์ง€๋„ ์ž์‹ ์˜ state machine ์—๋Š” ์•„์ง ๊ทธ ์—”ํŠธ๋ฆฌ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ธ ๊ฒƒ์ด๋‹ค. ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š” ์•„๋ž˜ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋œ๋‹ค.

  1. ๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์Œ
  2. ๋ฆฌ๋” ๋…ธ๋“œ๋Š” ์ž์‹ ์˜ ๋กœ๊ทธ์— ์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ๋ฅผ ์ถ”๊ฐ€
  3. ๋ฆฌ๋” ๋…ธ๋“œ๊ฐ€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ์—๊ฒŒ ๋ณ‘๋ ฌ๋กœ AppendEntries RPC ๋ฅผ ์ „์†ก (๋กœ๊ทธ ๋ณต์ œ ์š”์ฒญ)
  4. AppendEntries RPC ๋ฅผ ๋ฐ›์€ ํŒ”๋กœ์›Œ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ ๋กœ๊ทธ์— ์—”ํŠธ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ๋ฆฌ๋”์—๊ฒŒ ACK๋ฅผ ์ „์†ก
  5. ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ํŒ”๋กœ์›Œ๋กœ๋ถ€ํ„ฐ ACK๋ฅผ ๋ฐ›์•˜๋‹ค๋ฉด, ๋ฆฌ๋”๋Š” ์ถ”๊ฐ€ํ•œ ์—”ํŠธ๋ฆฌ๋ฅผ ์ปค๋ฐ‹๋œ ์ƒํƒœ๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ์ž์‹ ์˜ state machine ์— ์—”ํŠธ๋ฆฌ์˜ ๋‚ด์šฉ๋ฌผ์„ ์ ์šฉ
  6. ํŒ”๋กœ์›Œ ๋…ธ๋“œ๋Š” ๋‹ค์Œ AppendEntries RPC๋ฅผ ๋ฐ›๊ณ  โ€˜๋งˆ์ง€๋ง‰์œผ๋กœ ์ปค๋ฐ‹๋œ ์—”ํŠธ๋ฆฌ ์ธ๋ฑ์Šคโ€™๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ทธ ์—”ํŠธ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ๋ฌผ์„ ์ž์‹ ์˜ state machine ์— ์ ์šฉ

์ •๋ฆฌ

  • ๋ฆฌ๋” ๋…ธ๋“œ์˜ ์—ญํ• ์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๋‹ค: ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํŒ”๋กœ์›Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋กœ๊ทธ ๋ณต์ œ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๋ฆฌ๋”๋Š” ๋กœ๊ทธ ๋ณต์ œ๋ฅผ ์œ„ํ•ด AppendEntries RPC ๋ฅผ ๋ณด๋‚ด๊ณ , ํŒ”๋กœ์›Œ๋Š” ์ด๋ฅผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์ปค๋ฐ‹๋œ ๋กœ๊ทธ์™€ state machine์— ์ ์šฉ๋œ ๋กœ๊ทธ๋Š” ๋‹ค๋ฅด๋‹ค.
profile
์„ค๊ณ„๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋„ ์ ๊ณ  ๊ทธ๋ฆผ๋„ ๊ทธ๋ฆฌ๊ณ  ๊ธ€๋„ ์”๋‹ˆ๋‹ค. ๋„“๊ณ  ์–•์€ ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด