Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ HighLoad++ ΠΏΡΠΎΠΉΠ΄Π΅Ρ 6 ΠΈ 7 Π°ΠΏΡΠ΅Π»Ρ 2020 Π³ΠΎΠ΄Π° Π² Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Π΅.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ Π±ΠΈΠ»Π΅ΡΡ
ΠΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡ Ρ ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ, Π³Π΄Π΅ Π½Π΅ ΡΡΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π°ΡΠΏΠ΅ΠΊΡΡ. Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Causal consistency Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. Π‘Π»ΡΡΠ°ΡΠ΅Π»ΠΈ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°Ρ
ΠΊ logical clocks, dependency tracking, system security, clock synchronization, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ MongoDB ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π° ΡΠ΅Ρ
ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΡΡ
.
ΠΠΈΡ Π°ΠΈΠ» Π’ΡΠ»Π΅Π½Π΅Π² (Π΄Π°Π»Π΅Π΅ β ΠΠ’): β Π― Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎ Causal consistency β ΡΡΠΎ ΡΠΈΡΠ°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² MongoDB. Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π² Π³ΡΡΠΏΠΏΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΌΡ Π΅Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Research, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ° ΡΠΈΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠΎ ΠΈΠ·ΡΡΠ΅Π½Π°. ΠΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΡΡΠ°ΡΡΡ Π½Π΅ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅, Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Π² Π²ΠΈΠ΄Ρ Π²Π΅ΡΡΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π² Π»ΡΠ±ΠΎΠΌ production applications.
Π― Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ, ΡΠ²Π»ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΌ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Research, Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΊΠΎΠ΅, ΡΡΠΎ ΠΌΡ ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΏΠΎΠ΄Π½Π΅ΡΡΠΈ Π½Π°ΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΡΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠΈΡΠΈΠ½Π½Π°Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ (Causal consistency). ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌΡΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ Ρ ΠΎΡΡ Π² ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Causal consistency. ΠΡΡΡ Π΄Π²Π° ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° β ΠΠ΅ΠΎΠ½Π°ΡΠ΄ ΠΈ ΠΠ΅Π½Π½ΠΈ (ΡΠ΅ΡΠΈΠ°Π» Β«Π’Π΅ΠΎΡΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π²Π·ΡΡΠ²Π°Β»):
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΠ΅Π½Π½ΠΈ Π² ΠΠ²ΡΠΎΠΏΠ΅, Π° ΠΠ΅ΠΎΠ½Π°ΡΠ΄ Ρ
ΠΎΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π½Π΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΡΠΏΡΠΈΠ·, ΡΡΡΠΎΠ²ΠΊΡ. Π ΠΎΠ½ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΡΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅Ρ, ΡΠ΅ΠΌ Π²ΡΠΊΠΈΠ½ΡΡΡ Π΅Ρ ΠΈΠ· ΡΡΠ΅Π½Π΄-Π»ΠΈΡΡΠ°, ΠΏΠΎΡΠ»Π°ΡΡ Π²ΡΠ΅ΠΌ Π΄ΡΡΠ·ΡΡΠΌ Π°ΠΏΠ΄Π΅ΠΉΡ Π½Π° feed: Β«ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠ°Π΄ΡΠ΅ΠΌ ΠΠ΅Π½Π½ΠΈ!Β» (ΠΎΠ½Π° Π² ΠΠ²ΡΠΎΠΏΠ΅, ΠΏΠΎΠΊΠ° ΡΠΏΠΈΡ, Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΡΠ°ΠΌ). Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ΅ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΠΎΡΡ, ΡΡΠΈΡΠ°Π΅Ρ ΠΈΠ· Β«Π€ΠΈΠ΄Π°Β» ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ access, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»Π° ΠΈ ΡΠΊΠ°Π½Π΄Π°Π»Π° Π½Π΅ Π±ΡΠ»ΠΎ.
ΠΡΠΎ Π²ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ, ΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΠΎΡΠ»ΠΈ Π½Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠΎΠΆΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΡΡΠΈΡΡΡ, ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ access ΠΠ΅Π½Π½ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΡΠΎΡ ΠΏΠΎΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π½ΠΎ-ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ²ΡΠ·ΡΠΌΠΈ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ β ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Causal consistency Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅).
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ β ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΡΠΌ.
ΠΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ (Consistency Models)
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ Π² Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ ? ΠΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π°ΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ.
Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠΎΠΌΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ nodβΠ΅ Π½Π° Π»ΡΠΏΡΠΎΠΏΠ΅. Π Π²ΠΎΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΡΡΡΠ°Ρ Π³Π΅ΠΎΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Β«ΠΠΎΠ΄ΠΎΠ²Β», ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Π»ΡΠΏΡΠΎΠΏ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ. ΠΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½ΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ ΠΈΡΠΏΡΡΡΠ²Π°Π»ΠΈ. Π’Π°ΠΌ Π±ΡΠ» ΠΎΠ΄ΠΈΠ½ Buffer Cache, ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ Π²ΡΡ Π²ΡΠ΅Π³Π΄Π° Π²ΡΡΠΈΡΡΠ²Π°Π»ΠΎΡΡ.
ΠΠΎΠ΄Π΅Π»Ρ Strong
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΌΠ°Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ β ΡΡΠΎ Strong (ΠΈΠ»ΠΈ Π»ΠΈΠ½ΠΈΡ rise ability, ΠΊΠ°ΠΊ Π΅Ρ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ). ΠΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΈΠ΄Π½ΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΠ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ, ΠΈ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΠΎΠ³ΠΎΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΠΎΠ³ΠΎΠ΅ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ β ΠΈΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ rise ability.
ΠΡΡΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Β«Π‘ΠΏΠ°Π½Π½Π΅ΡΠ΅Β» β Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ External Consistency. ΠΡ ΠΎ Π½ΡΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
Causal
Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ β ΡΡΠΎ Causal, ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ, ΠΎ ΡΡΠΌ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ». ΠΠ΅ΠΆΠ΄Ρ Strong ΠΈ Causal ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΡΡΠΎΠ²Π½Π΅ΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Ρ Π½Π΅ Π±ΡΠ΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, Π½ΠΎ ΠΎΠ½ΠΈ Π²ΡΠ΅ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ Causal. ΠΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° β ΡΠ°ΠΌΠ°Ρ ΡΠΈΠ»ΡΠ½Π°Ρ ΠΈΠ· Π²ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ°ΠΌΠ°Ρ ΡΠΈΠ»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ partitions.
Causals β ΡΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΡ ΡΠ²ΡΠ·Π°Π½Ρ ΠΏΡΠΈΡΠΈΠ½Π½ΠΎ-ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ²ΡΠ·ΡΡ. ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΡ
Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ Read your on rights Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π°Π±Π»ΡΠ΄Π°Π» ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ. ΠΠ½ ΡΠΆΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π²ΡΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅.
Causals ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ β ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΡ ΡΠΎ Π²ΡΠ΅Ρ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΠ΅ΠΎΠ½Π°ΡΠ΄ ΠΈ ΠΠ΅Π½Π½ΠΈ.
Eventual
Π’ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ β ΡΡΠΎ Eventual Consistency. ΠΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ». ΠΠ½Π° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π΄Π°Π½Π½ΡΡ , ΠΎΠ½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΡΠΌΠΈ.
Π ΡΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½Π° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»Π°ΡΡ Π±Ρ Π² External Consistency β Π±ΡΠ»Π° Π±Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³Π°Ρ ΠΈΡΡΠΎΡΠΈΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠ°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Eventual Consistency.
Π― Ρ ΠΎΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
Π§ΡΠΎ ΡΡΠΈ ΡΡΡΠ΅Π»ΠΎΡΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ?
- Latency. ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ»Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ ΠΎΠ½Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ: Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ Π²ΡΠ΅Ρ Ρ ΠΎΡΡΠΎΠ² ΠΈ Π½ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΌ ΡΠΆΠ΅ Π΅ΡΡΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π² Eventual Consistency ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π² memory Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΠΈ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
- Availability. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ°Π·ΡΡΠ²ΠΎΠ² ΡΠ΅ΡΠΈ, partitions, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΎΡΠΊΠ°Π·ΠΎΠ² β ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ ΠΏΡΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ½ Ρ ΠΎΡΡ ΠΆΠΈΠ» ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΄Π°Π²Π°Π» ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅. Eventual Consistency Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π΄Π°Π½Π½ΡΡ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡ, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.
- Anomalies. ΠΡΠΈ ΡΡΠΎΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ. Π Strong Consistency ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΡΡΠΈ ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ, Π° Eventual Consistency ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ Π»ΡΠ΄ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ Eventual Consistency, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ? ΠΡΠ²Π΅Ρ Π² ΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Eventual Consistency-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ, Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ; ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠ΅Ρ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅; ΡΠ°ΡΡΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈ ΡΠ°ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π’Π΅ΠΎΡΠ΅ΠΌΠ° CAP
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π° consistency, availability β ΡΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΌ? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ β CAP theorem! Π― ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΎΡΡ ΡΠ°Π·Π²Π΅ΡΡΡ ΠΌΠΈΡβ¦ ΠΡΠΎ Π½Π΅ Ρ β Π΅ΡΡΡ ΠΠ°ΡΡΠΈΠ½ ΠΠ»Π΅ΠΏΠΏΠΌΠ°Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΡ ΠΊΠ½ΠΈΠΆΠΊΡ.
Π’Π΅ΠΎΡΠ΅ΠΌΠ° CAP β ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² 2000-Ρ
Π³ΠΎΠ΄Π°Ρ
, ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Consistency, Availability, Partitions: take any two, ΠΈ Π½Π΅Π»ΡΠ·Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠΈ. ΠΡΠΎ Π±ΡΠ» Π½Π΅ΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ. ΠΠ½ Π±ΡΠ» Π΄ΠΎΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ ΡΠΏΡΡΡΡ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΠΆΠΈΠ»Π±Π΅ΡΡ ΠΈ ΠΠΈΠ½Ρ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ ΡΡΠ°Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΌΠ°Π½ΡΡΠ° β ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π»ΠΈ Π΄Π΅Π»ΠΈΡΡΡΡ Π½Π° CA, CP, AP ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΡΠ° ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π±ΡΠ»Π° Π΄ΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π²β¦ ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Availability ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π°ΡΡ Π½Π΅ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π½ΡΠ»Ρ Π΄ΠΎ ΡΠΎΡΠ½ΠΈ (0 β ΡΠΈΡΡΠ΅ΠΌΠ° Β«ΠΌΡΡΡΠ²Π°ΡΒ», 100 β ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π±ΡΡΡΡΠΎ; ΠΌΡ Π΅Ρ ΡΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ), Π° ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ executions ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅.
Π Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ° ΡΠ°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Ρ Π½ΠΈ ΡΠ»ΠΎΠ²Π°! ΠΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· 100 Π»Π΅Ρ β ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ available-Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΅ΠΎΡΠ΅ΠΌΡ CAP.
ΠΡΠΎΡΠΎΠ΅: Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π»Π°ΡΡ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»ΡΡΠ°, ΠΏΡΠΈΡΠΎΠΌ ΡΡΠΎ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ β Π»ΠΈΠ½ΠΈΡ resizable. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Eventual Consistency, Strong Consistency (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ).
Π ΡΠ΅ΠΌΡ ΡΡΠΎ Π²ΡΡ? Π ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° CAP ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠΎΠΉ ΡΠΎΡΠΌΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° Π΄ΠΎΠΊΠ°Π·Π°Π½Π°, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ°, ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. Π ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΎΠ½Π° ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ Π²Π΅ΡΠ΅Π½, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ, Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ, Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π½.
Causal consistency β ΡΠ°ΠΌΠ°Ρ ΡΠΈΠ»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ
Π’ΠΎ, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ β ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ Π²Π΅ΡΠΈ: Consistency, Availability ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Partitions. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Causal consistency β ΡΠ°ΠΌΠ°Ρ ΡΠΈΠ»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Partitions (ΡΠ°Π·ΡΡΠ²ΠΎΠ² Π² ΡΠ΅ΡΠΈ) Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΅Ρ ΠΈ Π·Π°Π½ΡΠ»ΠΈΡΡ.
ΠΠ½Π°, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΡΠ΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π°Π»ΠΈΡΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°: ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ Π²Π½ΡΡΡΠΈ ΠΎ Π΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈΠ΄ΡΡ Π² ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅. ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΎΠ½Π° Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ partitions.
ΠΠ½ΡΡΡΠ΅Π½Π½ΡΡ ΠΊΡΡ Π½Ρ MongoDB
ΠΠΎΠΌΠ½Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π»Π°Π½Ρ, ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π½Π° ΠΊΡΡ Π½Ρ. Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ MongoDB Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ»ΡΡΠΈΡ ΠΎ ΡΠ°ΠΊΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
MongoDB (Π΄Π°Π»Π΅Π΅ β Β«ΠΠΎΠ½Π³ΠΎΠΠΒ») β ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΡΠ΄ΠΈΠ½Π³; ΠΈ Π²Π½ΡΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΡΠ΄Π° ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΡΠΎ Π΅ΡΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ.
Π¨Π°ΡΠ΄ΠΈΠ½Π³ Π² Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» (Π½Π΅ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΠ) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ, ΡΠΎ Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² (ΠΈΠ»ΠΈ Β«ΡΠ°Π±Π»ΠΈΡΠ°Β» Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ) Π½Π° ΠΊΡΡΠΎΡΠΊΠΈ, ΠΈ ΡΠΆΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π²ΠΈΠ³Π°Π΅Ρ ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°ΡΠ΄Π°ΠΌΠΈ.
Query Router, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ, Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ½ ΡΠΆΠ΅ Π·Π½Π°Π΅Ρ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ, Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ ΡΠ°ΡΠ΄Ρ.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: MongoDB β ΡΡΠΎ single master. ΠΡΡΡ ΠΎΠ΄ΠΈΠ½ Primary β ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΠ°ΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅ ΠΊΠ»ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π² ΡΠ΅Π±Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ. ΠΠ΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ Multi-master write.
ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ΅Π»ΠΈΠ· 4.2 β ΡΠ°ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π²ΡΡΠ°Π²ΠΈΠ»ΠΈ Lucene βΠΏΠΎΠΈΡΠΊ β ΠΈΠΌΠ΅Π½Π½ΠΎ executable java ΠΏΡΡΠΌΠΎ Π² Β«ΠΠΎΠ½Π³ΠΎΒ», ΠΈ ΡΠ°ΠΌ ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠ΅ΡΠ΅Π· Lucene, ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Β«ΠΠ»Π°ΡΡΠΈΠΊΠ΅Β».
Π ΡΠ΄Π΅Π»Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ β Charts, ΠΎΠ½ ΡΠΎΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° Β«ΠΡΠ»Π°ΡΠ΅Β» (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Cloud Β«ΠΠΎΠ½Π³ΠΎΒ»). Π£ Π½ΠΈΡ Π΅ΡΡΡ Free Tier β ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΡΠΈΠΌ. Charts ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ β Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½Π°Ρ.
ΠΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΡ Causal consistency
Π― Π½Π°ΡΡΠΈΡΠ°Π» ΠΏΠΎΡΡΠ΄ΠΊΠ° 230 ΡΡΠ°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ β ΠΎΡ ΠΠ΅ΡΠ»ΠΈ ΠΠ°ΠΌΠΏΠ΅ΡΡΠ°. Π‘Π΅ΠΉΡΠ°Ρ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΡΠ²ΠΎΠ΅ΠΉ Ρ Π²Π°ΠΌ ΠΈΡ Π΄ΠΎΠ½Π΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ°ΡΡΠΈ ΡΡΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ².
ΠΡΡ Π½Π°ΡΠ°Π»ΠΎΡΡ ΡΠΎ ΡΡΠ°ΡΡΠΈ ΠΠ΅ΡΠ»ΠΈ ΠΠ°ΠΌΠΏΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π² 1970-Ρ
Π³ΠΎΠ΄Π°Ρ
. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅. Π‘Π΅ΠΉΡΠ°Ρ Causal consistency ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΅ΡΡΡ? ΠΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°ΡΡΡΡ . Π§Π°ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½Ρ.
- ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» β ΡΡΠΎ single master, ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ» (ΡΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ).
- ΠΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° 10 ΡΡΡΡΡ ΡΠ°ΡΠ΄ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ²Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΡΡ Ρ Π½Π°Ρ ΠΎΠ±Π»Π°ΠΊΠΎ, Π½ΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ binary, Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Ρ ΡΠ΅Π±Ρ Π½Π° Π»ΡΠΏΡΠΎΠΏΠ΅, ΠΈ Π²ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
- ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ ΡΠΎ, ΡΡΠΎ Π² Research ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ: Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» β ΡΡΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΌΠ½ΡΠ΅, Π·Π»ΡΠ΅ β ΠΌΠΎΠ³ΡΡ Ρ ΠΎΡΠ΅ΡΡ Π²ΡΡ ΡΠ»ΠΎΠΌΠ°ΡΡ. ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Π²ΠΈΠ·Π°Π½ΡΠΈΠΉΡΠΊΠΈΠ΅ Π€Π΅ΠΉΠ»ΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ.
- ΠΠ»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° β Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΡΡΠ° ΡΠΈΡΠ° Π²ΡΠΊΠ»ΡΡΠ΅Π½Π°, ΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ performance degradation Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ.
- ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ β Π²ΠΎΠΎΠ±ΡΠ΅ Π°Π½ΡΠΈΠ°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ: ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΠΈ Π±ΡΠ΄ΡΡΠΈΡ . Π‘ΡΠ°ΡΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π°ΠΏΠ΄Π΅ΠΉΡΡ, ΠΈ ΠΠ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ, Π²ΡΡ ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Causal consistency
Π― ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ . ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Causal consistency, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π±Π»ΠΎΠΊΠΈ. ΠΡ Π²ΡΠ±ΠΈΡΠ°Π»ΠΈ ΠΈΠ· ΡΠ°Π±ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ Π±Π»ΠΎΠΊΡ: Dependency Tracking, Π²ΡΠ±ΠΎΡ ΡΠ°ΡΠΎΠ², ΠΊΠ°ΠΊ ΡΡΠΈ ΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ ΡΠΎΠ³ΠΎ, ΠΎ ΡΡΠΌ Ρ Π±ΡΠ΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ:
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Full Dependency Tracking)
ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΡΡΡΡ β ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΎ Π² ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΎΡ ΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ. Π‘Π°ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈ Π½Π°ΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π·Π°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ :
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΎΠΌΠ΅Ρ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
β ΡΡΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π΅ΡΡΠΈΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ. Π‘ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ (ΡΠ²Π½ΠΎ Π½Π΅ΡΡΡ ΡΡΠΎ Π²ΡΡ Π² ΡΠ΅Π±Π΅).
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ (ΠΏΠΎΠ»Π½ΡΠΉ ΡΡΠ΅ΠΊΠΈΠ½Π³)? ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ΠΏΡΠ°ΠΊΡΠΈΡΠ΅Π½: Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΡΠΎΡΡΠ΅ΡΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Β«Π€Π΅ΠΉΡΠ±ΡΠΊΒ» ΠΈΠ»ΠΈ Β«ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅Β» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Full Dependency Tracking β ΡΡΠΎ ΠΏΡΠ΅ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ, Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π―Π²Π½ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Explicit Dependency Tracking)
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ β Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ. ΠΠ΄Π΅ΡΡ ΡΠΎΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ. Π§ΡΠΎ ΠΎΡ ΡΠ΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΆΠ΅ Application. ΠΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΡΡΡΡ, ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π²ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ²Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ»ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Ρ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ. Π ΡΡΠΎΠΌ ΠΈ ΡΡΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Causal consistency ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ½Π° Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ 5 Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ 1, 2, 3, 4 β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ½Π° ΠΆΠ΄ΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ, Π²Π½Π΅ΡΡΠ½Π½ΡΠΌ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ accessβΠ° ΠΠ΅Π½Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΆΠ΅ ΠΏΡΠΎΡΠ»ΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
.
ΠΡΠΎ ΡΠΎΠΆΠ΅ Π½Π°Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡ. ΠΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄β¦
Π§Π°ΡΡ ΠΡΠΌΠΏΠΎΡΡΠ° (Lamport Clock)
ΠΠ½ΠΈ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΡΠ΅. Lamport Clock ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ ΡΡΠΈ dependency ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π² ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Lamport Clock.
Π‘ΠΊΠ°Π»ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. Π§Π°ΡΡΠΎ Π΅Π³ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ ΡΡΠΎΡ counter ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ. Counter, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Ρ, Ρ Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠ°ΠΊ-ΡΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ°ΡΡ. Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅?
Π― ΡΠ°Π·Π±ΠΈΠ» ΡΠΎΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°ΡΠ΄ Π½Π°Π΄Π²ΠΎΠ΅, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ: Friends ΠΌΠΎΠ³ΡΡ ΠΆΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π½ΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π° Feed β Π²ΠΎΠΎΠ±ΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ Π½ΠΎΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΊΡΡΠΎΠΊ ΡΡΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π½Π΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ? Π‘Π½Π°ΡΠ°Π»Π° Feed ΡΠΊΠ°ΠΆΠ΅Ρ: Β«Π Π΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π»ΡΡΒ», Π° ΠΏΠΎΡΠΎΠΌ β Friends. ΠΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΡΡΠΎ Feed Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½, ΠΏΠΎΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Friends Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Friends ΡΠΎΠΆΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ, ΡΠΎ Ρ Π½Π°Ρ ΠΊΠ°ΠΊ ΡΠ°Π· Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ».
ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΡ counter Π½Π° FeedβΠ΅:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ Lamport Clock ΠΈ Causal consistency (ΠΎΠ±ΡΡΡΠ½ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· Lamport Clock) Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΡ A ΠΈ B, ΠΈ ΡΠΎΠ±ΡΡΠΈΠ΅ B Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ±ΡΡΠΈΡ A *, ΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ LogicalTime ΠΎΡ Event A ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ LogicalTime ΠΎΡ Event B.
* ΠΠ½ΠΎΠ³Π΄Π° Π΅ΡΡ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ A happened before B, ΡΠΎ Π΅ΡΡΡ A ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½ΡΡΠ΅ B β ΡΡΠΎ Π½Π΅ΠΊΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π΅Ρ Π²ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ.
Π ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ Π½Π΅Π²Π΅ΡΠ½ΠΎ. ΠΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠΈΠ½ΡΡΠΎΠ² Lamport Clock β ΡΠ°ΡΡΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ. Π’Π°ΠΌ Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡΡ
, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π½ΠΈ (A happened before B), Π½ΠΈ (A happened before B). ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎΠΌ Π² Π΄ΡΡΠ·ΡΡ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡ (Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎΠΌ, Π° Π¨Π΅Π»Π΄ΠΎΠ½ΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ).
ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Lamport-ΡΠ°ΡΠ°ΠΌΠΈ: ΡΠΌΠΎΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΎΠ΄Π½Ρ ΡΡΠΎΡΠΎΠ½Ρ ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ: Π΅ΡΠ»ΠΈ LogicalTime A ΠΌΠ΅Π½ΡΡΠ΅ LogicalTime B, ΡΠΎ B Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ happened before A; Π° Π΅ΡΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ.
ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΠ°ΡΡ (Vector Clock)
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ°ΡΠΎΠ² ΠΡΠΌΠΏΠΎΡΡΠ° β ΡΡΠΎ ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΠ°ΡΡ. ΠΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠ²ΠΎΠΈ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡ, ΠΈ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π²Π΅ΠΊΡΠΎΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π²Π΅ΠΊΡΠΎΡΠ° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Feed, Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π²Π΅ΠΊΡΠΎΡΠ° β Π·Π° Friends (ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ
Π½ΠΎΠ΄ΠΎΠ²). Π Π²ΠΎΡ ΠΎΠ½ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π±ΡΠ΄ΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ: Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Β«Π€ΠΈΠ΄Π°Β» ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ β 1, 2, 3:
Π§Π΅ΠΌ ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΠ°ΡΡ Π»ΡΡΡΠ΅? Π’Π΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Ρ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π½ΠΎΠ΄Π°Ρ
. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Β«ΠΠΎΠ½Π³ΠΎΠΠΒ». ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΡΡΠΎ Π½Π΅ Π²ΡΠ±ΡΠ°Π»ΠΈ, Ρ
ΠΎΡΡ ΡΡΠΎ ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ ΡΡΡΠΊΠ°, ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈ Π½Π°ΠΌ ΠΏΠΎΠ΄ΠΎΡΠ»Π° Π±Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅β¦
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ 10 ΡΡΡΡΡ ΡΠ°ΡΠ΄ΠΎΠ², ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ 10 ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΆΠΈΠΌΠ°Π΅ΠΌ, Π΅ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅ΠΌ β Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π² ΡΠ°Π·Ρ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΌ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ°. ΠΠΎΡΡΠΎΠΌΡ, ΡΠΊΡΠΈΠΏΡ ΡΠ΅ΡΠ΄ΡΠ΅ΠΌ ΠΈ Π·ΡΠ±Π°ΠΌΠΈ, ΠΌΡ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ.
Spanner TrueTime. ΠΡΠΎΠΌΠ½ΡΠ΅ ΡΠ°ΡΡ
Π― Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π· ΠΎ Β«Π‘ΠΏΠ°Π½Π½Π΅ΡΠ΅Β». ΠΡΠΎ ΠΊΡΡΡΠ°Ρ ΡΡΡΠΊΠ°, ΠΏΡΡΠΌ XXI Π²Π΅ΠΊ: Π°ΡΠΎΠΌΠ½ΡΠ΅ ΡΠ°ΡΡ, GPS-ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ΄Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ? Β«Π‘ΠΏΠ°Π½Π½Π΅ΡΒ» β ΡΡΠΎ Π³ΡΠ³Π»ΠΎΠ²ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄Π°ΠΆΠ΅ ΡΡΠ°Π»Π° Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ (ΠΎΠ½ΠΈ ΠΏΡΠΈΠ΄Π΅Π»Π°Π»ΠΈ ΠΊ Π½Π΅ΠΉ SQL). ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ°ΠΌ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ time stamp. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ*, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ times β Ρ Π°ΡΠΎΠΌΠ½ΡΡ ΡΠ°ΡΠΎΠ² Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Β«ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΒ» ΡΠΆΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π² ΠΠ ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ Serializability ΡΠΎΠ±ΡΡΠΈΡ. Π£ Π½ΠΈΡ
ΡΠ°ΠΌΠ°Ρ ΡΠΈΠ»ΡΠ½Π°Ρ Consistency-ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ β ΠΎΠ½Π° External Consistency.
* ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΡΠΎΠ² ΠΡΠΌΠΏΠ°ΡΡΠ° β ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Ρ Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡΡ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ NTP Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ. Β«Π‘ΠΏΠ°Π½Π½Π΅ΡΒ» ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠΎΠΌΠ½ΡΠ΅ ΡΠ°ΡΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄.
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ Π²ΡΠ±ΡΠ°Π»ΠΈ? ΠΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Ρ Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² Π½Π°Π»ΠΈΡΠΈΠΈ Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π°ΡΠΎΠΌΠ½ΡΠ΅ ΡΠ°ΡΡ. ΠΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²ΡΡΡΡ, Π±ΡΠ΄ΡΡΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ Π»ΡΠΏΡΠΎΠΏ, Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΠΏΠ΅ΡΠΊΡΡΡΠ°Ρ GPS-ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ β ΡΠΎΠ³Π΄Π° Π΄Π°β¦ Π ΠΏΠΎΠΊΠ° ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β ΡΡΠΎ Β«ΠΠΌΠ°Π·ΠΎΠ½Β», Base Stations β Π΄Π»Ρ ΡΠ°Π½Π°ΡΠΈΠΊΠΎΠ²β¦ ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΡ.
ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠ΅ ΡΠ°ΡΡ (Hybrid Clock)
ΠΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎ, ΡΡΠΎ ΡΠΈΠΊΠ°Π΅Ρ Π² Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» ΠΏΡΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ Causal consistency. ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠ΅ ΠΎΠ½ΠΈ Π² ΡΡΠΌ? ΠΠΈΠ±ΡΠΈΠ΄ β ΡΡΠΎ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
- ΠΠ΅ΡΠ²ΠΎΠ΅ β ΡΡΠΎ unixβΠ²Π°Ρ ΡΠΏΠΎΡ Π° (ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΡΠΎΡΠ»ΠΎ Ρ Β«Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°Β»).
- ΠΡΠΎΡΠΎΠ΅ β Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ, ΡΠΎΠΆΠ΅ 32-Π±ΠΈΡΠ½ΡΠΉ unsigned int.
ΠΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ Π²ΡΡ. ΠΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΡΠ΅ΠΌΡ, Π²ΡΡ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ°ΡΠ°ΠΌΠΈ; ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡΡΠ° ΡΠ°ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ°ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅, Π° increment ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Β«ΠΠΎΠ½Π³ΠΎΠΠΒ»? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π±ΡΠΊΠ°ΠΏ-ΡΠ΅ΡΡΠΎΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ; Π΄Π»Ρ ΠΠ ΡΠΎΠ±ΡΡΠΈΡ β ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΠ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π‘Π°ΠΌΡΡ Π³Π»Π°Π²Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ Ρ ΡΠΊΠ°ΠΆΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ (ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅)! ΠΡ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² MongoDB OpLog. OpLog β ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π±Π°Π·Π΅: ΠΎΠ½ΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² OpLog, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΆΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ Storage Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π°ΡΠ° ΠΈΠ»ΠΈ ΡΠ°ΡΠ΄.
ΠΡΠΎ Π±ΡΠ»Π° Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°. ΠΡΡ-ΡΠ°ΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΅ΡΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±Π°Π·Ρ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎ β ΠΌΠ°Π»ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. Π’ΠΎ, ΡΡΠΎ Ρ Π½Π°Ρ ΠΎΠΏΠ»ΠΎΠ³ΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΠΌΠΈ ΡΠ°ΡΠ°ΠΌΠΈ, ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ°Π²Π΄Π°Π»ΠΎ ΡΠ΅Π±Ρ ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅. ΠΡΠ»ΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠΎ!
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΠΎΠ²
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π½Π°ΡΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅. Π― Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°ΡΠ΄Π°. ΠΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°-ΡΠ΅Ρ β ΡΠ°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ: ΡΡΠΎ Β«ΡΠΈΠ½Π³Π»-ΠΌΠ°ΡΡΠ΅ΡΒ»; Ρ Π½Π°Ρ Π΅ΡΡΡ OpLog, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ β Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡ ΡΠΆΠ΅ sequentially ordered Π² ΡΠ°ΠΌΠΎΠΌ Β«ΠΠΏΠ»ΠΎΠ³Π΅Β». ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΠ΄Π°, Π·Π΄Π΅ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π°ΠΆΠ½Π°. ΠΠΎΡ ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ! ΠΠΎ Ρ Π½Π°Ρ ΠΈΡ Π½Π΅Ρ.
ΠΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ β ΡΡΠΎ Β«Π₯Π°ΡΡΠ±ΠΈΡΡΒ» (Heartbeats). ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎ Β«Π₯Π°ΡΡΠ±ΠΈΡΡΒ» β ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ latency ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
True time β ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ ΡΡΡΠΊΠ°. ΠΠΎ, ΠΎΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π±ΡΠ΄ΡΡΠ΅Π΅β¦ Π₯ΠΎΡΡ Π² Β«ΠΡΠ»Π°ΡΠ΅Β» ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠΆΠ΅ Π΅ΡΡΡ Π±ΡΡΡΡΡΠ΅ Β«Π°ΠΌΠ°Π·ΠΎΠ½ΠΎΠ²ΡΠΊΠΈΠ΅Β» ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎ ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ .
Gossiping β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ, Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠΎΡΡΠ΅Ρ Π΄Π°ΡΠ°-Π½ΠΎΠ΄Ρ, Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΡ Π΄Π»Ρ Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» β ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ ΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΊΡΡ. Π£ Π½ΠΈΡ Π²Π΅Π·Π΄Π΅ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ. 64 Π±ΠΈΡΠ°? ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ°ΠΊ Π²ΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅?
ΠΠ΄Π΅ΡΡ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°-ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΡΡΡΡ-ΡΡΡΡ ΠΏΡΠΎΡΠ΅. ΠΡΡΡ Primary ΠΈ Secondary. Secondary Π΄Π΅Π»Π°Π΅Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ Primary.
ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΡΠ°Π²ΠΊΠ° (insert) Π² Β«ΠΡΠ°ΠΉΠΌΠ΅ΡΠΈΒ» Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎΡ insert ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ°ΡΠ½ΡΠ΅Ρ Π½Π° 11, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ»ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ² ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°ΡΠ°ΠΌ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. Π§Π°ΡΡ Π² Β«ΠΠΎΠ½Π³ΠΎΠΠΒ» ΠΈ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΠΈΡΠΈ Π² Β«ΠΠΏΠ»ΠΎΠ³Β». ΠΡΠΎ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°ΡΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π½ΠΎΠ΄: ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ»ΠΎ β Π·Π½Π°ΡΠΈΡ, ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΡΠ²ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ. ΠΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π² Β«ΠΠΏΠ»ΠΎΠ³Π΅Β», ΡΠΎ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΡ Π² Β«ΠΠΏΠ»ΠΎΠ³Β». ΠΡΠΎ Π½Π°ΠΌ Π²ΡΡ ΡΠΏΡΠΎΡΠ°Π΅Ρ: ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΏΡΠΎΡΠ°Π΅Ρ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π΅ΡΡΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°-ΡΠ΅ΡΠ°, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Β«ΠΠΏΠ»ΠΎΠ³Β» β ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π² Β«ΠΠΏΠ»ΠΎΠ³Π΅Β» ΡΠΆΠ΅ Π»Π΅ΠΆΠΈΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΡ β 12. Π’Π΅ΠΏΠ΅ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π½ΠΎΠ΄Π° (Secondary), ΠΈ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΆΠ΅ afterClusterTime Π² ΡΠ°ΠΌΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ. ΠΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ: Β«ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΠΎΡΠ»Π΅ 12 ΠΈΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΠΈΒ» (ΡΠΌ. ΡΠΈΡ. Π²ΡΡΠ΅).
ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Causal a consistent (CAT). ΠΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π² ΡΠ΅ΠΎΡΠΈΠΈ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π· Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π»ΠΎΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 12.
Π‘Π΅ΠΉΡΠ°Ρ Π·Π΄Π΅ΡΡ ΠΏΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΊΠ°ΠΊ Π±Ρ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Secondary ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π» Π΄Π°Π½Π½ΡΠ΅ Ρ Primary. ΠΠ½ ΠΆΠ΄ΡΡβ¦ Π Π²ΠΎΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°Π·Π°Π΄ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΡ ΡΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π²ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡΡΠΈ ΡΡΠΎ.
Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ Β«ΠΏΠΎΡΡΠΈ ΡΡΠΎΒ»? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠΈΡΠ°Π» ΠΈ ΠΏΠΎΠ½ΡΠ», ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΠ½ΡΠ», ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ClusterTime, ΠΎΠ½ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΡΡ, ΠΈ ΠΏΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 20 ΡΡΡΠΎΠΊ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ 64-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΌΠΈΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ Β«ΠΌΠΈΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Β»? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π²ΡΡΡΡ Π² ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ), ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ Π² Β«ΠΠΏΠ»ΠΎΠ³Β», ΠΈ ΡΠ°ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΡΡ Π΅ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ β ΠΈ ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΡΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π΄Π°Π»ΡΡΠ΅ Π½Π΅ΠΊΡΠ΄Π°, unsaint intβΡ).
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π½ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ³ΡΡΠ·ΠΈΡΡ, ΠΏΠΎΡΠΈΡΡΠΈΡΡ β ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ»Π½ΡΠΉ availability:
ΠΡΠΈΡΡΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΠ΅ΡΡΡ Π΅ΡΡ ΠΊΡΠ΄Π°-ΡΠΎ, ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π»ΠΎΠΆΠΈΡΡΡ Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ! ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
. ΠΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ?
ΠΠ°Ρ ΠΏΡΡΡ β ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ clusterTime
Π’Π°ΠΊ ΠΎΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ (Π΄ΠΎ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ°). ΠΠΎ ΠΌΡ ΡΡΠ°Π»ΠΈ Π΅ΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ (ΡΠΈΠ½ΠΈΠΉ ΡΠ΅ΠΊΡΡ):
ΠΠΎΠ΄ΠΏΠΈΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, Π²Π½ΡΡΡΠΈ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ°; ΡΠ°ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΡΠΎΠ³ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΠΈΠ΄ΡΡ). ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ hash, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ, Π° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ β Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅ΡΡΡ.
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ Ρ Π»ΡΠ΄Π΅ΠΉ: Β«ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΡΡ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ?Β» Π― ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΠΎΠΉ ΡΠΈΡΠΈ.
Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Causal consistency Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅? ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ afterClusterTime-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. Π Π±Π΅Π· ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. Gossiping, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.6, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΠ΅Π³Π΄Π°.
ΠΡΠ»ΠΈ ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠΈΡΠΈ, ΡΡΠΎ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½Π°ΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ. Π ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ?
ΠΠ΅Π»Π°ΠΉ ΡΡΠΎ Π±ΡΡΡΡΠΎ!
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ Π²Π΅ΡΡ, Π½ΠΎ ΡΡΡΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ β ΠΏΠΎΠ΄Π΅Π»ΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ, ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ.
Π£ Π½Π°Ρ Π΅ΡΡΡ Ρ
ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ
ΡΠ°Π½ΡΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΡΡ. ΠΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΡ, Π° Range. ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Range, ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 16 Π±ΠΈΡ, ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ:
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ, ΠΌΡ ΡΡΠΊΠΎΡΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΡΠ»ΠΎΠ²Π½ΠΎ) Π² 65 ΡΡΡΡΡ ΡΠ°Π·. ΠΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ: ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ β ΡΠ°ΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎ Π² 10 ΡΡΡΡΡ ΡΠ°Π· ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΠΏΠ΄Π΅ΠΉΡ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π² ΡΠ°Π·Π½ΠΎΠ±ΠΎΠΉ, ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ. ΠΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Range Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π§Π΅ΠΌΡ ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ?
Π£ΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ:
- ΠΡΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ, ΠΈΡΡΠΎΡΠΈΠΈ, ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΅ΡΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΈΡΠ΅ΠΉ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π΅Π»Π°Π»ΠΈ ΠΈ Ρ. Π΄.), Π½Π°Π΄ΠΎ ΡΠΈΡΠ°ΡΡ, ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ. ΠΡΠΎ ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π³Π΄Π΅ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ. ΠΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠΎΠ΄Π΅ ΠΈ Π½Π΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ β ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΠ»ΠΈ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΡ.
ΠΠΎΠΎΠ±ΡΠ΅, Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΠΌΡΡΠ»Π΅Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ (Β«Π‘ΠΈΠ³ΠΌΠΎΠ½Β», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ) β ΡΠ°ΠΌ Π²ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΡΡΡΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΠΈΠ΄Π΅ΡΡ . Π ΡΡΠΌ Π½ΠΎΠ²ΠΈΠ·Π½Π° Π½Π°ΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°? ΠΠ΄Π΅ΡΡ Π½ΠΎΠ²ΠΈΠ·Π½Ρ ΠΎΡΠΎΠ±ΠΎΠΉ Π½Π΅Ρ. ΠΠΎΠ²ΠΈΠ·Π½Π° ΡΠΊΠΎΡΠ΅Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΌΠ΅ΡΠ°Π»ΠΈ Π²ΠΌΠ΅ΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ β Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠΈΠΊΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΡΠΌΠΏΠ°ΡΡΠ°.
- Π ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ. Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π²Π°Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎ Β«ΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈΒ» Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ Π²Π°ΠΊΡΡΠΌΠ΅, Π° Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ, ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎ availability, latency ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ.
- ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΈ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°Π·Π½ΡΡ
ΡΡΠ°ΡΠ΅ΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, Π²ΠΌΠ΅ΡΡΠ΅. ΠΠ΄Π΅Ρ ΠΏΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΈΡΠ»Π° ΠΈΠ· ΡΡΠ°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π° Paxos-ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π»Ρ Π½Π΅Π²ΠΈΠ·Π°Π½ΡΠΈΠΉΡΠΊΠΈΡ
Π€Π΅ΠΉΠ»ΠΎΡΠΎΠ² Π²Π½ΡΡΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Π΄Π»Ρ Π²ΠΈΠ·Π°Π½ΡΠΈΠΉΡΠΊΠΈΡ
β Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°β¦ Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠ²Π½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π² ΠΈΡΠΎΠ³Π΅ ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ.
ΠΠΎΠ²ΠΎΠ³ΠΎ Π·Π΄Π΅ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ! ΠΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΡΡΠΎ Π²ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΌΠ΅ΡΠ°Π»ΠΈβ¦ ΠΡΡ ΡΠ°Π²Π½ΠΎ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅ΠΏΡ ΡΠ°Π»Π°ΡΠ° ΠΠ»ΠΈΠ²ΡΠ΅ β Π΅ΡΡΠ½Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΉΡΠ°, ΠΌΠ°ΠΉΠΎΠ½Π΅Π· ΠΈ ΠΎΠ³ΡΡΡΡ ΡΠΆΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈβ¦ ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ° ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ.
ΠΠ° ΡΡΠΎΠΌ Π·Π°ΠΊΠΎΠ½ΡΡ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠΎΠΏΡΠΎΡΡ
ΠΠΎΠΏΡΠΎΡ ΠΈΠ· Π·Π°Π»Π° (Π΄Π°Π»Π΅Π΅ β Π): β Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΠΈΡ Π°ΠΈΠ» Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Π’Π΅ΠΌΠ° ΠΏΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Gossiping. Π‘ΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ Ρ Π²ΡΠ΅Ρ Π΅ΡΡΡ ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ, Π²ΡΠ΅ Π·Π½Π°ΡΡ ΡΠ²ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π― ΡΠ°ΠΊ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ β ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ, query-plannerβΠΎΠ² ΡΠΎΠΆΠ΅, ΡΠ°ΡΠ΄ΠΎΠ² ΡΠΎΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎβ¦ Π ΠΊ ΡΠ΅ΠΌΡ ΡΠΊΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π²Π΄ΡΡΠ³ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΊΡΠΎ-ΡΠΎ ΡΠ΅ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ Π½Π° ΠΌΠΈΠ½ΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ, ΠΊΡΠΎ-ΡΠΎ β Π½Π° ΠΌΠΈΠ½ΡΡΡ ΠΏΠΎΠ·Π°Π΄ΠΈ? ΠΠ΄Π΅ ΠΌΡ ΠΎΠΊΠ°ΠΆΠ΅ΠΌΡΡ?
ΠΠ’: β ΠΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅! Π― ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΡΠΎ ΡΠ°ΡΠ΄Ρ Ρ
ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ. ΠΡΠ»ΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²ΠΎΠΏΡΠΎΡ, Ρ Π½Π°Ρ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ: Π΅ΡΡΡ ΡΠ°ΡΠ΄ 1 ΠΈ ΡΠ°ΡΠ΄ 2, ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Ρ ΡΡΠΈΡ
Π΄Π²ΡΡ
ΡΠ°ΡΠ΄ΠΎΠ² β Ρ Π½ΠΈΡ
ΡΠ°ΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ΠΈ Π·Π½Π°ΡΡ β ΡΠ°Π·Π½ΠΎΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π½ΠΈΡ
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΎΠΏΠ»ΠΎΠ³Π°Ρ
.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΠ°ΡΠ΄ 1 ΡΠ΄Π΅Π»Π°Π» ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠ°ΡΠ΄ 2 β Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ, Π° Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈΡΡΠ» Π½Π° Π΄Π²Π° ΡΠ°ΡΠ΄Π°. Π Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΅ΡΡΡ afterClusterTime Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°. Π ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΠ», ΡΠ°ΡΠ΄ 2 Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠ²Π΅ΡΠΈΡ.
Π: β Π― Ρ ΠΎΡΠ΅Π» ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΈ Π²ΡΠ±Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ?
ΠΠ’: β ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ. Π¨Π°ΡΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΊ Π½Π΅ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ afterClusterTime, ΠΈ ΠΎΠ½ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Β«ΠΠΏΠ»ΠΎΠ³Π΅Β» β ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ no approved. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ½ ΡΡΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΡ ΡΡΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ. ΠΠ½ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Causal Consistent.
Π: β Π Π΅ΡΠ»ΠΈ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΅ΡΡ ΠΏΡΠΈΠ΅Π΄ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅ΡΠΈ Π³Π΄Π΅-ΡΠΎ Π·Π°ΡΠ΅ΡΡΠ»ΠΈΡΡ?
ΠΠ’: β Π¨Π°ΡΠ΄ ΡΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π½Π΅ ΠΏΡΠΈΠ΅Π΄ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ single master. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Π», ΡΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π½Π΅ ΠΏΡΠΈΠ΅Π΄ΡΡ, Π° Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅. ΠΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ, ΡΡΠΎ Π³Π΄Π΅-ΡΠΎ ΡΡΠΎ-ΡΠΎ Π·Π°ΡΡΡΡΠ»ΠΎ, ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ ΡΠ΄Π΅Π»Π°Π΅Ρ no write, Π° ΠΏΠΎΡΠΎΠΌ ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΡΠΈΠ΅Ρ Π°Π»ΠΈ β ΠΈ Π½Π°ΡΡΡΠΈΠ»Π°ΡΡ Causal consistency. ΠΠΎΠ³Π΄Π° ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ no write, ΠΎΠ½ΠΈ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ΅Ρ Π°ΡΡ Π΄Π°Π»ΡΡΠ΅ (ΠΎΠ½ ΠΈΡ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΡΡ).
Π: β Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ. Causal consistency ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ? ΠΠΎΡ ΠΏΠΎΡΡΠ» 10-ΠΉ, 11β¦ 12-ΠΉ ΠΏΡΠΎΠΏΠ°Π», Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΆΠ΄ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡΡ. Π Ρ Π½Π°Ρ Π²Π΄ΡΡΠ³ ΠΌΠ°ΡΠΈΠ½Π° ΡΠΌΠ΅ΡΠ»Π°, ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΡΡΡ Π»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠΏΠΈΡΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ? ΠΠ°ΠΊΠΎΠΉ fatal failure ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ? Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅, ΡΠΎ ΠΎΡ Π½Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ? Π ΠΎΡ Π½Π΅Π³ΠΎ Π½Π΅ ΠΎΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ!
ΠΠ’: β Π’ΠΎΠΆΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ! Π§ΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ? Π MongoDB Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠ²ΠΎΡΡΠΌΠ½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠ²ΠΎΡΡΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ. Π ΠΊΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΏΠ°ΡΡΡ? ΠΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΡ Π½Π΅ΠΊΠ²ΠΎΡΡΠΌΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΊΠ²ΠΎΡΡΠΌΠ½ΠΎΠ΅ (ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ garbage).
ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Causal consistency Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π»ΠΎ ΡΠΎ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ β Π½Π΅ΠΊΠ²ΠΎΡΡΠΌΠ½ΡΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Causal consistency. Π ΠΎΠ²Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅!
ΠΠ°Ρ ΡΠΎΠ²Π΅Ρ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΊΠ²ΠΎΡΡΠΌΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Causal consistency. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΏΠ°Π΄Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊΠ²ΠΎΡΡΠΌΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΎΠΏΠ°Π΄ΡΡβ¦ ΠΡΠΎ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ: Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Ρ ΠΎΡΠ΅Ρ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΏΠ°Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ²ΠΎΡΡΠΌΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ. Causal consistency Π½Π΅ Π΄Π°ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΠΈ durability. ΠΠ°ΡΠ°Π½ΡΠΈΡ durability Π΄Π°ΡΡ replication ΠΈ machinery, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ replication.
Π: β ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ instance, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°Ρ ΡΠ°ΡΠ΄ΠΈΠ½Π³ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ (Π½Π΅ master, Π° slave ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ), ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° unix-Π²ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈΠ»ΠΈ Π½Π° Π²ΡΠ΅ΠΌΡ Β«ΠΌΠ°ΡΡΠ΅ΡΠ°Β»; ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ?
ΠΠ’: β Π‘Π΅ΠΉΡΠ°Ρ ΠΏΡΠΎΡΡΠ½Ρ. Π¨Π°ΡΠ΄ (Ρ. Π΅. Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡ) β ΡΠ°ΠΌ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Primary. Π Π² ΡΠ°ΡΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Β«ΠΌΠ°ΡΡΠ΅ΡΒ» ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. ΠΠΎ ΡΠ°ΡΠ΄ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΌΠ΅Π½ (Π² ΡΠ°ΡΠ΄Π΅ ΡΡΠΎΠΈΡ Primary).
Π: β Π’ΠΎ Π΅ΡΡΡ Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΡΡΠ³ΡΠ±ΠΎ ΠΎΡ Β«ΠΌΠ°ΡΡΠ΅ΡΠ°Β»? ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«ΠΌΠ°ΡΡΠ΅ΡΒ»-Π²ΡΠ΅ΠΌΡ?
ΠΠ’: β ΠΠ°. ΠΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π·Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ: ΡΠ°ΡΡ ΡΠΈΠΊΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΠΈΡΡ Π² Β«ΠΌΠ°ΡΡΠ΅ΡΒ», Π² Β«ΠΠΏΠ»ΠΎΠ³Β».
Π: β Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΈΡΡΡ, ΠΈ Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΏΡΠΎ Π²ΡΠ΅ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ?
ΠΠ’: β ΠΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ! ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅: Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Causal consistency, Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΠ΅ΡΡΠΈΡ. Π‘Π΅ΠΉΡΠ°Ρ ΡΠ°ΠΌ Π²ΡΡ: ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΠ΅ΡΡΠΈΠΈ, ΠΈ retrieve a rightsβ¦ Π‘Π΅ΡΡΠΈΡ β ΡΡΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΡΡ ΡΠ΅ΡΡΠΈΡ ΠΈ ΡΠ°ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Ρ ΠΎΡΠ΅Ρ Causal consistency (Π΅ΡΠ»ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Causal consistency), Π²ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠ°ΠΉΠ²Π΅Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠ½ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π²Π΅ΡΠ½ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΡΠ½ΡΠ» Π΄Π°Π½Π½ΡΠ΅. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ afterCluster (Β«time Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΎΠ³ΠΎΒ»).
ΠΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠΎΠ²Π½ΡΠΌ ΡΡΡΡΠΎΠΌ Π½ΠΈΡΠ΅Π³ΠΎ! ΠΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π»ΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΈ ΡΠΈΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΈΡΠ°ΡΡ secondaries: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° Primary, Π° ΡΠΈΡΠ°ΡΡ Ρ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ secondaries ΠΈ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π» Π½Π° Primary, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°ΠΆΠ΅ Π½Π° Secondary, Ρ. Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΠΎΠ΄Π½Ρ ΡΠ΅ΡΡΠΈΡ, Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ.
Π: β Π‘ ΡΠ΅ΠΌΠΎΠΉ Eventual consistency ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΠ»Π°ΡΡ Compute science βΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ CRDT (Conflict-free Replicated Data Types). Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ Π»ΠΈ Π²Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·Ρ ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ?
ΠΠ’: β Π₯ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ! CRDT ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ: Π² MongoDB β single master.
Π: β Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠΏΡΠΎΡ ΠΎΡ Π΄Π΅Π²ΠΎΠΏΡΠΎΠ². Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΠΌΠΈΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ΅Π·ΡΠΈΡΡΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ·Π°Π½ΡΠΈΠΉΡΠΊΠΈΠΉ Failure ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ Π·Π»ΡΠ΅ Π»ΡΠ΄ΠΈ Π²Π½ΡΡΡΠΈ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡ Π²ΡΡΠΊΠ°ΡΡΡΡ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΡΠ°ΡΡΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΈΡΡΠ»Π°ΡΡ?
ΠΠ’: β ΠΠ»ΡΠ΅ Π»ΡΠ΄ΠΈ Π²Π½ΡΡΡΠΈ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° β Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΡΡΠΎ ΡΡΠΎΡΠ½ΡΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ! ΠΠ»ΡΠ΅ Π»ΡΠ΄ΠΈ Π²Π½ΡΡΡΠΈ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»ΠΎΡ
ΠΈΡ
Π²Π΅ΡΠ΅ΠΉ.
Π: β ΠΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, ΡΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π³ΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π΄ΡΡΠΎΡΠΊΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·ΠΎΠΎΠΏΠ°ΡΠΊ ΡΠ»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΡΡΠ½ΡΡΡ ΠΈ ΠΎΠ±Π²Π°Π»ΠΈΡΡ Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π°Π²ΡΠ΅Π³Π΄Π°β¦ ΠΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡβ¦ ΠΡΠΎ, ΠΌΡΠ³ΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ Π²ΠΎΡ ΡΡΠΎ: Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π² ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π°ΡΠ°ΠΊΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ?
ΠΠ’: β ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π΅ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ security breachβΠ°ΠΌΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ β ΠΌΠΎΠΆΠ΅Ρ, ΠΎΠ½ΠΈ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΡΠΊΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ, ΡΠΎ ΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΊ: Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ security β ΡΡΠΎ Π·Π°ΠΌΠΎΠΊ, ΡΡΠ΅Π½Π°; Π° Π²Π½ΡΡΡΠΈ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΡ, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π° Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΡΠ΅ΡΠ΅ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠ°Π², damage, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΡΡΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ ΡΠ»ΠΎΠ½ΠΎΠΌ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠ»Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π½Π΅ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π²ΡΠ΅Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΠΎΠΌΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π: β Π Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠΌ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ΅ ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π· ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ, Π° Π΅ΡΠ»ΠΈ ΠΏΠΎΠ²Π΅Π·ΡΡ, ΡΠΎ ΠΈ Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρβ¦ ΠΡΠ²Π°Π΅Ρ Π»ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Β«Ρ ΠΎΡΠΎΡΠΎΒ»?
ΠΠ’: β ΠΠΈ ΡΠ°Π·Ρ Π½Π΅ ΡΠ»ΡΡΠ°Π» ΠΎ ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ°Ρ . Π’ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π°Π»ΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ β ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΡΠ΅Ρ. ΠΠ°Π²Π°Π»ΠΈΡΡ Π²Π½ΡΡΡΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΡ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Π±ΡΠ΄ΡΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΊΠΎΠ΅β¦ ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅Π»ΡΠ·Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Ρ ΠΎΡΡΡ β ΡΡΠΎ ΡΠΎΠ³Π΄Π° ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ; ΠΎΠ½ΠΈ, Π³ΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ°ΠΌΠΈ ΡΠ°Π·ΡΡΡΠΈΠ»ΠΈ ΡΡΠ΅Π½Ρ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡ Π½ΡΡΡ ΡΡΠ΄Π° ΡΠ»ΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΎΠΏΡΠ΅Ρβ¦ Π Π²ΠΎΠΎΠ±ΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π΅ΡΡΡΡ ΡΠ΅ΠΌΠΎΠ½ΡΠ½ΠΈΠΊΠΎΠΌ, ΠΏΡΠΈΠΉΡΠΈ ΠΈ Π²ΡΡΠ°ΡΠΈΡΡ!
Π: β Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄. Π‘Π΅ΡΠ³Π΅ΠΉ (Β«Π―Π½Π΄Π΅ΠΊΡΒ»). Π Β«ΠΠΎΠ½Π³Π΅Β» Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΠ»ΠΎΡΡΡΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² Π² Replica SetβΠ΅, ΠΈ ΡΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠ°Π²Π½Π° 7 (ΡΠ΅ΠΌΠΈ). ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°? ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ?
ΠΠ’: β Replica Set Ρ Π½Π°Ρ Π±ΡΠ²Π°Π΅Ρ ΠΈ ΠΏΠΎ 40 Π½ΠΎΠ΄ΠΎΠ². Π’Π°ΠΌ Π²ΡΠ΅Π³Π΄Π° majority. Π― Π½Π΅ Π·Π½Π°Ρ ΠΊΠ°ΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡβ¦
Π: β Π Replica SetβΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π³ΠΎΠ»ΠΎΡΡΡΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°ΡΡ, Π½ΠΎ Π³ΠΎΠ»ΠΎΡΡΡΡΠΈΡ β ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 7. ΠΠ°ΠΊ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Replica Set ΡΡΡΠ½ΡΡ Π½Π° 3 Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠ°? ΠΠ΄ΠΈΠ½ Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡΡΡ, ΠΈ Π΅ΡΡ ΠΎΠ΄Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΊΠ° Π²ΡΠΏΠ°ΡΡΡ.
ΠΠ’: β ΠΡΠΎ ΡΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Π°. ΠΡΠΎ ΠΎΠ±ΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠΎΠΆΠ΅Ρ, ΠΏΠΎΡΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠ³Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΡ π
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΎΡΡΠ°ΡΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ. ΠΠ°ΠΌ Π½ΡΠ°Π²ΡΡΡΡ Π½Π°ΡΠΈ ΡΡΠ°ΡΡΠΈ? Π₯ΠΎΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ²? ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ Π½Π°Ρ, ΠΎΡΠΎΡΠΌΠΈΠ² Π·Π°ΠΊΠ°Π· ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π² Π·Π½Π°ΠΊΠΎΠΌΡΠΌ,
Dell R730xd Π² 2 ΡΠ°Π·Π° Π΄Π΅ΡΠ΅Π²Π»Π΅ Π² Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠ΅ Equinix Tier IV Π² ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌΠ΅? Π’ΠΎΠ»ΡΠΊΠΎ Ρ Π½Π°Ρ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com