동기화 μ •μ±…

동기화 μ •μ±…

μ•ˆμ •λœ 동기화(Stable Resync)

1:N λ³΅μ œλŠ” N λ…Έλ“œ κ°„ 연결을 λͺ¨λ‘ μ„±λ¦½ν•˜κΈ° λ•Œλ¬Έμ— λ…Έλ“œμ˜ κ°œμˆ˜κ°€ 증가할 수둝 λ„€νŠΈμ›Œν¬ ν† ν΄λ‘œμ§€ 상 λ”μš± λ³΅μž‘ν•œ 메쉬 λ„€νŠΈμ›Œν¬λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€. 이와 같이 λ³΅μž‘ν•œ μ—°κ²° ν™˜κ²½μ—μ„œ ν•„μš”ν•œ 일관성 μžˆλŠ” bsr의 동기화 정책에 λŒ€ν•΄ μ•Œμ•„ λ³΄κ² μŠ΅λ‹ˆλ‹€.

λ‹€μŒ 2개의 그림은 λ…Έλ“œ κ°„μ˜ 볡제의 λ°©ν–₯κ³Ό λ™κΈ°ν™”μ˜ λ°©ν–₯이 κ°™κ±°λ‚˜ λ˜λŠ” λ‹€λ₯Έ 경우λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

Β 

λ³΅μ œμ™€ λ™κΈ°ν™”μ˜ λ°©ν–₯이 κ°™μœΌλ©΄ 문제될 것이 μ—†μŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ 경우 두 번째 κ²½μš°κ°€ 문제 μž…λ‹ˆλ‹€. 볡제 μ†ŒμŠ€ λ…Έλ“œμ™€ 동기화 μ†ŒμŠ€ λ…Έλ“œκ°€ λ‹€λ₯΄λ‹€κ³  ν•  λ•Œ, λ³΅μ œμ™€ 동기화 데이터λ₯Ό ν•˜λ‚˜μ˜ νƒ€κΉƒμ—μ„œ μˆ˜μ‹ ν•œλ‹€λ©΄ 전체 λ…Έλ“œμ˜ 데이터 정합성이 깨질 수 μžˆμŠ΅λ‹ˆλ‹€. Primary 둜 λΆ€ν„° μˆ˜μ‹ ν•˜λŠ” 볡제 λ°μ΄ν„°λŠ” μ΅œμ‹  데이터 μ΄μ§€λ§Œ λ‹€λ₯Έ Secondary 동기화 μ†ŒμŠ€λ‘œ λΆ€ν„° μˆ˜μ‹ ν•œ 데이터 λΈ”λŸ­μ€ μ˜ˆμ „ 데이터일 수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ‘œ λ‹€λ₯Έ μ†ŒμŠ€λ‘œ λΆ€ν„° μˆ˜μ‹ ν•œ 데이터가 κ²ΉμΉ˜λŠ” λΈ”λŸ­ μ˜μ—­μ— κ±Έμ³μžˆλ‹€λ©΄ μΌλΆ€λŠ” μ΅œμ‹ μ΄μ§€λ§Œ μΌλΆ€λŠ” μ˜ˆμ „ λ°μ΄ν„°λ‘œ 기둝될 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이 문제λ₯Ό λ…Έλ“œλ“€ κ°„μ˜ λ³΅μ œμ™€ λ™κΈ°ν™”μ˜ λ°©ν–₯이 μΌμΉ˜λ˜λ„λ‘ κ°•μ œν•˜κ³  λŠ₯λ™μ μœΌλ‘œ μ€‘μž¬ν•˜μ—¬ 메쉬 λ„€νŠΈμ›Œν¬μ—μ„œμ˜ 정합성을 보μž₯ν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이것을 Stable 동기화 μ •μ±…μœΌλ‘œ λͺ…λͺ…ν•©λ‹ˆλ‹€.

이 동기화 정책을 μ„€λͺ…ν•˜κΈ°μ— μ•žμ„œ κ΄€λ ¨λœ λͺ‡ κ°€μ§€ 배경이 λ˜λŠ” κ°œλ…μ— λŒ€ν•΄ 이해가 ν•„μš”ν•©λ‹ˆλ‹€.

  • μ•ˆμ •(Stable) λ…Έλ“œλŠ” Primary λ…Έλ“œ λ˜λŠ” Primary λ…Έλ“œμ™€ μ—°κ²°λ˜μ§€ μ•Šμ€ SyncTarget이 μ•„λ‹Œ Secondary λ…Έλ“œ μž…λ‹ˆλ‹€.

  • λΆˆμ•ˆμ •(Unstable) λ…Έλ“œλŠ” primary λ…Έλ“œμ™€ μ—°κ²°λœ λ…Έλ“œ, μ‹±ν¬νƒ€κ²ŸμΈ Secondary λ…Έλ“œ μž…λ‹ˆλ‹€. μžμ‹ μ˜ 데이터가 계속 λ³€κ²½λ©λ‹ˆλ‹€.

  • κΆŒν•œ(Authoritative) λ…Έλ“œλŠ” μžμ‹ μ„ Unstable λ…Έλ“œλ‘œ λ§Œλ“  μƒλŒ€λ…Έλ“œμ΄λ©° Authoritative λ…Έλ“œλŠ” λ™μ‹œμ— μ•ˆμ •(Stable) λ…Έλ“œ μž…λ‹ˆλ‹€.

