ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ "Hadoop. ZooKeeper" ΠΈΠ· ΡΠ΅ΡΠΈΠΈ "ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² Hadoop"
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ZooKeeper, Π΅Π³ΠΎ ΠΌΠ΅ΡΡΠΎ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Hadoop. ΠΠ΅ΠΏΡΠ°Π²Π΄Π° ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ . Π‘Ρ Π΅ΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ. ΠΡΠΈΠ½ΡΠΈΠΏΡ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² Π΄ΠΈΠ·Π°ΠΉΠ½ ZooKeeper. ΠΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ ZooKeeper. Π€Π»Π°Π³ΠΈ znode. Π‘Π΅ΡΡΠΈΠΈ. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ API. ΠΡΠΈΠΌΠΈΡΠΈΠ²Ρ (configuration, group membership, simple locks, leader election, locking Π±Π΅Π· herd effect). ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ZooKeeper. ZooKeeper DB. ZAB. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ².
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ZooKeeper. ΠΡΠ° ΡΡΡΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ. Π£ Π½Π΅Π³ΠΎ, ΠΊΠ°ΠΊ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Apache Hadoop, Π΅ΡΡΡ Π»ΠΎΠ³ΠΎΡΠΈΠΏ. ΠΠ° Π½Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ.
ΠΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡ, Ρ. Π΅. ΡΠΆΠ΅ ΠΈΠΌΠΈ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ Ρ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΏΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ZooKeeper β ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ΅Ρ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ Π΄Π΅Π»ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ. ΠΡΠΎ Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π΄Π½Π΅ΠΌ, ΡΡΠΎ ΡΠΎ, ΠΎ ΡΠ΅ΠΌ Π½Π°Ρ ΠΊΡΡΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, MapReduce ΠΈ ΡΡΠΎΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½ΠΈΠ²Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠΎ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½ΠΈΠΊΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ. ΠΠ΅ Π²ΡΠ΅Π³Π΄Π° MapReduce ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΠΌ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΠ°ΠΌ MapReduce ΠΈ ΠΊΡΡΠ° Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π°ΠΏΠ°ΡΠ΅Π²ΡΡ , ΠΎΠ½ΠΈ, ΠΏΠΎ ΡΡΡΠΈ, ΡΠΎΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. Π Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅, Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ZooKeeper.
ΠΠ°ΠΊ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Hadoop, ΠΎΠ½ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Yahoo! Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Apache. ΠΠ½ΠΎ Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ HBase. ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΉΠ΄Π΅ΡΠ΅ Π² JIRA HBase, ΡΠΎ ΡΠ°ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΡΠ° ΡΠ°ΡΠΊΠΎΠ² Π½Π° Π±Π°Π³ΠΈ, ΠΊΡΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠΎ-ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, Ρ. Π΅. ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ΄Π΅Ρ ΠΆΠΈΠ·Π½Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π ZooKeeper, Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, Π° Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ. Π Π΅Π³ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΡΠ°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Hadoop. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅Π³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π»Π΅ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ Π½Π°Ρ Π±ΡΠ»Π°. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»Π΅Π½ Π²ΡΠ΅ΠΌΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ. Π Π²ΡΠ΅, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ, Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ZooKeeper, Ρ. Π΅. β ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ. ΠΠΈ HDFS, Π½ΠΈ MapReduce Π½Π΅ ΠΏΠΈΡΡΡ ΡΠ²ΠΎΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π»Ρ Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π±Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ZooKeeper. Π ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²Π΅ΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ.
ΠΡΠΊΡΠ΄Π° Π²ΡΠ΅ ΡΡΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ? ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π΄Π²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ ΠΈΡ ΡΠ½ΡΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π² ΡΠ΅ΡΠΊΡ, ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π‘Π΅ΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Π°, Π° Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΡΠ½ΠΈΡΡΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΡΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π² Π‘Π΅ΡΠΈ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ΅ΡΡΡΡΡΡ, ΠΏΠ΅ΡΠ΅ΠΏΠΎΡΡΠ»Π°ΡΡΡΡ. ΠΠ΅ Π΄Π°ΡΠΎΠΌ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ TCP, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΊΡΡ ΡΠ΅ΡΡΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π°ΠΆΠ΅ TCP ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΠ°ΡΠ°ΡΡ. Π£ Π²ΡΠ΅Π³ΠΎ Π΅ΡΡΡ ΡΠ°ΠΉΠΌΠ°ΡΡ. Π‘Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π°Π»ΠΈΠ²Π°ΡΡΡΡ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΌΠΈΠ³Π°ΡΡ. Π ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π‘Π΅ΡΡ Π½Π°Π΄Π΅ΠΆΠ½Π°. ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π³Π΄Π΅ Π‘Π΅ΡΠΈ Π½Π΅Ρ, Π³Π΄Π΅ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ ΡΠΈΠ½Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅.
ΠΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π‘Π΅ΡΡ, Π΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΊΠ°Ρ latency. Π£ Π΄ΠΈΡΠΊΠ° ΠΎΠ½Π° ΡΠΎΠΆΠ΅ Π΅ΡΡΡ, Π½ΠΎ Ρ Π‘Π΅ΡΠΈ ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅. Latency β ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ°ΠΊ ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ.
Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ Π‘Π΅ΡΠΈ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ β ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΡΡ Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΡ, Π΅ΡΡΡ ΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌ ΡΡΠΎΡΡ, Π΅ΡΡΡ ΡΠ²Π΅ΡΠΈ. ΠΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ, ΠΏΠ΅ΡΠ΅Π΅Π·ΠΆΠ°ΡΡ ΠΈ Ρ. Π΄. ΠΡΠΎ Π²ΡΠ΅ ΡΠΎΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ. ΠΠ΅Π½ΡΡΡΡΡ Π°ΠΉΠΏΠΈΡΠ½ΠΈΠΊΠΈ, ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΡΡΠΈΠ½Π³, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Ρ Π½Π°Ρ Ρ ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΠΊ. ΠΡΠΎ ΡΠΎΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ.
Π‘Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΠ»Π°Π½Π΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ· ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π½Π°ΡΠΈ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΠΎ-ΡΠΎ Π½Π° ΡΠ²Π΅ΡΠ°Ρ . ΠΠ½Π΅Π·Π°ΠΏΠ½ΠΎ Π²ΡΡΠ»Π° Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ°, ΠΈ ΠΈΡ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ Hadoop. Π£ Π½ΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΠ°. ΠΠ»Ρ Π½ΠΈΡ Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ Π‘Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»Π°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ½ΠΈ Ρ ΠΎΡΡΡ ΡΠ°ΠΌ ΡΡΠΎ-ΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π»ΠΈΡΡ, ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΆΠ΅Π»Π΅Π·Π΅, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ ΡΠΎΠΆΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΡΠ΅ ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ. ΠΡΠ΅ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π½Π°ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ±ΡΡΠ½ΠΎ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ, ΡΡΠΎ Π‘Π΅ΡΡ Π±Π΅Π·Π³ΡΠ°Π½ΠΈΡΠ½Π°Ρ. ΠΡΠ»ΠΈ ΡΠ°ΠΌ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ Π²Π·ΡΡΡ ΠΊ ΡΠ΅Π±Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΎΡΠΊΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cat ΠΈ ΡΠΌΠΎΡΡΠ΅ΡΡ. ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΡΠΈΠ±ΠΎΠΊ β ΡΡΠΎ Π² Vim ΡΠΌΠΎΡΡΠ΅ΡΡ Π»ΠΎΠ³ΠΈ. ΠΠΈΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Vim Π²ΡΠ΅ ΡΡΠ°ΡΠ°Π΅ΡΡΡ Π±ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°ΡΡ, Π²ΡΠ΅ Π³ΡΡΠ·ΠΈΡΡ Π² ΠΏΠ°ΠΌΡΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎ ΡΡΠΎΠΌΡ Π»ΠΎΠ³Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΈ ΡΡΠΎ-ΡΠΎ ΠΈΡΠΊΠ°ΡΡ. ΠΡΠΎ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π±ΡΠ²Π°ΡΡ, Π½ΠΎ ΠΈΡ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ.
ΠΡΠΎΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ.
ΠΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΡΠ΅Ρ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ΅ ΡΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π½ΠΎ ΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ β ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ? ΠΠ°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π΄Π°ΠΆΠ΅ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, Π½ΠΎ ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². Π ΠΊΠ°ΠΊ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ Ρ Π½ΠΈΡ ΠΈΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ? ΠΠ½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎ Π‘Π΅ΡΠΈ. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΡΠ΄Π°-ΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π² Π»ΠΎΠ³, ΠΏΠΎΡΠΎΠΌ ΡΡΠΎΡ Π»ΠΎΠ³ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΡΠΎΠΌ Π³Π΄Π΅-ΡΠΎ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»-ΡΠ°Π±ΠΎΡΠ°Π», Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π² Π½Π΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ½ ΡΠΏΠ°Π», ΡΠΎ ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ ΠΌΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ·Π½Π°Π΅ΠΌ?
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΎ Π±ΡΡΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ. ΠΡΠΎ ΡΠΎΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ β ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²Π΅ΡΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π²ΡΡΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅.
ΠΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π°ΡΠ°Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ ΡΡΡ ΡΠΎΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ β ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ? ΠΠ΅ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ race condition, Π½Π΅ Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, Π΄ΠΎΡ ΠΎΠ΄ΡΡ Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½Π΅ ΡΠ΅ΡΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅? ΠΠ°Π΄ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ Ρ. Π΄.
ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² β Π²Π΅ΡΡ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°Ρ. Π Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π΅ΡΠ΅ Π½ΠΈΠΆΠ΅, ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ±ΠΎ Ρ Π½ΡΠ»Ρ, Π»ΠΈΠ±ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Ρ Π½ΡΠ»Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ, ΡΠΎ Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΈ Π²ΡΠΊΠΈΠ½ΡΡΠ΅ Π΅Π³ΠΎ ΡΡΠ°Π·Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΠ½ Ρ Π²Π°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π Π½Π΅ΠΌ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΠΊΡΡΠ° ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π·Π°Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ. ΠΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΠ½ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ Π±ΡΠ΄Π΅Ρ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ, ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΠ»Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. Π Π½Π΅ΠΌ ΠΈΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. ΠΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°. Π ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈ Π·Π΄Π΅ΡΡ. ΠΡΠ»ΠΈ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎ Π»ΡΡΡΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Π·Π°Π²ΠΎΠ΄ΠΈΡ Π²Π°Ρ Π½Π° Π·ΡΠ±ΠΊΠΈΠΉ ΠΏΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ZooKeeper. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ β ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΆΠΈΠ·Π½Ρ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ Π½Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠΎ ΡΠΎ, ΠΎ ΡΠ΅ΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ β ΡΡΠΎ HDFS, HBase. ΠΡΡΡ ΠΠ°ΡΡΠ΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΡΠΊΠ΅ΡΠ°ΠΌΠΈ, slave-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ², Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π½ΠΎΠ²ΡΡ , ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ Π²Π΅ΡΡ β ΡΡΠΎ Coordination Service, Ρ. Π΅. ΡΠ°ΠΌΡ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΠ»ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ backup ΠΈΠ»ΠΈ stanby ΠΠ°ΡΡΠ΅ΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΠ°ΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΠ°ΡΡΡ. Π Π΅ΡΠ»ΠΈ ΠΠ°ΡΡΠ΅Ρ ΡΠΏΠ°Π΄Π΅Ρ, ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ backup. ΠΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Ρ ΠΠ°ΡΡΠ΅ΡΠ°, Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° backup. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΈΡΡ Coordination Service. ΠΠΎ Π½Π° ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°ΠΌ ΠΠ°ΡΡΠ΅Ρ, Π·Π΄Π΅ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅ΡΡΡ. ΠΠ½ Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΌΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ·Π½Π°Π΅ΠΌ ΠΈ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΠ±ΠΎΠΉΡΠΈ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΠ°ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ°ΠΊ-ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΡΠΎ slaves, ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Ρ. Π΄.
ΠΡΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ ΡΡ Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π½Π΅Ρ ΠΠ°ΡΡΠ΅ΡΠ°, Π²ΡΠ΅ Π½ΠΎΠ΄Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΠ΅Ρ-slaves, ΡΠ°Π·Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ. ΠΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΈΠΌ Π½ΡΠΆΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΠΎΠ΄ ΡΡΡ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Cassandra, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· ΡΡΠΈΡ ΡΡ Π΅ΠΌ Π»ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΈΠ½ΡΡΡ ΠΈ ΠΏΠ»ΡΡΡ.
Π Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΠΎΡΡΡΡΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π²Π΅ΡΠ΅ΠΉ Ρ ΠΠ°ΡΡΠ΅ΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, Π½Π΅ ΡΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ. Π’ΡΡ Π³Π»Π°Π²Π½ΠΎΠ΅ β Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π½ΠΎΠ΄Π΅ ΠΌΠΎΡΠ½ΠΎΠΉ, ΡΡΠΎΠ±Ρ Ρ Π½Π΅Π΅ Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π΅ Π±ΡΠ»ΠΎ ΡΡΠ΄Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π΅ ΡΠ±ΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ°ΠΊΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈΠ· ΠΠ°ΡΡΠ΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΠΎΡΠΊΠ΅ΡΠ°ΠΌΠΈ, Ρ. Π΅. ΡΡΠ° ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΡΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π ΡΡΠ° ΡΡ Π΅ΠΌΠ° (Π²ΡΡΠ΅), Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠΎ partial failures. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π‘Π΅ΡΠΈ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π°Π²Π°ΡΠΈΡ, ΠΈ ΡΠΎΡ, ΠΊΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ ΡΠ·Π½Π°Π΅Ρ Π΄ΠΎΡΠ»ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Π½Π΅ ΡΠ·Π½Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π»ΠΎΡΡ, Ρ. Π΅. ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅Ρ ΠΎΡΠ²Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π²Π° ΡΠ°Π·Π° Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ZooKeeper ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΎΡΠΊΠ°Π·Π°ΠΌΠΈ, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΠΌ ΠΆΠΈΠ·Π½Ρ.
ΠΠ°ΠΊ ΡΡΡΡ ΡΠ°Π½ΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΡΡΠΎΠΈΠΌ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ , ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π‘Π΅ΡΡ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° shared-nothing. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π΅ΡΡΡ ΡΠ²ΠΎΡ ΠΏΠ°ΠΌΡΡΡ, ΡΠ²ΠΎΠΉ Π΄ΠΈΡΠΊ, ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ Π½ΠΈ Ρ ΠΊΠ΅ΠΌ Π½Π΅ Π΄Π΅Π»ΠΈΡΡΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ shared memory Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ. Π£ Π½Π°Ρ ΡΠ°ΠΌ Π΅ΡΡΡ context switch, ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ. ΠΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, Π½ΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π‘Π΅ΡΡΡ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΡ ΠΏΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΎΠ΅, ΡΠΎ ΠΌΡ Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΠΌ Π²ΡΡΠΊΠΈΠ΅ ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΉΠΌΠ°ΡΡΠ° Π² ΠΏΠΎΠ»ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΠΉΠΌΠ°ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠ΅ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ°ΡΠΊΠ°ΡΠ°ΡΡ. ΠΠ΄Π½ΠΎ Π΄Π΅Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ, Π° ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½, ΡΠΎ Π½Π°Π΄ΠΎ Π²ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ°Π΄ΠΎ ΡΡΠ°ΡΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎ.
Π’ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Ρ. Π΅. ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ.
Π ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π° Π»Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ°ΠΌ ΠΏΠΎΠ΄Ρ Π²Π°ΡΡΠ²Π°Π»ΠΈΡΡ.
Π ΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? ΠΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ³, Π²ΡΠΊΠ°ΡΠΈΠ»ΠΈ ΠΈ ΡΡΠΎ? ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΡ Π²ΡΠΊΠ°ΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³, Π° ΠΏΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΊΡ Π·Π°Π±ΡΠ»ΠΈ, ΡΠ°ΠΌ ΠΎΡΡΠ°Π»ΡΡ ΡΡΠ°Π»ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΠΎΠΊΠ° ΠΌΡ Π²ΡΠΊΠ°ΡΡΠ²Π°Π»ΠΈ, Π³Π΄Π΅-ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ, Π° Π³Π΄Π΅-ΡΠΎ Π½Π΅Ρ. Π ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈΡΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ, Π° Π³Π΄Π΅-ΡΠΎ ΡΠΎ ΡΡΠ°ΡΡΠΌ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ Π² ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Ρ. ΠΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠ½Π° Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π° Π»Π΅ΡΡ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠΎ group membership. ΠΡΠ΅Π³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½Π°Π±ΠΎΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ², ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΎΡΠΈΠΌ Π·Π½Π°ΡΡ β ΠΊΡΠΎ ΠΈΠ· Π½ΠΈΡ ΠΆΠΈΠ², ΠΊΡΠΎ ΠΈΠ· Π½ΠΈΡ ΠΌΠ΅ΡΡΠ². ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΠ°ΡΡΠ΅Ρ, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΡΠΊΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π° Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΡΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠΎ leader election, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π½Π°ΡΡ, ΠΊΡΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΉ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² β ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΈ ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΠ΅Ρ ΠΈΡ ΠΏΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ. ΠΠ½ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΡΠ΄ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΡΡ, Π±ΡΠ΄ΡΡ Π·Π° Π½ΠΈΠΌ ΠΈΠ΄ΡΠΈ. ΠΡΠΆΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ , ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π»ΠΎΡΡ Π΄Π²ΠΎΠ΅ Π»ΠΈΠ΄Π΅ΡΠΎΠ².
ΠΡΠ΅ Π΅ΡΡΡ β mutually exclusive access. Π’ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ. ΠΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠ΅ΡΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ ΡΡΠ΅ΠΉΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π±ΡΠ» ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. ΠΠ΄Π΅ΡΡ ΡΠ΅ΡΡΡΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅. Π ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π·Π½ΡΡ Π½ΠΎΠ΄ Π½Π°ΡΠ΅ΠΉ Π‘Π΅ΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°, Π° Π½Π΅ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΄Π° ΡΡΠΎ-ΡΠΎ. ΠΡΠΎ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅, locks.
ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ZooKeeper ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ΅ΡΠΈΡΡ. Π Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ². ΠΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΡΠΎ-ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΡΠ° ΡΡΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ Π½Π΅ Π·Π°Π²ΠΈΡΠ°ΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠΎΠ³ΠΎ ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΆΠ΄ΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π²Π΅ΡΡ.
ΠΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
Π ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ²ΠΈΠ΄ΠΈΡ ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ZooKeeper ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΄Π²ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ . ΠΠ΅ΡΠ²ΡΠΉ β ΡΡΠΎ standalone, Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΎΠ΄Π΅. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ β 100 ΠΌΠ°ΡΠΈΠ½, ΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° 100 ΠΌΠ°ΡΠΈΠ½Π°Ρ . ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΠΈΠ½ΠΎΠΊ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ZooKeeper. Π ΠΈΡΠΏΠΎΠ²Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ high availability. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ZooKeeper Ρ ΡΠ°Π½ΠΈΡ Π²ΡΡ ΠΊΠΎΠΏΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ·ΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ½ Π½Π΅ ΡΠ°ΡΠ΄ΠΈΡ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ ΠΈΡ . Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ β ΡΡΠΎ ΠΌΠΈΠ½ΡΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ β ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ½ Π½Π΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½, ΡΡΠΎ Π½Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ .
ΠΠ°Π½Π½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΡΠΎΠ±Ρ Π½Π°ΠΌ Π½Π΅ Π΄Π΅ΡΠ³Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ, Π½Π΅ Π½Π°Π³ΡΡΠΆΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. Π£ΠΌΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π½Π°Π΅Ρ ΠΎΠ± ΡΡΠΎΠΌ ΠΈ ΠΊΠ΅ΡΠΈΡΡΠ΅Ρ Ρ ΡΠ΅Π±Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ-ΡΠΎ Ρ Π½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ. ΠΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ±ΡΠ°Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΠ΄Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ. Π ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΠ΅ΡΠ΅Π½ΠΈΠΉ β ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠΊΠ»ΠΈΠΊ. Π ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π½Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ β Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π»ΠΈ ΡΡΠΎ-ΡΠΎ? ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ. ΠΡΠΎ watch mechanism, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ. ΠΡΠΎ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
Client β ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ZooKeeper.
Server β ΡΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ZooKeeper.
Znode β ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ ΡΡΡΠΊΠ° Π² ZooKeeper. ΠΡΠ΅ znode Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ZooKeeper ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡ Π΅ΠΌΡ, Π² Π²ΠΈΠ΄Π΅ Π΄Π΅ΡΠ΅Π²Π°.
ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ΅ΡΠ²ΡΠΉ β ΡΡΠΎ update/write, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΠ΅ΡΠ΅Π²ΠΎ ΠΎΠ±ΡΠ΅Π΅.
Π Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ ΠΈ ΠΎΡΡΡΠ±Π°Π΅ΡΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΡΠΈΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ZooKeeper.
ΠΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ ZooKeeper Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΌΡ ΠΏΠΎΡΠ»ΠΈ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ ΠΎΡ ΠΊΠΎΡΠ½Ρ. Π Π΄Π°Π»ΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΡΠΎ Π²ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ znodes.
ΠΠ°ΠΆΠ΄Π°Ρ znode ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΡΠ΅Π±Π΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 10 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ. Π Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ znode ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΡΠ΅ΠΉ.
Znode Π±ΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ. Π ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ znode ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠΏ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ.
ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ°. ΠΠ΅ΡΠ²ΡΠΉ β ΡΡΠΎ ephemeral flag. Znode ΠΆΠΈΠ²Π΅Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΡΠ΅ΡΡΠΈΡ. Π ΠΏΠΎΠΊΠ° ΡΡΠ° ΡΠ΅ΡΡΠΈΡ ΠΆΠΈΠ²Π°, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ. ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅ΡΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΎΡΠΎΠΉ ΡΠΈΠΏ β ΡΡΠΎ sequential flag. ΠΠ½ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° ΠΏΡΡΠΈ ΠΊ znode. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π±ΡΠ» ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ 1_5. Π ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ Π½ΠΎΠ΄Ρ, ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΠ»Π° p_1, Π²ΡΠΎΡΠ°Ρ β p_2. Π ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Π² ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ ΠΏΡΡΡΠΈ, Π° ΡΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠΏ Π½ΠΎΠ΄Ρ β sequential.
Π Π΅Π³ΡΠ»ΡΡΠ½Π°Ρ znode. ΠΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΆΠΈΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎ ΠΈΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Π΅ΠΉ ΡΠΊΠ°ΠΆΠ΅ΠΌ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π²Π΅ΡΡ β ΡΡΠΎ watch flag. ΠΡΠ»ΠΈ ΠΌΡ Π΅Π³ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ, ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½ΠΎΠ΄Ρ. ΠΠΎΠΊΠ°ΠΆΡ ΠΏΠΎΡΠΎΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ. Π‘Π°ΠΌ ZooKeeper ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π½ΠΎΠ΄Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ΅Ρ Π°Π»ΠΈ. ΠΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ.
Π ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ°ΠΌΠΈ. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
ΠΠ΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ ΡΠ΅ΡΡΠΈΠΈ. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ΡΡΠΈΠΈ. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ-ΡΠ°ΠΊΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°ΠΉΠΌΠ°ΡΡ. Π‘Π΅ΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½ Π·Π° Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΉΠΌΠ°ΡΡΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π», ΡΠ΅ΡΡΠΈΡ ΠΎΡΠ²Π°Π»ΠΈΠ²Π°Π΅ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ°ΠΌ Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΡΡΡΡ.
Π£ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ API ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΡΠΊΠΈ. Π’ΠΎΡ Π²ΡΠ·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, create ΡΠΎΠ·Π΄Π°Π΅Ρ znode ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΎ ΠΏΡΡΡ ΠΊ znode, ΠΏΡΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΌ ΠΎΡ ΠΊΠΎΡΠ½Ρ. Π ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠ΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ. Π ΡΠΈΠΏ ΡΠ»Π°Π³Π°. Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡ ΠΊ znode.
ΠΡΠΎΡΠΎΠ΅ β ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. Π’ΡΡ ΡΠΈΡΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, ΠΊΡΠΎΠΌΠ΅ ΠΏΡΡΠΈ ΠΊ znode ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π²Π΅ΡΡΠΈΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π° ΡΠ° znode, Π΅ΡΠ»ΠΈ Π΅Π΅ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ, Π±ΡΠ΄Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅.
ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΡ Π²Π΅ΡΡΠΈΡ, ΡΠΎ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Β«-1Β».
Π’ΡΠ΅ΡΡΠ΅ β ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ znode. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π½ΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈΠ½Π°ΡΠ΅ false.
Π ΡΡΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ flag watch, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΡΠΎΠΉ Π½ΠΎΠ΄ΠΎΠΉ.
ΠΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΡ flag Π΄Π°ΠΆΠ΅ Π½Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ Π½ΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ. ΠΡΠΎ ΡΠΎΠΆΠ΅ Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΡΠ΅ ΠΏΠ°ΡΠΎΡΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² β ΡΡΠΎ getData. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΠΎ znode ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ flag watch. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π½ΠΎΠ΄Ρ Π½Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅.
Π ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ SetData. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ version. Π Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ, ΡΠΎ Π±ΡΠ΄ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅ Π½Π° znode ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Β«-1Β», ΡΡΠΎΠ±Ρ ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΡΡΠΎ getChildren. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ znode, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π΅ΠΉ. ΠΠΎΠΆΠ΅ΠΌ Π·Π° ΡΡΠΈΠΌ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² flag watch.
Π ΠΌΠ΅ΡΠΎΠ΄ sync ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°Π·Ρ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ ΠΈ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ write, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ Π½Π° Π΄ΠΈΡΠΊ, ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ Π²Π΅ΡΠ½ΡΠ» Π²Π°ΠΌ ΠΎΡΠ²Π΅Ρ, Π½Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ Ρ Π²Π°Ρ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ. Π Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π΅ΡΠ΅Π½Π°, ΡΡΠΎ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π»ΠΎΡΡ, Π² ΡΠ°ΠΌΠΎΠΌ Π΄ΠΈΡΠΊΠ΅ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, Π³Π΄Π΅ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΡΠΎΠ²Π½ΠΈ Π±ΡΡΠ΅ΡΠΎΠ², ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊ.
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π½ΠΎ ΠΎΠ½ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅Π½.
ΠΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ update/write, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ create, setData, sync, delete. Π read β ΡΡΠΎ exists, getData, getChildren.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΎ-ΡΠΎ. ΠΠΎΡΠ²ΠΈΠ»ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΎΡΠΊΠ΅Ρ. ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Ρ, Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ. Π Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΠ°. ΠΠ°ΠΊ ΠΎΠ½ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ZooKeeper? Π Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠΎ ΠΊΠ°ΠΊ ΠΌΡ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ? Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠ΅ Π²ΠΎΡΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π°Ρ Π±ΡΠ»ΠΈ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΅Π΅?
Π ZooKeeper ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ Π½Π°ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ znode. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ Π½ΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π² Π½Π΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½ΠΎΠ΄Ρ, Π³Π΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠ°ΠΊ ΠΈ Π½Π΅Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π΅ Ρ ΡΠ°Π½ΠΈΡΡ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ getData Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΠΎΡΠΊΠ΅ΡΠ° ΠΈΠ· Π½ΠΎΠ΄Ρ. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ true. ΠΡΠ»ΠΈ ΡΡΠΎΠΉ Π½ΠΎΠ΄Ρ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π΅Ρ, Π½Π°Ρ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ, Π»ΠΈΠ±ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΡΠΎ ΡΡΠ°Π²ΠΈΠΌ true. Π Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠΎΠΉ Π½ΠΎΠ΄Π΅, ΠΌΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ·Π½Π°Π΅ΠΌ.
SetData. ΠΠ°Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Β«-1Β», Ρ. Π΅. Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΡ, ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ Π½Π°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄Π½Π°, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ²Π΅Π½Ρ. ΠΠ΄Π΅ΡΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΎΠ½Π° ΠΎΠ΄Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π΅ΡΡΠΈΡ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π»ΠΈΡΡ, ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π² ΡΡΠΎΠΉ Π½ΠΎΠ΄Π΅. Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ, ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·. Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π΅ ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ . ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π° β ΡΡΠΎ group membership. Π£ Π½Π°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅ΡΡΡ ΠΊΡΡΠ° Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π±Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π ΡΠ°ΠΊΠΆΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΠ°ΡΡΠ΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅ ΠΎΡΠΊΡΠ΄Π°-ΡΠΎ ΡΠ·Π½Π°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π²ΠΎΡΠΊΠ΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ Π΅ΡΡΡ.
ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ? ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ΄Ρ workers ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΄Π° ΠΏΠΎΠ΄ΡΡΠΎΠ²Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° create. Π£ ΠΌΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π° ΡΠ»Π°ΠΉΠ΄Π΅. Π’ΡΡ Π½ΡΠΆΠ½ΠΎ sequential ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΠΎΠ³Π΄Π° Π²ΡΠ΅ Π²ΠΎΡΠΊΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ. Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ children ΡΡΠΎΠΉ Π½ΠΎΠ΄Ρ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π²ΠΎΡΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ.
ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠ°ΡΠ½Π°Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² Java-ΠΊΠΎΠ΄Π΅. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΊΠΎΠ½ΡΠ°, Ρ ΠΌΠ΅ΡΠΎΠ΄Π° main. ΠΠΎΡ ΡΡΠΎ Π½Π°Ρ ΠΊΠ»Π°ΡΡ, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ host, ΠΊΡΠ΄Π° ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡΡ, Ρ. Π΅. Π·Π°Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ. Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° β ΠΈΠΌΡ Π³ΡΡΠΏΠΏΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅? ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. Π’ΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ZooKeeper. ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡ hosts. Π Π·Π°Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² 5 ΡΠ΅ΠΊΡΠ½Π΄. Π Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ»Π΅Π½, ΠΊΠ°ΠΊ connectedSignal. ΠΠΎ ΡΡΡΠΈ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π³ΡΡΠΏΠΏΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌΡ ΠΏΡΡΠΈ. ΠΠ°Π½Π½ΡΠ΅ ΡΡΠ΄Π° Π½Π΅ ΠΏΠΈΡΠ΅ΠΌ, Ρ ΠΎΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ. Π Π½ΠΎΠ΄Π° ΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ persistent. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½Π°Ρ Π½ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ΄Π΅ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΡΠΈΡ. ΠΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡΠΈΡ ΠΆΠΈΠ²Π°. Π ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ΅ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ, ΡΠΎ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ close ΠΈ Π²ΡΠ΅, ΡΠ΅ΡΡΠΈΡ ΠΎΡΠ²Π°Π»ΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠΎ Π½Π° ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΡΡΠΎ-ΡΠΎ ΠΎΡΠ²Π°Π»ΠΈΡΡΡ, ΡΡΠΎΠ±Ρ ZooKeeper ΠΎΠ± ΡΡΠΎΠΌ ΡΠ·Π½Π°Π» ΠΈ ΡΠ΅ΡΡΠΈΡ ΠΎΡΡΡΠ±ΠΈΠ».
ΠΠ°ΠΊ Π·Π°Π»ΠΎΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΡΡΡ? ΠΠ΄Π΅ΡΡ Π²ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. Π£ Π½Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ², Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π°Π»ΠΎΡΠΈΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π½ΠΎΠ΄Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ lock1. ΠΡΠ»ΠΈ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΡ, Π·Π½Π°ΡΠΈΡ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ lock ΡΡΠ΄Π°. Π Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΡ, ΡΠΎ Π²ΠΎΡΠΊΠ΅Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ getData ΠΎΡΡΡΠ΄Π°, Π° Ρ. ΠΊ. Π½ΠΎΠ΄Π° ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π°, ΡΠΎ ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ ΡΡΠ΄Π° watcher ΠΈ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠΎΠΉ Π½ΠΎΠ΄Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΠΌΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ·Π½Π°Π΅ΠΌ. Π ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΡ Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°ΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Π·Π°Π±ΡΠ°Π»ΠΈ ΡΡΡ Π½ΠΎΠ΄Ρ, Π·Π°Π±ΡΠ°Π»ΠΈ ΡΡΠΎΡ lock, ΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ lock Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΌΡ ΠΎΡ Π½Π΅Π³ΠΎ ΠΎΡΠΊΠ°ΠΆΠ΅ΠΌΡΡ, Ρ. ΠΊ. Π½ΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅ΡΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ½Π° ΠΈΡΡΠ΅Π·Π½Π΅Ρ. Π Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±ΡΠ°ΡΡ lock Π½Π° ΡΡΡ Π½ΠΎΠ΄Ρ, ΡΠΎΡΠ½Π΅Π΅ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΡ ΡΡΠΎ ΡΡΠΏΠ΅ΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π»ΠΈΠ΄Π΅ΡΠ°. Π’ΡΡ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π½ΠΎ ΡΠΎΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π§ΡΠΎ Ρ Π½Π°Ρ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ? ΠΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π½ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ Π²ΡΠ΅Ρ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ². ΠΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎ Π»ΠΈΠ΄Π΅ΡΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, Ρ. Π΅. ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ Π½Π°Ρ Π²ΠΎΡΠΊΠ΅Ρ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π° ΡΡΠΈΠΌ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ. ΠΠ½ ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ Π»ΠΈΠ΄Π΅Ρ ΡΠΆΠ΅ Π΅ΡΡΡ.
ΠΡΠ»ΠΈ Π»ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΌΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ²Π°Π»ΠΈΠ»ΡΡ, ΡΠΎ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΠ΄Π΅ΡΠ°. Π Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΠΎ Π½Π°Ρ Π²ΠΎΡΠΊΠ΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ. Π Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΏΠ΅Π» ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΠ΄Π΅ΡΠ°, ΡΠΎ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ½ΡΡΡ, ΠΊΡΠΎ ΡΡΠΎ ΠΈ ΠΏΠΎΡΠΎΠΌ Π·Π° Π½ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ.
Π’ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ, herd effect, Ρ. Π΅. ΡΡΡΠ΅ΠΊΡ ΡΡΠ°Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ΄Π΅Ρ ΡΠΌΠΈΡΠ°Π΅Ρ, ΡΠΎ ΡΠΎΡ, ΠΊΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΏΠ΅Π΅Ρ, ΡΠΎΡ ΠΈ ΡΡΠ°Π½Π΅Ρ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ.
ΠΡΠΈ Π·Π°Ρ Π²Π°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ lock, Π½ΠΎ Π±Π΅Π· hert effect. ΠΠ°ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΊΠΈ Π²ΡΠ΅Ρ id Π½ΠΎΠ΄ Π΄Π»Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π½ΠΎΠ΄Ρ Ρ lock. Π Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΡΡ Π½ΠΎΠ΄Ρ, lock Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ· ΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ, ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π·Π°Ρ Π²Π°ΡΠΈΠ»ΠΈ lock. ΠΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ lock. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΡΡΠΎ ΡΠΎΡ id, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ lock, ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ. Π Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ, ΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅.
ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΊΠΈΠΉ id, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ lock, ΡΠΎ ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ Π½Π° ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ watcher ΠΈ ΠΆΠ΄Π΅ΠΌ Π½ΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ° ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. Π’. Π΅. ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΎΡ lock. Π ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ ΠΎΡΠ²Π°Π»ΠΈΡΡΡ, ΠΌΡ Π½Π΅ ΡΡΠ°Π½Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ id ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ lock, ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π»ΠΎΡΠΈΡΡΡΡ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠ°Π·Ρ ΠΈΠ΄Π΅ΠΌ ΡΡΠ΄Π° ΠΈ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΎΡ lock, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ³Π»ΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ.
ΠΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ ZooKeeper? ΠΡΡΡ 4 ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² β Request. Π ΡΠ°ΠΊΠΆΠ΅ ZooKeeper Atomic Broadcast. ΠΡΡΡ Commit Log, ΠΊΡΠ΄Π° Π·Π°Π½ΠΎΡΡΡΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΡΠ°ΠΌΠ° In-memory Replicated DB, Ρ. Π΅. ΡΠ°ΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π²ΡΠ΅ ΡΡΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Request Processor. Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ΄ΡΡ ΡΡΠ°Π·Ρ Π² In-memory Π±Π°Π·Ρ.
Π‘Π°ΠΌΠ° Π±Π°Π·Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π°. ΠΠ° Π²ΡΠ΅Ρ instances ZooKeeper Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²ΠΈΡΡ Π±Π΄ ΠΏΠΎΡΠ»Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Commit log. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΡ, ΠΎΠ½ΠΈ ΠΏΠΈΡΡΡΡΡ ΡΡΠ΄Π°, ΡΡΠΎΠ±Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΡΠΎΡ log ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠΈΠ³ΡΠ°ΡΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ½Π°ΠΏΡΠΎΡΡ Π±Π°Π·Ρ.
ZooKeeper Atomic Broadcast β ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ .
ZAB Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π»ΠΈΠ΄Π΅ΡΠ° Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ΄Ρ ZooKeeper. ΠΡΡΠ³ΠΈΠ΅ Π½ΠΎΠ΄Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΅Π΅ ΡΠΎΠ»ΠΎΠ²Π΅ΡΠ°ΠΌΠΈ, ΠΆΠ΄ΡΡ ΠΎΡ Π½Π΅Π΅ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠ»ΠΈ Π½Π° Π½ΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎ ΠΎΠ½ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π»ΠΈΠ΄Π΅ΡΡ. Π’ΠΎΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΡΠ»Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ»ΠΎΠ²Π΅ΡΠ°ΠΌ. ΠΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ, Ρ. Π΅. ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ broadcasting Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ write request. ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π΅Π³ΠΎ Π·Π°Π΄Π°ΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² transactional update. ΠΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ.
Π ΡΡΡ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π°ΠΏΠ΄Π΅ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅? ΠΡΠ° Π²Π΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π²Π° ΡΠ°Π·Π°, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Ρ. Π΅. ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. Π ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π½Π°ΠΊΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π°Π»ΠΈΠ»ΠΈΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π½Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, Ρ. Π΅. Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π΄Π° ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com