Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ»Π΅Π³ΠΈ, Π² ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° Π»ΡΡΠΎΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌ Π΄Π° ΠΏΡΡΠ½Π° ΠΎΡΠ΅ Π΅Π΄Π½Π° ΡΠ΅ΡΠΈΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΌΠ°ΡΠΎΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅: βΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡΡ VTradeβ - ΠΎΠΏΠΈΡ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ ΡΠ°ΠΌΠΊΠ° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΡΡΠ³ΠΎΠ²ΠΈΡ. ΠΠΎΡΠ΅Π΄ΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π° ΡΠ΅ΠΎΡΠΈΡΡΠ° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±ΠΎΡΡΠ°, ΡΡΡΠ³ ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½. Π ΠΊΡΠ°Ρ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π²ΠΈ ΠΊΠ°Π½Ρ Π΄Π° Π³Π»Π°ΡΡΠ²Π°ΡΠ΅ Π·Π° ΡΠ΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ.
Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Erlang/Elixir. IN
ΠΠ½Π΅Ρ ΡΠ΅ ΠΏΠΎΠ²Π΄ΠΈΠ³Π½Π΅ΠΌ Π²ΡΠΏΡΠΎΡΠΈ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ.
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅
Π ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ ΡΡΠ»ΡΠ³Π°, ΡΠ΅ΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π² Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ req-resp ΠΈ Π΄Π° Π΄ΠΎΠΊΠ»Π°Π΄Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ ΡΡΠ΅Π· pub-sub. Π’ΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ: Π·Π°Π΄ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΡΠ°Π²Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ»ΡΠ³Π°, ΡΡΡΠΎΠΉΡΠΈΠ²Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ΅ΠΊΠ° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ:
- ΡΠ΅Π³Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ Π½Π° 5 ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·Π΅Π»Π°,
- Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π·Π° ΡΠΎΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°,
- ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠΏΠΈΡΡΡΠΈ Ρ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ.
ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ: ΠΠΈΠ΅ Π½Π΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π²Π΅ΡΠ΅ ΠΈΠΌΠ° Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌ ΡΠ»ΠΎΠΉ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π΅Π³ΠΎ.
Π€ΠΎΡΠΌΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΡΠ°Π½Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ° Π΄Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΠΌ ΠΏΡΡΠ²ΠΎΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π² ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° req-resp.
ΠΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΡΠ΅ΡΡΠΎ. ΠΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π° ΠΌΡΠ»ΡΠΈΠΌΠ΅Π΄ΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΠΎΡΠΈΠ°Π»Π½ΠΈ ΠΌΠ΅Π΄ΠΈΠΈ. ΠΌΡΠ΅ΠΆΠΈ. Π’Π΅Π·ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΡΡΠ±Π²Π° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΡΡ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ, ΠΈΠ»ΠΈ, Π°ΠΊΠΎ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΏΡΠ»Π° ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΏΠΎ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ.
Π’ΠΎΡΠΊΠ° 3 ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° pub-sub. Π Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠΎΡΠΊΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ pub-sub, ΡΡΡΠ±Π²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΠΎΡΠΊΠ° Π² Π½Π°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΡΠΊΠ°Ρ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΎΡΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠ»ΠΎΡ Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΊΠ°Π·Π°, ΡΠ΅ Π·Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ 5 Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΡΠ±Π΅ΠΊΡ - pub-sub ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠ°.
ΠΠ° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ 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 XNUMX ΠΏΡΡΠΈ: XNUMX XNUMX ΠΏΡΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΡΡΠ²ΡΡ, ΡΠΏΠΎΡΠ΅Π΄ Π±ΡΠΎΡ Π½Π° Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΡΡ
Π΅ΠΌΠ°, Π½Π°Π»ΠΈ?
ΠΠ° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, Π½Π΅ΠΊΠ° Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΎΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ° ΡΡΡΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΊΠ°ΡΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½. ΠΠ»ΠΎΠ±Π°Π»Π½ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° ΠΈΠΌΠ΅Π½Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ ΠΈΠΌΠ΅, ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ.
ΠΠ΅ΠΊΠ° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π½Π° ΡΠ»ΠΎΡ Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°ΡΠΈ API Π½Π° websocket, ΡΠ΅ ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°Ρ Π·Π° Π½Π΅Π³ΠΎ, Π° Π½Π΅ Π·Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ pub-sub Π² ΡΠ΄ΡΠΎΡΠΎ. ΠΡΠΎΠΊΡΠΈΡΠΎ ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ° Π·Π° ΡΠ΄ΡΠΎΡΠΎ ΡΠ°ΠΌΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π²Ρ
ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΠΎΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ 5 ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, Π²ΠΌΠ΅ΡΡΠΎ 50000 XNUMX.
ΠΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅
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