Croot Blog

Home About Tech Hobby Archive

๐Ÿ“ฆ ๋ถ„์‚ฐ ํ™˜๊ฒฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ

์š”์•ฝ ์ •๋ฆฌ

  • ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜: Paxos, Raft, Multi-Paxos, Zab
  • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ: 2PC, 3PC
  • ๋ฆฌ๋” ์„ ์ถœ: Bully, Ring
  • ๋ฐ์ดํ„ฐ ๋ณต์ œ/๋™๊ธฐํ™”: Gossip, Viewstamped Replication
  • ์‹œ๊ฐ„/์ˆœ์„œ ์ •๋ ฌ: Lamport Clock, Vector Clock
  • ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์œ„์น˜ ์ฐพ๊ธฐ: Chord, DHT

๋ถ„์‚ฐ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Consensus Algorithms)

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐ’์„ ํ•ฉ์˜(Consensus) ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน์ง• ์žฅ์  ๋‹จ์ 
Paxos Leslie Lamport ์ œ์•ˆ ย  ย 
์ตœ์ดˆ์˜ ์ด๋ก ์  ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก ์ ์œผ๋กœ ์•ˆ์ „์„ฑ ๋ณด์žฅ ๊ตฌํ˜„ ๋ณต์žก ย 
์ดํ•ด ์–ด๋ ต๊ณ  ๋””๋ฒ„๊น… ํž˜๋“ฆ ย  ย  ย 
Multi-Paxos Paxos์˜ ์ตœ์ ํ™” ๋ฒ„์ „ ย  ย 
๋ฆฌ๋” ๊ธฐ๋ฐ˜ ์—ฐ์† ํ•ฉ์˜ Paxos๋ณด๋‹ค ์‹ค์šฉ์  ์—ฌ์ „ํžˆ ๊ตฌํ˜„ ๋‚œ์ด๋„ ๋†’์Œ ย 
Raft Paxos ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ ย  ย 
๋ฆฌ๋” ์„ ์ถœ, ๋กœ๊ทธ ๋ณต์ œ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ ์ดํ•ด ์‰ฝ๊ณ  ๊ตฌํ˜„ ์šฉ์ด ย  ย 
๊ต์œก์šฉ์œผ๋กœ๋„ ์ ํ•ฉ Paxos๋ณด๋‹ค ์ด๋ก ์ ์œผ๋กœ ๋œ ์ •ํ˜•ํ™” ย  ย 
Viewstamped Replication Paxos์™€ ์œ ์‚ฌ ย  ย 
๋ฆฌ๋” ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณต์ œ ์ˆ˜ํ–‰ ์•ˆ์ •์„ฑ, ๊ฒฌ๊ณ ํ•จ ์ƒ๋Œ€์ ์œผ๋กœ ์•Œ๋ ค์ง€์ง€ ์•Š์Œ ย 
Zab (Zookeeper Atomic Broadcast) Zookeeper์—์„œ ์‚ฌ์šฉ ย  ย 
๋ฆฌ๋” ๊ธฐ๋ฐ˜ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ํ”„๋กœํ† ์ฝœ ์‹ค์šฉ์„ฑ ๋†’์Œ, Zookeeper์— ์ตœ์ ํ™” ๋ฒ”์šฉ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ํ•œ๊ณ„ ย 

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์›์ž์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน์ง•
2PC (Two-Phase Commit) Coordinator๊ฐ€ Prepare โ†’ Commit ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ํ•ฉ์˜
๋„คํŠธ์›Œํฌ ์žฅ์•  ์‹œ block ๊ฐ€๋Šฅ ย 
3PC (Three-Phase Commit) 2PC์— ํƒ€์ž„์•„์›ƒ๊ณผ ์ค‘๊ฐ„ ์ƒํƒœ ์ถ”๊ฐ€
non-blocking, ํ•˜์ง€๋งŒ ๋” ๋ณต์žก ย 

๋ฆฌ๋” ์„ ์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฆฌ๋” ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์ฃผ๋„ํ•˜๊ฒŒ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน์ง•
Bully Algorithm ๋†’์€ ID๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ๊ฐ€ ๋ฆฌ๋”๊ฐ€ ๋จ
๊ฐ„๋‹จํ•˜์ง€๋งŒ ์žฅ์•  ๋Œ€์‘ ์•ฝํ•จ ย 
Ring Algorithm ๋…ผ๋ฆฌ์  ๋ง ๊ตฌ์กฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ๋” ์„ ์ถœ
๋„คํŠธ์›Œํฌ ์•ˆ์ •์„ฑ์ด ์ค‘์š” ย 

๊ธฐํƒ€ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…
Gossip Protocol ๋…ธ๋“œ ๊ฐ„ ๋žœ๋คํ•˜๊ฒŒ ์ƒํƒœ ์ „ํŒŒ โ†’ Eventually Consistent
๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์— ์ ํ•ฉ ย 
Chord / DHT P2P ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ ์œ„์น˜ ์ฐพ๊ธฐ
๋ถ„์‚ฐ ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ย 
Vector Clock / Lamport Clock ์ด๋ฒคํŠธ ์ˆœ์„œ ์ถ”์ 
Causal Ordering, ์‹œ๊ฐ„ ๋™๊ธฐํ™” ๋ณด์™„ ย 

Paxos vs Raft ๋น„๊ต

ํ•ญ๋ชฉ Paxos Raft
์„ค๊ณ„ ๋ชฉ์  ์ด๋ก ์  ์™„์ „์„ฑ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์‹ค์šฉ์  ํ•ฉ์˜
๋ณต์žก๋„ ๋†’์Œ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Œ
๋ฆฌ๋” ์„ ์ถœ ์•”๋ฌต์  (Multi-Paxos๋Š” ๋ช…์‹œ์ ) ๋ช…์‹œ์ 
๊ตฌํ˜„ ์–ด๋ ต๊ณ  ๋‹ค์–‘ ๋น„๊ต์  ํ‘œ์ค€ํ™”
์‚ฌ์šฉ ์˜ˆ Google Chubby ๋“ฑ etcd, Consul, RethinkDB ๋“ฑ