Π‘ΠΎΠΎΠΏΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ»Π΅Π³ΠΈ, Π²ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π°ΡΠ° Π½Π° Π»Π΅ΡΠΎΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌ Π΄Π° ΠΎΠ±ΡΠ°Π²Π°ΠΌ ΡΡΡΠ΅ Π΅Π΄Π½Π° ΡΠ΅ΡΠΈΡΠ° Π½Π°ΠΏΠΈΡΠΈ Π·Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΎΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΡΠ΅Π΄ΠΈΡΠΈ: βΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΡ VTradeβ - ΠΎΠ±ΠΈΠ΄ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ ΡΠ°ΠΌΠΊΠ° Π·Π° ΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π‘Π΅ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ° ΠΈΡΠΏΠΈΡΠ° ΡΠ΅ΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π°, Π°ΡΠΊΡΠΈΡΠ° ΠΈ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°. ΠΠ° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, Π²Π΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΠΌ Π΄Π° Π³Π»Π°ΡΠ°ΡΠ΅ Π·Π° ΡΠ΅ΠΌΠΈΡΠ΅ ΠΊΠΎΠΈ Π½Π°ΡΠΌΠ½ΠΎΠ³Ρ Π²Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π°Ρ.
ΠΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ° ΠΎΠ΄ ΡΠ΅ΡΠΈΡΠ°ΡΠ° Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ Erlang/Elixir. ΠΠ
ΠΠ΅Π½Π΅Ρ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π²ΠΎΠΎΠΏΡΡΠΎ.
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈ
ΠΠΎ ΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΠΆΠΈΠ²ΠΎΡ, ΠΊΠΎΠ³Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΡΡΠ»ΡΠ³Π°, ΡΠ΅ΡΡΠΎΠΏΠ°ΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° Π²ΠΎ Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, ΠΊΠΎΡΠ° Π³ΠΎ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, ΠΌΠΎΡΠ° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π±Π°ΡΠ°ΡΠ°ΡΠ° req-resp ΠΈ Π΄Π° ΠΈΠ·Π²Π΅ΡΡΡΠ²Π° Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΎΡ ΠΏΡΠ΅ΠΊΡ pub-sub. ΠΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½: Π·Π°Π΄ ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΠΈΠΌΠ° Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΊΠΎΡ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π²ΡΠ²Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ°.
Π‘ΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΡΠ»ΠΎΠΆΠ΅Π½Π° ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΡΡΠ»ΡΠ³Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½Π° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡΠ°:
- ΡΠ΅Π³Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° Π±Π°ΡΠ°ΡΠ° Π½Π° 5 ΠΊΠ»Π°ΡΡΠ΅ΡΡΠΊΠΈ ΡΠ°Π·Π»ΠΈ,
- Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° Π·Π°Π΄Π°ΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°Π΄Π½ΠΈΠ½Π°,
- ΠΈ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ ΡΠΏΠΈΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΎΡ.
ΠΠΎΠΌΠ΅Π½ΡΠ°Ρ: ΠΠ΅ Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ Π·Π° ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΠΎΡΠ°Π½ΠΎ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²Π΅ΡΠ΅ ΠΈΠΌΠ° ΡΠΈΠ³ΡΡΠ΅Π½ ΠΈ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π΅Π½ ΡΠ»ΠΎΡ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, Π° ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ Π½Π΅Π³ΠΎ.
ΠΡΠΈΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ ΠΎΠΏΠΈΡ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΡΠ°Π½Π° ΠΏΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΠ°Π½. ΠΠ΄ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ, ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΠ° Π΄Π° Π³ΠΎ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΠΈΠΌΠ΅ ΠΏΡΠ²ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π²ΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° req-resp.
ΠΠ°ΡΠ°ΡΠ΅ΡΠΎ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π²ΠΎ Π·Π°Π΄Π½ΠΈΠ½Π° ΡΠ΅ ΡΠ°Π²ΡΠ²Π° ΡΠ΅ΡΡΠΎ. ΠΠ°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΡΠ»ΡΠΈΠΌΠ΅Π΄ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΡΠΎΡΠΈΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ΅Π΄ΠΈΡΠΌΠΈ. ΠΌΡΠ΅ΠΆΠΈ. ΠΠ²ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ΅Π±Π° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΈ Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ Π½Π°ΠΏΡΠ΅Π΄ΠΎΠΊΠΎΡ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ. ΠΠ°ΡΠΎΠ°, ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ°, ΠΈΠ»ΠΈ, Π°ΠΊΠΎ Π½Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°, Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Ρ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΡΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π±Π°Π·Π΅Π½ΠΎΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π½Π° Π½Π°ΡΠΈΠ½ΠΎΡ Π½Π° ΠΊΠΎΡ Π½ΠΈ ΡΡΠ΅Π±Π°.
Π’ΠΎΡΠΊΠ°ΡΠ° 3 Π±Π°ΡΠ° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ pub-sub. Π Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°, ΠΏΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠ½ΠΊΡΠΎΡ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠ°Π±-ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΎΡ Π½Π° ΠΎΠ²Π°Π° ΡΠΎΡΠΊΠ° Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°. Π’Π°ΠΊΠ°, ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ° ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ ΠΈ ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΠ° ΠΎΠ΄ ΡΠ»ΠΎΡΠΎΡ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ°ΡΠΏΠ°ΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π·Π° Π΄Π° Π³ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΠ΅ Π±Π°ΡΠ°ΡΠ°ΡΠ°, ΡΡΠ΅Π±Π° Π΄Π° Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ 5 ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°Π·Π»ΠΈ ΠΈ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π΅Π½ΡΠΈΡΠ΅Ρ - ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ Π½Π° ΠΏΠ°Π±-ΠΏΠΎΠ΄, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ°ΡΠ°.
ΠΠ° Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ 5 ΡΠ°ΠΊΡΠ²Π°ΡΠΈ, Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π΅ΡΡΡΠ²ΠΎ Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΌΠ΅ΡΡΠΎΡΠΎ Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, Π·Π° ΡΡΠΎ ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΄ΠΎΡΠ½Π°.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΠΎΡΡΠΎΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΎΡΡ: ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΎΡ Π·Π° pub-sub ΠΈ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈΠΎΡ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Ρ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π²ΠΎ Π΅Π΄Π½Π° ΠΊΠΎΠΏΠΈΡΠ°. ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ, ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΊΠ°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°, ΠΌΠΎΡΠ° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π»ΠΈΠ΄Π΅Ρ.
ΠΠ·Π±ΠΎΡ Π½Π° Π»ΠΈΠ΄Π΅Ρ
ΠΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΈΠ·Π±ΠΎΡΠΎΡ Π½Π° Π»ΠΈΠ΄Π΅Ρ Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π° Π½Π°Π·Π½Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π·Π°ΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠΎΠ²Π°Ρ.
ΠΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΡΠΊΠ»ΠΎΠ½ΠΈ ΠΊΠΎΠ½ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½ΠΈ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅Π½Π·ΡΡ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ paxos ΠΈΠ»ΠΈ raft.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ ΠΏΠΎΡΠ°ΠΊΠΈ Π΅ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΠΈ ΡΠ΅Π½ΡΡΠ°Π»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, Π·Π½Π°Π΅ Π·Π° ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ - Π»ΠΈΠ΄Π΅ΡΠΈ Π½Π° ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΈ. ΠΠΎΡΠ°ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Π·Π½Π°ΡΠΈ Π»ΠΈΠ΄Π΅Ρ Π±Π΅Π· Π³Π»Π°ΡΠ°ΡΠ΅.
ΠΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, ΡΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠ° #'$leader'{exchange = ?EXCHANGE, pid = LeaderPid, servers = Servers}
. ΠΠΊΠΎ LeaderPid
ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ° ΡΠΎ pid
ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ, ΡΠΎΡ Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° Π»ΠΈΠ΄Π΅Ρ, Π° Π»ΠΈΡΡΠ°ΡΠ° Servers
Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π½ΠΎΠ² ΠΈ ΡΠ΅ ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ #'$slave_up'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts}
ΠΈ #'$slave_down'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts}
ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ.
ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΡΠ²Π΅ΡΠ½ΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π΅ Π·Π°Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ Π΄Π° ΠΈΠΌΠ° Π΅Π΄Π΅Π½ Π»ΠΈΠ΄Π΅Ρ Π²ΠΎ ΡΠ΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅.
ΠΠ΅Π΄ΠΈΡΠ°ΡΠΎΡΠΈ
ΠΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠ°ΠΊΠΎ ΠΈ Π²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ°ΡΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΡΠΈ.
ΠΠ° Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ΡΠΈΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ ΡΠ°ΠΊΡΠ²Π°Ρ ΡΠΎ ΠΏΡΠΎΠΊΡΠΈ ΠΏΡΠ΅Π΄ ΡΡΠ»ΡΠ³Π°ΡΠ°, ΠΊΠΎΡ ΡΠ΅ ΡΠ° ΠΈΠ·Π²ΡΡΠΈ ΡΠ΅Π»Π°ΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠ»Π°ΡΠΈΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° pub-sub Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ Π΄Π΅Π»ΠΎΠ²Π½ΠΎ ΡΠ°Π΄ΡΠΎ ΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π°ΡΡΠ°Π½ΠΈ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΡΠ΅Π½ΠΈΡΠ΅ Π½Π° ΠΏΠ°Π·Π°ΡΠΎΡ, ΠΈ ΡΠ»ΠΎΡ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ - N ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΊΠΎΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ API Π·Π° Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΠΊΠΎ ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, ΡΠΎΠ³Π°Ρ ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
- ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π²ΡΡΠΊΠΈ ΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. ΠΠ° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΡΠΎ Π³ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ, ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π° ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° Π²ΡΡΠΊΠ°.
- ΠΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΡΠ»ΡΠ³Π°, ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ° Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ°. ΠΡΠΎΡΠ΅ΡΠΎΡ Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ Π·Π° ΡΠ΅ΠΌΠΈ.
- ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π°ΡΡΠ°Π½ Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ, ΡΠΎΡ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠ²Π° Π΄ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ°Π°Ρ Π²ΡΡΠΊΠΈΡΠ΅.
ΠΠ° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ 50000 ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π½Π° ΡΠ΅ΠΌΠ°ΡΠ° βΠ²Π΅ΡΡΠΈβ. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ²Π°Π°Ρ ΡΠ°ΠΌΠ½ΠΎΠΌΠ΅ΡΠ½ΠΎ Π½Π° 5 ΡΠ΅ΡΠ²Π΅ΡΠΈ. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ΅ΠΊΠΎΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅, ΠΊΠΎΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π° Π΄ΠΎ ΠΌΠ΅ΡΡΠΎΡΠΎ Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, ΡΠ΅ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° 50000 ΠΏΠ°ΡΠΈ: 10000 ΠΏΠ°ΡΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΏΠΎΡΠ΅Π΄ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ΅ Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΅ΡΠΈΠΊΠ°ΡΠ½Π° ΡΠ΅ΠΌΠ°, Π½Π΅Π»ΠΈ?
ΠΠ° Π΄Π° ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ°, Π΄Π° Π²ΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ ΠΏΡΠΎΠΊΡΠΈ ΡΡΠΎ Π³ΠΎ ΠΈΠΌΠ° ΠΈΡΡΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π°. ΠΠ»ΠΎΠ±Π°Π»Π½ΠΈΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° ΠΈΠΌΠΈΡΠ° ΠΌΠΎΡΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π²ΡΠ°ΡΠΈ Π½Π°ΡΠ±Π»ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ ΠΈΠΌΠ΅, ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ.
ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΎΠ²ΠΎΡ ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π½Π° ΡΠ»ΠΎΡΠΎΡ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ ΠΈ ΡΠΈΡΠ΅ Π½Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΊΠΎΠΈ Π³ΠΎ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°Π°Ρ websocket api ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ°Ρ Π½Π° Π½Π΅Π³ΠΎ, Π° Π½Π΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° pub-sub Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ. ΠΡΠΎΠΊΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ ΡΠ°ΠΌΠΎ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ° ΠΈ ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° Π΄ΠΎΡΠ΄ΠΎΠ²Π½Π°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° Π½Π° ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, 5 ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΈΡΠΏΡΠ°ΡΠ΅Π½ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ, Π½Π°ΠΌΠ΅ΡΡΠΎ 50000.
Π ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅
Req-Resp
ΠΠΎ ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΏΠΎΡΡΠΎΡΠ°Ρ 7 ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π½Π° Π±Π°ΡΠ°ΡΠ°:
default
. ΠΠ°ΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ.round-robin
. ΠΠ°ΡΠ°ΡΠ°ΡΠ° ΡΠ΅ Π½Π°Π±ΡΠΎΡΡΠ²Π°Π°Ρ ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈΡΠ΅.consensus
. ΠΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈΡΠ΅ ΠΊΠΎΠΈ ΡΠ»ΡΠΆΠ°Ρ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π²ΠΎΠ΄Π°ΡΠΈ ΠΈ ΡΠΎΠ±ΠΎΠ²ΠΈ. ΠΠ°ΡΠ°ΡΠ°ΡΠ° ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΡΠ°ΠΌΠΎ Π΄ΠΎ Π»ΠΈΠ΄Π΅ΡΠΎΡ.consensus & round-robin
. ΠΡΡΠΏΠ°ΡΠ° ΠΈΠΌΠ° Π»ΠΈΠ΄Π΅Ρ, Π½ΠΎ Π±Π°ΡΠ°ΡΠ°ΡΠ° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ ΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΠ»Π΅Π½ΠΎΠ²ΠΈ.sticky
. Π€ΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Π·Π° Ρ Π°Ρ ΡΠ΅ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π° ΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° ΡΠΎ ΠΎΠ²ΠΎΡ ΠΏΠΎΡΠΏΠΈΡ ΠΎΠ΄Π°Ρ ΠΊΠ°Ρ ΠΈΡΡΠΈΠΎΡ ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ.sticky-fun
. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Π·Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° Ρ Π°Ρ Π·Π°sticky
Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅.fun
. Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° sticky-fun, ΡΠ°ΠΌΠΎ Π²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈΡΠ΅, ΠΎΠ΄Π±ΠΈΠ΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄Π° Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΡΠ΅.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡΠ°ΡΠ° Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΊΠΎΠ³Π° ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π°.
ΠΠΎΠΊΡΠ°Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ, ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΄Π° ΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Π΅Π½ΡΠΈΡΠ΅ΡΠΈ. ΠΡΠ΄Π΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΎΠ·Π½Π°ΠΊΠΈ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ:
- ΠΠ·Π½Π°ΠΊΠ° Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅. ΠΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΡΠ° Π²ΡΡΠΊΠ° Π΄ΠΎΡΠ»Π΅ Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ³Π° ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π° Π½Π° ΠΈΡΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, Π½ΠΎ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈ Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅.
- ΠΠ·Π½Π°ΠΊΠ° Π·Π° ΡΡΠ»ΡΠ³Π°. ΠΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ Π²ΠΎ Π³ΡΡΠΏΠΈ Π·Π° Π΅Π΄Π½Π° ΡΡΠ»ΡΠ³Π° ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΎΡΠΈΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅. ΠΠ° ΡΠ΅ΠΌΠ°ΡΠ° req-resp, ΡΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π΅ Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎ. ΠΡΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π±Π°ΡΠ°ΡΠ΅ Π΄ΠΎ ΠΌΠ΅ΡΡΠΎΡΠΎ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π°, Π° ΠΏΠΎΡΠΎΠ° Π³ΠΎ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΡ. ΠΠΎ, Π°ΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΈΡΠ΅ Π²ΠΎ Π»ΠΎΠ³ΠΈΡΠΊΠΈ Π³ΡΡΠΏΠΈ, ΡΠΎΠ³Π°Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΎΠ·Π½Π°ΠΊΠΈ. ΠΠΎΠ³Π° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ°, Π±Π°ΡΠ°ΡΠ΅ΡΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΡΠΏΡΠ°ΡΠ΅Π½ΠΎ Π΄ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π³ΡΡΠΏΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ.
- ΠΠ·Π½Π°ΠΊΠ° Π·Π° Π±Π°ΡΠ°ΡΠ΅. ΠΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ. ΠΠΈΠ΄Π΅ΡΡΠΈ Π½Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½, Π·Π° Π΄Π° Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΠΌΠ΅ RequestTag ΠΊΠΎΠ³Π° ΠΈΡΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π±Π°ΡΠ°ΡΠ΅. ΠΠ΄ Π½Π΅Π³ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΎΡ Π½Π° ΠΊΠΎΠ΅ Π±Π°ΡΠ°ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π΄ΠΎ Π½Π°Ρ.
ΠΠ°Π±-ΠΏΠΎΠ΄
ΠΠ° pub-sub ΡΓ¨ Π΅ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ. ΠΠΌΠ°ΠΌΠ΅ ΡΠΎΡΠΊΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΊΠΎΡΠ° ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅. Π’ΠΎΡΠΊΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΌΠ΅ΡΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈΠ»Π΅ Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠΎ ΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ (ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ Π°Π½Π°Π»ΠΎΠ³Π½ΠΎ Π½Π° ΡΠ΅ΠΌΠΈΡΠ΅).
ΠΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
ΠΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π»ΠΈΠ½Π° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΡΡΠ΅ΠΏΠ΅Π½ΠΎΡ Π½Π° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ Π½Π° ΡΠ»ΠΎΠ΅Π²ΠΈΡΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ:
- Π£ΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Π»ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΈ Π·Π° ΠΎΠ²Π°Π° ΡΡΠ»ΡΠ³Π°. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΠ±Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅.
- Π‘Π°ΠΌΠ°ΡΠ° ΡΡΠ»ΡΠ³Π° Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΡΠ΅ ΡΠΊΠ°Π»ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΠ΅Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π²ΠΎ ΠΎΠ΄Π΄Π΅Π»Π½ΠΈ ΡΠ°Π·Π»ΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΠΈΠ»ΠΈ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΠΏΡΠΎΠΊΡΠΈ Π²ΠΎ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ.
- ΠΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΡΠ΅Π»ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΎ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ Π»ΠΎΠ³ΠΈΡΠΊΠΈ Π΅Π½ΡΠΈΡΠ΅Ρ.
Π£ΡΠΏΠ΅Ρ ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡΠ° ΠΈ Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅. ΠΠΎΡΠ°ΠΊΠΈ Π²ΠΎ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠ΅Π³Π°ΡΠ½Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠ°ΡΡΠ΅ Π·Π°Π΅Π΄Π½ΠΎ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Π Π΄Π° Π½ΠΈ Π½Π΅Π΄ΠΎΡΡΠΈΠ³Π° ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΎΠ΄ 50-60 ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡΠΈΠ±Π΅Π³Π½Π΅ΠΌΠ΅ ΠΊΠΎΠ½ ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡΠ°. ΠΠ° ΠΆΠ°Π», ΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡΠ° Π΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΎΠΏΡΠ΅Π³ΠΎΡ Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΠΏΠΈΡ.
Π Π΅Π·Π΅ΡΠ²Π°ΡΠΈΡΠ°
ΠΠΎΠ³Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π²ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ, Π²Π΅ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ Π·Π° Π²ΠΈΡΠΎΠΊ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½ΠΈ. ΠΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΠ°Π΄ Π½Π° ΡΠ°Π·ΠΎΠ» ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π°, ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π°Ρ ΠΈ Π²ΠΎ Π½Π°ΡΠΊΡΡ ΠΌΠΎΠΆΠ΅Π½ ΡΠΎΠΊ.
ΠΠΎ ΠΌΠΎΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠΎΡΠΈΡΡΠ°ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Π»ΠΈ ΠΊΠΎΠΈ Π³ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½ΡΠ²Π°Π°Ρ ΡΠΎΠ²Π°ΡΠΎΡ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΠ°Π΄. Erlang ΠΈΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° OTP Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π½Π΅ΡΡΠΏΠ΅Ρ
ΡΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π΄ΡΡΠ³ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ Π»Π°Π½ΡΠΈΡΠ°Π½ ΡΠ°Π·ΠΎΠ». ΠΡΠΎΡΠ΅ΡΠΎΡ Π΅ ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ΅Π½; ΠΏΠΎ Π½Π΅ΡΡΠΏΠ΅Ρ
, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π° Π²ΠΎ ΡΠ°Π·ΠΎΠ»ΠΎΡ Π·Π° ΠΎΡΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΎΠ²Π°Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ
ΠΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ
ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π±Π°ΡΠ΅ΠΌ Π³ΡΡΠ±ΠΎ Π΄Π° Π³ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° rabbitmq ΠΈ Π½Π°ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ.
Π½Π°ΡΠ΄ΠΎΠ²
ΠΠΎ ΡΡΠ°Π² 6.14.1.2.1.2.2. ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π³ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ RPC CAST:
ΠΠ΅ΠΌΠ° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠ‘ ΠΈΠ»ΠΈ erlang VM ΠΎΠ΄Π½Π°ΠΏΡΠ΅Π΄. Π£ΡΠ»ΠΎΠ²ΠΈ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅:
- erl ΠΈΠ·Π±ΠΈΡΠ°: +A1 +sbtu.
- Π’Π΅ΡΡΠΎΡ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ erlang ΡΠ°Π·ΠΎΠ» ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° Π»Π°ΠΏΡΠΎΠΏ ΡΠΎ ΡΡΠ°Ρ i7 Π²ΠΎ ΠΌΠΎΠ±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°.
- ΠΠ»Π°ΡΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠ°Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈ ΡΠΎ 10G ΠΌΡΠ΅ΠΆΠ°.
- ΠΠΎΠ΄ΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΡΠ΅ΠΆΠ° Π²ΠΎ NAT ΡΠ΅ΠΆΠΈΠΌ.
Π’Π΅ΡΡ ΠΊΠΎΠ΄:
req_resp_bench(_) ->
W = perftest:comprehensive(10000,
fun() ->
messaging:request(?EXCHANGE, default, ping, self()),
receive
#'$msg'{message = pong} -> ok
after 5000 ->
throw(timeout)
end
end
),
true = lists:any(fun(E) -> E >= 30000 end, W),
ok.
Π‘ΡΠ΅Π½Π°ΡΠΈΠΎ 1: Π’Π΅ΡΡΠΎΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° Π»Π°ΠΏΡΠΎΠΏ ΡΠΎ ΡΡΠ°ΡΠ° i7 ΠΌΠΎΠ±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°. Π’Π΅ΡΡΠΎΡ, ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΠΈ ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π° Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ» Π²ΠΎ Π΅Π΄Π΅Π½ Docker ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ:
Sequential 10000 cycles in ~0 seconds (26987 cycles/s)
Sequential 20000 cycles in ~1 seconds (26915 cycles/s)
Sequential 100000 cycles in ~4 seconds (26957 cycles/s)
Parallel 2 100000 cycles in ~2 seconds (44240 cycles/s)
Parallel 4 100000 cycles in ~2 seconds (53459 cycles/s)
Parallel 10 100000 cycles in ~2 seconds (52283 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (49317 cycles/s)
Π‘ΡΠ΅Π½Π°ΡΠΈΠΎ 2: 3 ΡΠ°Π·Π»ΠΈ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΏΠΎΠ΄ Π΄ΠΎΠΊΠ΅Ρ (NAT).
Sequential 10000 cycles in ~1 seconds (8684 cycles/s)
Sequential 20000 cycles in ~2 seconds (8424 cycles/s)
Sequential 100000 cycles in ~12 seconds (8655 cycles/s)
Parallel 2 100000 cycles in ~7 seconds (15160 cycles/s)
Parallel 4 100000 cycles in ~5 seconds (19133 cycles/s)
Parallel 10 100000 cycles in ~4 seconds (24399 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (34517 cycles/s)
ΠΠΎ ΡΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ Π½Π΅ Π½Π°Π΄ΠΌΠΈΠ½ΡΠ²Π° 250%
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄
Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΎΡ ΡΠΈΠΊΠ»ΡΡ Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ Π΄Π΅ΠΏΠΎΠ½ΠΈΡΠ° ΠΈ ΠΌΠΎΠ΅ΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΎΠ΄ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ° ΠΊΠΎΡΠΈΡΡ ΠΈ Π·Π° ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π·Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠΈ ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΈΠΎΡ ΠΏΠΎΡΠ΅ΡΠΎΠΊ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π·Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π΄Π΅Π»ΠΎΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π³ΠΎ Π³Π»Π΅Π΄Π°Π°Ρ Erlang/Elixir , Π½ΠΎ ΠΈΠΌΠ°ΡΡΠ΅ ΡΠΎΠΌΠ½Π΅ΠΆΠΈ Π΄Π°Π»ΠΈ Π²ΡΠ΅Π΄ΠΈ...
Π€ΠΎΡΠΎ
Π‘Π°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π°Ρ Π²ΠΎ Π°Π½ΠΊΠ΅ΡΠ°ΡΠ°.
ΠΠΎΠΈ ΡΠ΅ΠΌΠΈ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΎΠΏΡΠ°ΡΠ°ΠΌ ΠΏΠΎΠ΄Π΅ΡΠ°Π»Π½ΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΡΠ΅ΡΠΈΡΠ°ΡΠ° VTrade Experiment?
-
Π’Π΅ΠΎΡΠΈΡΠ°: ΠΏΠ°Π·Π°ΡΠΈ, Π½Π°ΡΠ°ΡΠΊΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅: DAY, GTD, GTC, IOC, FOK, MOO, MOC, LOO, LOC
-
ΠΠ½ΠΈΠ³Π° Π½Π° Π½Π°ΡΠ°ΡΠΊΠΈ. Π’Π΅ΠΎΡΠΈΡΠ° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π° ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ½ΠΈΠ³Π° ΡΠΎ Π³ΡΡΠΏΠΈΡΠ°ΡΠ°
-
ΠΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ³ΡΠ²Π°ΡΠ΅ΡΠΎ: ΠΊΡΠ»Π΅ΠΆΠΈ, ΡΠΈΠΏΠΊΠΈ, ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΠΈ. ΠΠ°ΠΊΠΎ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π»Π΅ΠΏΠΈΡΠ΅
-
ΠΠ°Π΄Π½Π° ΠΊΠ°Π½ΡΠ΅Π»Π°ΡΠΈΡΠ°. ΠΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ°Π·Π²ΠΎΡ. Π‘Π»Π΅Π΄Π΅ΡΠ΅ Π½Π° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΈ ΠΈΡΡΡΠ°Π³Π° Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ
-
API. ΠΡΠ΄Π΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΠΌΠ΅ ΠΊΠΎΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅
-
Π‘ΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: PostgreSQL, Timescale, Tarantool Π²ΠΎ ΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ
-
Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π²ΠΎ ΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ
-
ΠΡΡΠ³ΠΎ. ΠΠ΅ Π½Π°ΠΏΠΈΡΠ°ΠΌ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅
ΠΠ»Π°ΡΠ°Π° 6 ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. 4 ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ΅ Π²ΠΎΠ·Π΄ΡΠΆΠ°Π°.
ΠΠ·Π²ΠΎΡ: www.habr.com