ΠΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ C++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ZooKeeper, etcd ΠΈ Consul KV
Π ΠΌΠΈΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΡΠΈΠΏΠΎΠ²ΡΡ
Π·Π°Π΄Π°Ρ: Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΡΡΠ°Π²Π΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ·Π»ΠΎΠ², Π΄Π΅ΡΠ΅ΠΊΡΠΈΡ ΡΠ±ΠΎΠΉΠ½ΡΡ
ΡΠ·Π»ΠΎΠ², Π²ΡΠ±ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠ°
ΠΠΎ ΡΡΡΠΈ Π²ΡΠ΅ ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·ΡΠ΅ΠΌΡΠ΅ key-value Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π₯ΠΎΡΡ ΠΈΡ
ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ, ΠΎ ΡΡΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ²ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ, Π·Π°Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°ΡΠ°ΡΠ΅Π½ΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ΅ΡΠ°ΡΡΠΈΡ
ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ΄Π΅Ρ, ΠΏΡΠΈΠ·Π²Π°Π½Π½Π°Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΡΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π°Π²ΡΡΡΠ°Π»ΠΈΠΉΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ°Π»ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΌ Π°Π³Π΅Π½ΡΡΡΠ²Π΅, Π° Π½Π°ΠΌ β Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² β Π²ΡΠΏΠ°Π»ΠΎ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ, ΠΎ ΡΡΠΌ Ρ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ZooKeeper, etcd ΠΈ Consul KV. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C++, Π½ΠΎ Π΅ΡΡΡ ΠΏΠ»Π°Π½Ρ ΠΏΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ.
ΠΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ
Π§ΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΡΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΆΠ΅ Ρ Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ, ΠΈ ΡΠ΅ΠΌ ΠΎΠ½ΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ.
ZooKeeper
ΠΠ»ΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ·Π»Π°ΠΌΠΈ (znodes). Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ ΡΠ·Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΅Π³ΠΎ Π΄Π΅ΡΠ΅ΠΉ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ znode (create) ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (setData) ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ: ΡΠΈΡΠ°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠ»ΡΡΠ΅ΠΉ. Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·Π»Π°, ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ watches. Watch β ΡΡΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²Π΅ΡΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΠ² ΡΠ»ΡΠΆΠ°Ρ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ. ΠΠ½ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΡΠ΅ΡΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π²ΡΠ΅Π³ΠΎ ΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ°ΡΡ ZooKeeper ΠΎ ΡΠ²ΠΎΡΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ, ΡΡΠΈ ΡΠ·Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β Π½Π°Π±ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΈΠ±ΠΎ Π²ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π»ΠΈΠ±ΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΡ Π±Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
etcd
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ²Π½ΠΎ Π²Π΄ΠΎΡ
Π½ΠΎΠ²Π»ΡΠ»ΠΈΡΡ ZooKeeperβΠΎΠΌ, ΠΈ ΠΏΠΎΡΠΎΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΡΡ ΠΈΠ½Π°ΡΠ΅. ΠΠ΅ΡΠ°ΡΡ
ΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π·Π΄Π΅ΡΡ Π½Π΅Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ. Π’Π°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½Π° ΠΎΡΠ΅Π½Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½Π°, ΠΈ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΡΠ΅ΡΠ΅Π· Π½Π΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΌΡΠ»ΠΈΡΡΠ΅ΡΡΡ.
Π etcd Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ compare-and-set, Π½ΠΎ Π΅ΡΡΡ ΠΊΠΎΠ΅-ΡΡΠΎ ΠΏΠΎΠ»ΡΡΡΠ΅ β ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΠ½ΠΈ Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ
ΡΡΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
, Π½ΠΎ Π² etcd ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ
ΠΎΡΠΎΡΠΈ. ΠΠ½ΠΈ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΡΡΡΡ
Π±Π»ΠΎΠΊΠΎΠ²: check, success, failure. ΠΠ΅ΡΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π±ΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²Π΅ΡΠ½Ρ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊ success, ΠΈΠ½Π°ΡΠ΅ β failure. Π Π²Π΅ΡΡΠΈΠΈ API 3.3 Π±Π»ΠΎΠΊΠΈ success ΠΈ failure ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Π’ΠΎ Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·
Watches Π·Π΄Π΅ΡΡ ΡΠΎΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Ρ ΠΎΡΡ ΠΎΠ½ΠΈ ΡΡΡΡΠΎΠ΅Π½Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠΌΠΈ. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ watchβΠ° Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠ»ΡΡΠ΅ΠΉ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΡΡΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠΌΠ΅Π½ΠΈΡΠ΅ watch, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅. Π etcd Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΡΠ΅ΡΡΠΈΠΉ ZooKeeper ΡΠ²Π»ΡΡΡΡΡ leases.
Consul KV
ΠΠ΄Π΅ΡΡ ΡΠΎΠΆΠ΅ Π½Π΅Ρ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Π½ΠΎ Consul ΡΠΌΠ΅Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π΅ΡΡΡ: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ, ΡΠΎ Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΒ Β«ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎΠΌΒ» ΠΊΠ»ΡΡΠ°. Π’Π°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Consul ΡΠΌΠ΅Π΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π»ΠΈΡΡ ΠΊΠ»ΡΡΠΈ, Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ Β«Π΄Π΅ΡΠ΅ΠΉΒ». ΠΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ: Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΡΡ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠ»ΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π΄Π΅ΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄Π΅ΡΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΌΠ΅ΡΡΠΎ watchβΠ΅ΠΉ Π² Consul ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ HTTP Π·Π°ΠΏΡΠΎΡΡ. ΠΠΎ ΡΡΡΠΈ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π°ΡΡΠ΄Ρ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ, ΠΎΡΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ°Π·Ρ, ΠΈΠ½Π°ΡΠ΅ β ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ ΠΊ ΠΊΠ»ΡΡΠ°ΠΌ. Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ etcd ΠΈ ZooKeeper, Π³Π΄Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ, Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅ΡΡΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡ Π½ΠΈΡ
ΠΎΡΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΡΡΡ. ΠΠΎΡΡΡΠΏΠ½Ρ
Π‘Π²ΠΎΠ΄ΠΈΠΌ Π²ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ
Π‘Π°ΠΌΠΎΠΉ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ZooKeeper. ΠΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² etcd, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΈ Π² ZooKeeper, Π½ΠΈ Π² Consul. ΠΡΡΠ°ΡΡΡ Π²ΠΎΠ±ΡΠ°ΡΡ Π²ΡΡ Π»ΡΡΡΠ΅Π΅ ΠΎΡ Π²ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΡΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ZooKeeper ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ:
sequence, container ΠΈ TTL nodes Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ- ACL Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ
- ΠΌΠ΅ΡΠΎΠ΄ set ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» (Π² ZK setData Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅)
- ΠΌΠ΅ΡΠΎΠ΄Ρ set ΠΈ cas ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ (Π² ZK ΡΡΠΎ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅)
- ΠΌΠ΅ΡΠΎΠ΄ erase ΡΠ΄Π°Π»ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎΠΌ (Π² ZK delete Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π΅ΡΡΠΈΠ½Ρ Π΅ΡΡΡ Π΄Π΅ΡΠΈ)
- Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅ΡΡΠΈΡ β Π²Π΅ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π² ZK
ΠΈΡ ΡΡΠΈ )
ΠΡΠΊΠ°Π· ΠΎΡ sequential ΡΠ·Π»ΠΎΠ² ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π² etcd ΠΈ Consul Π΄Π»Ρ Π½ΠΈΡ Π½Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, Π° ΠΏΠΎΠ²Π΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ZooKeeper ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠ½Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»Π° Π±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π² etcd ΠΈ Consul Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΡΠΈΠΊΠ° Π΄Π΅ΡΠ΅ΠΉ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ΄Π°Π»ΡΡΡ Π²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ.
Π’ΠΎΠ½ΠΊΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ Π² etcd
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² etcd ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΎΡΡ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΡ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ "/foo"
, Π²Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ["/foo", "/fop")
. ΠΠΎ ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΎ Π±Ρ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠ»ΡΡΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ,
"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"
Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅Ρ
Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ
Π΄Π΅ΡΠ΅ΠΉ ΠΊΠ»ΡΡΠ° "/foo"
ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΏΡΠΎΡΠΈΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ["u02/foo/", "u02/foo0")
. ΠΠ°, Π² ASCII "0"
ΡΡΠΎΠΈΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ "/"
.
ΠΠΎ ΠΊΠ°ΠΊ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠ½Ρ? ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π²ΠΈΠ΄Π° ["uXX/foo/", "uXX/foo0")
Π΄Π»Ρ XX ΠΎΡ 01 Π΄ΠΎ FF. Π ΡΡΡ ΠΌΡ ΡΠΏΡΡΠ»ΠΈΡΡ Π²
Π ΠΈΡΠΎΠ³Π΅ Π±ΡΠ»Π° ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½Π° ΠΏΡΠΎΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ°, ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄Π΅ΡΠ΅ΠΉ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
"/very" -> "/u00very"
"/very/long" -> "/very/u00long"
"/very/long/path" -> "/very/long/u00path"
Π’ΠΎΠ³Π΄Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° "/very"
ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ "/u00very"
ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ["/very/", "/very0")
, Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π΄Π΅ΡΠ΅ΠΉ β Π² Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ["/very/u00", "/very/u01")
.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π² ZooKeeper
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ», Π² ZooKeeper Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ·Π΅Π», Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π΄Π΅ΡΠΈ. ΠΡ ΠΆΠ΅ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π°Π»ΡΡΡ ΠΊΠ»ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎΠΌ. ΠΠ°ΠΊ Π±ΡΡΡ? ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΠΎ. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΏΠΎΠ»ΡΡΠ°Ρ Π΄Π΅ΡΠ΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠΎΠΈΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ·Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Π½ΡΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π°Π»ΠΈΡΡΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π΅ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΎΡ Π΄Π΅ΡΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ° Π²Π΅ΡΡΠΈΠ½Π° ΡΠΆΠ΅ Π±ΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π°. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π²Π΅ΡΡΠΌΠ° Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π΄Π΅ΡΠΈ ΠΈ ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎΠΌ, ΡΠ΄Π°Π»ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΊΠ»ΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² etcd ΠΈ Consul.
set Π² ZooKeeper
Π ZooKeeper ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π΄Π΅ΡΠ΅Π²Π° (create, delete, getChildren) ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΠ·Π»Π°Ρ (setData, getData).ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΡ: create Π²Π΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΡΠ·Π΅Π» ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½, delete ΠΈΠ»ΠΈ setData β Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π΅ΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ°ΠΌ ΠΆΠ΅ Π±ΡΠ» Π½ΡΠΆΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ set, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ, Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠ»ΡΡΠ°.
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² β ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΡΠ·Π΅Π». ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π²ΡΠ·Π²Π°ΡΡ setData, ΠΈΠ½Π°ΡΠ΅ β create. ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ½ΡΠ» ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ Π²ΡΡ ΡΠ½Π°ΡΠ°Π»Π°. ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, β ΡΡΠΎ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ Π²ΡΠ·Π²Π°ΡΡ create. Π£ΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΡΠ·Π»Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΈ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ create Π²Π΅ΡΠ½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ setData. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ Π²Π΅ΡΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π° ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ, ΠΈ setData ΡΠΎΠΆΠ΅ Π²Π΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ Π²ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ, Π½ΠΎ ΡΡΠΎΠΈΡ Π»ΠΈ?
ΠΡΠ»ΠΈ ΠΎΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π΅ΡΠ½ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠΎ ΠΌΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π»ΠΎ ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠ΅Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° set. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠ΅ Π±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΡ Π½Π΅ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΠΎΠ½ΠΎ ΡΠΆΠ΅ ΡΡΡΡΡΠΎ. ΠΠ½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ set Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ.
ΠΠΎΠ»Π΅Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΡΠ²Π»Π΅ΡΡΠΌΡΡ ΠΎΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ° Π±ΡΠ»Π° ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ: Π² Linux, MacOS ΠΈ Windows Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΌΡ Π²Π΅Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ Linux, Π° Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Π½Π°ΡΠ°Π»ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΆΠ΅. ΠΡΠΎ Π²ΡΠ·Π²Π°Π»ΠΎ ΠΌΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΡΡΠΏΠΈΡΡΡΡ. Π ΠΈΡΠΎΠ³Π΅ ΡΠ΅ΠΉΡΠ°Ρ Π² Linux ΠΈ MacOS ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ, Π° Π² Windows β ΡΠΎΠ»ΡΠΊΠΎ Consul KV.
Π‘ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΠΌΡ ΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π ΡΠ»ΡΡΠ°Π΅ Ρ ZooKeeper Π²ΡΠ±ΠΎΡ ΠΏΠ°Π» Π½Π°
ΠΠ΄ΠΎΡ
Π½ΠΎΠ²ΠΈΠ²ΡΠΈΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ZooKeeper C++, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΎΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π ZooKeeper C++ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ future/promise. Π STL ΠΎΠ½ΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²Π΅ΡΡΠΌΠ° ΡΠΊΡΠΎΠΌΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Ρ
ΠΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ then ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠ°ΡΠ° promise/future. ΠΠΎΠ²ΡΠΉ future Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ promise Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΠΎΡΠΎΠΊ ΠΈΠ· ΠΏΡΠ»Π° Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ futures ΠΈ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ wait_for. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² promise.
ΠΡΠΎΡ ΠΆΠ΅ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ etcd ΠΈ Consul. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ². ppconsul Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡ Π·Π°ΡΠΈΡΠ΅Π½Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ.
Π‘ grpc ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½ΠΎ Π΅ΡΡΡ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ. Π etcd watches ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ΅ΡΠ΅Π· grpc streams. ΠΡΠΎ ΡΠ°ΠΊΠΈΠ΅ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ stream Π΄Π»Ρ Π²ΡΠ΅Ρ
watches ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ Π²ΠΎΡ grpc Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² stream. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ watchβΠ° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ, ΠΏΠΎΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠΎΠ³
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΌΠΈ:
ΠΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com