Β 

이 같은 κ°œλ… μ•„λž˜ λ‹€μŒκ³Ό 같은 동기화 정책이 μž‘λ™ν•©λ‹ˆλ‹€.

  • μ•ˆμ • λ…Έλ“œλŠ” SyncSource κ°€ 될 수 있으며, λΆˆμ•ˆμ • λ…Έλ“œλŠ” SyncSourceκ°€ 될 수 μ—†μŠ΅λ‹ˆλ‹€.

  • SyncSource λ…Έλ“œκ°€ λΆˆμ•ˆμ • λ…Έλ“œκ°€ 되면 μ§„ν–‰ μ€‘μ΄λ˜ 동기화가 μ€‘λ‹¨λ©λ‹ˆλ‹€. 상황이 λ°”λ€Œμ–΄ λΆˆμ•ˆμ • λ…Έλ“œκ°€ λ‹€μ‹œ μ•ˆμ •λ…Έλ“œλ‘œ μ „ν™˜λ˜λ©΄ 쀑지 λ˜μ—ˆλ˜ 동기화가 재개 λ©λ‹ˆλ‹€.

  • 절체 등을 톡해 ν•œ λ…Έλ“œκ°€ Primary둜 승격 되면 μ€‘λ‹¨λ˜μ—ˆλ˜ 동기화가 Primary λ…Έλ“œλ₯Ό SyncSource 둜 ν•˜μ—¬ 재개 λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ™κΈ°ν™”λŠ” 이전에 쀑단 됬던 λΈ”λŸ­ 이후 λΆ€ν„° μ΄μ–΄μ„œ 동기화 ν•©λ‹ˆλ‹€.

μ•„λž˜μ˜ 그림을 톡해 μœ„ 과정을 도식화 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Β 

μ‘°μ • 동기화(Reconciliation Resync)


Primary λ…Έλ“œκ°€ 2개의 Secondary λ…Έλ“œλ‘œ μ‹€μ‹œκ°„ 볡제λ₯Ό μˆ˜ν–‰ν•˜λ˜ 도쀑 Primary κ°€ Crash λ˜μ–΄ Secondary 두 λ…Έλ“œλ§Œ λ‚¨κ²¨μ‘Œμ„ λ•Œ 두 Secondary λ…Έλ“œλŠ” UpToDate μž„μ—λ„ μ„œλ‘œ μ™„μ „νžˆ 같은 데이터라고 보μž₯ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 각각의 λ…Έλ“œλŠ” Primary μ™€μ˜ 볡제λ₯Ό κ°œλ³„μ μœΌλ‘œ μ²˜λ¦¬ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 남겨진 두 λ…Έλ“œκ°€ 별닀λ₯Έ 쑰치 없이 UpToDate 인 μƒνƒœλ‘œ μš΄μ˜λœλ‹€λ©΄ μ΄λŠ” λΆˆμΌμΉ˜ν•œ 데이터λ₯Ό μ΅œμ‹ λ°μ΄ν„°λ‘œ κ°„μ£Όν•˜μ—¬ μš΄μ˜ν•˜κ²Œ λ˜λ―€λ‘œ μ •ν•©μ„± λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. bsr은 이 μƒν™©μ—μ„œ Secondary λ…Έλ“œλ“€ 간에 κ°€μž₯ μ΅œμ‹ μ˜ 데이터λ₯Ό λ³΄μœ ν•˜κ³  μžˆλŠ” λ…Έλ“œλ₯Ό μ •ν•˜κ³  이 μ΅œμ‹ λ…Έλ“œλ₯Ό κΈ°μ€€μœΌλ‘œ λ™κΈ°ν™”ν•˜μ—¬ 두 λ…Έλ“œκ°„μ˜ 데이터λ₯Ό 일치 μ‹œν‚΅λ‹ˆλ‹€. 이λ₯Ό 쑰정동기화라고 ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ 두 λ…Έλ“œμ˜ 데이터λ₯Ό λ§žμΆ°λ‘μ–΄μ•Ό Crash λ˜μ—ˆλ˜ Primary λ…Έλ“œκ°€ λ‚˜μ€‘μ— 재 κΈ°λ™ν•˜μ—¬ ν΄λŸ¬μŠ€ν„°μ— ν•©λ₯˜ν•˜κ±°λ‚˜ λ˜λŠ” κ·Έλ ‡μ§€ μ•Šμ€ μš΄μ˜μƒν™©μ—μ„œλ„ λ…Έλ“œλ“€ κ°„μ˜ 정합성을 보μž₯ν•  수 있게 λ©λ‹ˆλ‹€.

Β