ΠΠ½ΠΎΠ½Ρ
ΠΠΎΠ»Π»Π΅Π³ΠΈ, Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ Π»Π΅ΡΠ° Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ Π²ΡΠΏΡΡΡΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ: βΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ VTradeβ β ΠΏΠΎΠΏΡΡΠΊΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΡΠ³ΠΎΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ. Π ΡΠΈΠΊΠ»Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π° ΡΠ΅ΠΎΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π±ΠΈΡΠΆΠΈ, Π°ΡΠΊΡΠΈΠΎΠ½Π° ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°ΡΡ Π·Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π°ΠΌ ΡΠ΅ΠΌΡ.
ΠΡΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ°Ρ ΡΡΠ°ΡΡΡ ΡΠΈΠΊΠ»Π° ΠΏΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½Π° Erlang/Elixir. Π
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅ΠΌ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΡΠ΅Π»ΠΎΠΌ.
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ²ΠΈΡ users, ΡΠ΅ΡΠ°ΡΡΠΈΠΉ Π·Π°Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π·Π°ΠΏΡΠΎΡΡ req-resp ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΡΠ΅ΡΠ΅Π· pub-sub. ΠΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ: Π·Π° messaging ΡΡΠΎΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΠΈΠΉ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
Π‘ΠΈΡΡΠ°ΡΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ users ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ:
- ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° 5 ΡΠ·Π»Π°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°,
- ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ,
- Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΠΏΡΠΎΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΡ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅ΡΠ΅Π½Ρ ΡΠ°Π½Π΅Π΅ ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ»ΠΎΠΉ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΠΌ.
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° users ΡΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΎΡΡ. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ messaging ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Ρ. Π§ΡΠΎΠ±Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΠΎΡΠΊΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° req-resp.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ°ΡΡΠΎ. Π users ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°, ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠΎΡ. ΡΠ΅ΡΡΠΌΠΈ. ΠΡΠΈ Π·Π°Π΄Π°ΡΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π°Ρ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ: Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π»ΠΈΠ±ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π½Π°ΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠ»ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
3 ΠΏΡΠ½ΠΊΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° pub-sub. Π Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° pub-sub, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π²ΡΠ½ΠΎΡΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΈ ΠΎΡΠΏΠΈΡΠΊΠΈ ΠΈΠ· ΡΠ»ΠΎΡ messaging Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ users.
Π ΠΈΡΠΎΠ³Π΅, Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, ΡΡΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ
ΡΠ·Π»Π°Ρ
5 ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΡ β ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ pub-sub, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ.
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° 5 ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ β Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ» Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΠΎΡΠΊΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, ΠΎ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ: ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ pub-sub ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅. ΠΠΏΡΡΡ ΠΆΠ΅, ΡΠ΅ΡΠ²ΠΈΡ messaging, ΠΊΠ°ΠΊ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π²ΡΠ±ΠΎΡΠ° Π»ΠΈΠ΄Π΅ΡΠ°.
ΠΡΠ±ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠ°
Π ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π²ΡΠ±ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠ° β ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π·Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
, Π½Π΅ ΡΠΊΠ»ΠΎΠ½Π½ΡΡ
ΠΊ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°Ρ
ΠΎΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ paxos ΠΈΠ»ΠΈ raft.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ messaging β ΡΡΠΎ Π±ΡΠΎΠΊΠ΅Ρ ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎ ΠΎΠ½ Π·Π½Π°Π΅Ρ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ
ΡΠ΅ΡΠ²ΠΈΡΠ° β ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°Ρ
Π² Π»ΠΈΠ΄Π΅ΡΡ. Messaging ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π·Π½Π°ΡΠ°ΡΡ Π»ΠΈΠ΄Π΅ΡΠ° Π±Π΅Π· ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΎΡΠΊΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ #'$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}
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π½Π°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ , ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Π»ΠΈΠ΄Π΅Ρ.
ΠΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠΈ
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π·Π°Π΄Π°ΡΠ°Ρ
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΠ².
Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ proxy ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ pub-sub ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΄ΡΠΎΠΌ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ Π½Π° ΡΡΠ½ΠΊΠ΅, ΠΈ ΡΠ»ΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ° β N ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ
websocket API Π΄Π»Ρ web ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ ΡΠ΅ΡΠ°ΡΡ βΠ² Π»ΠΎΠ±β, ΡΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ. ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
- Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ subscribe Π΄Π»Ρ ΡΠΎΠΏΠΈΠΊΠΎΠ².
- ΠΏΠΎΡΠ»Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠ΄ΡΠ΅ ΠΎΠ½ΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ 50000 ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² Π½Π° ΡΠΎΠΏΠΈΠΊ βnewsβ. ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΏΠΎ 5 ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ. Π ΠΈΡΠΎΠ³Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΏΡΠΈΠ΄Ρ Π½Π° ΡΠΎΡΠΊΡ ΠΎΠ±ΠΌΠ΅Π½Π°, Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ 50000 ΡΠ°Π·: 10000 ΡΠ°Π· Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² Π½Π° Π½Π΅ΠΌ. ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡ
Π΅ΠΌΠ°, ΠΏΡΠ°Π²Π΄Π°?
Π§ΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, Π²Π²Π΅Π΄Π΅ΠΌ proxy, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ Ρ ΡΠΎΡΠΊΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π°. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΡΠΎΡ proxy Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
ΡΠ»ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ websocket api, ΠΏΠΎΠ΄ΠΏΠΈΡΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ, Π° Π½Π΅ Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ pub-sub ΡΠΎΡΠΊΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π² ΡΠ΄ΡΠ΅. Proxy ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ΄ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ°ΠΌ.
Π ΠΈΡΠΎΠ³Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ»Π°Π½ΠΎ 5 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π²ΠΌΠ΅ΡΡΠΎ 50000.
ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°
Req-Resp
Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ messaging ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 7 ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²:
default
. ΠΠ°ΠΏΡΠΎΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌ.round-robin
. ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ.consensus
. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡ, Π΄Π΅Π»ΡΡΡΡ Π½Π° Π»ΠΈΠ΄Π΅ΡΠ° ΠΈ Π²Π΅Π΄ΠΎΠΌΡΡ . ΠΠ°ΠΏΡΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΠ΄Π΅ΡΡ.consensus & round-robin
. Π Π³ΡΡΠΏΠΏΠ΅ Π΅ΡΡΡ Π»ΠΈΠ΄Π΅Ρ, Π½ΠΎ Π·Π°ΠΏΡΠΎΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ.sticky
. ΠΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ hash ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΡΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ. ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Ρ ΡΡΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ.sticky-fun
. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΡΡΠ° Π΄Π»Ρsticky
Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ.fun
. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ sticky-fun, ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ, ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π°.
ΠΡΠΎΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ messaging ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΈΠ΄Ρ ΡΡΠ³ΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅:
- Π’ΡΠ³ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
- Π’ΡΠ³ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π² Π³ΡΡΠΏΠΏΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ»Ρ req-resp ΠΏΠ°ΡΡΠ΅ΡΠ½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½Π°. ΠΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΡΠΊΡ ΠΎΠ±ΠΌΠ΅Π½Π°, Π΄Π°Π»ΡΡΠ΅ ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΡΡΠΏΠΏΡ, ΡΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ³ΠΎΠ². ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΡΠ³Π°, Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ².
- Π’ΡΠ³ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡ ΠΎΡΠ²Π΅ΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ, ΡΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ RequestTag ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠΎ Π½Π΅ΠΌΡ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊ Π½Π°ΠΌ ΠΏΡΠΈΡΠ΅Π».
Pub-sub
ΠΠ»Ρ pub-sub Π²ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅. ΠΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΎΡΠΊΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’ΠΎΡΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π»ΠΈΡΡ Π½Π° Π½ΡΠΆΠ½ΡΠ΅ ΠΈΠΌ ΠΊΠ»ΡΡΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΡΠ΅ΠΌ).
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΡΠ»ΠΎΠ΅Π² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ:
- Π‘Π΅ΡΠ²ΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ·Π»ΠΎΠ² Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΏΡΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ.
- Π‘Π°ΠΌ ΠΆΠ΅ ΡΠ΅ΡΠ²ΠΈΡ messaging Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ½ΠΎΡΠ° ΠΎΡΠΎΠ±ΠΎ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ proxy ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΠΎΡΠΎΠ±ΠΎ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π·ΠΎΠ½Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
- ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Π² ΠΎΠ±ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ½ΠΎΡΡΡ.
ΠΡ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Messaging Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°ΡΡΠ΅Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π² 50-60 ΠΌΠ°ΡΠΈΠ½, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΠΈ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ΅ΠΌΠ° ΡΠ΅Π΄Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
Π Π΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΡ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ messaging ΡΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ·Π»Π° ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Ρ, messaging Π΄ΠΎΠ»ΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΡΡΠΎΠΊΠΈ.
Π ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Ρ
Π²Π°ΡΡΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ. Π Erlang ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ OTP. Distributed mode, ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ ΠΏΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΏΠ°Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΌ ΡΠ·Π»Π΅. ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ΅Π½, ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΅Π·ΠΆΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π° failover ΡΠ·Π΅Π». ΠΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΡΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Ρ
ΠΎΡΡ Π±Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ rabbitmq ΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ messaging.
Π― Π½Π°ΡΠ΅Π»
Π ΠΏΡΠ½ΠΊΡΠ΅ 6.14.1.2.1.2.2. ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ RPC CAST:
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π² ΡΠ΄ΡΠΎ ΠΠ‘ ΠΈΠ»ΠΈ erlang VM Π²Π½ΠΎΡΠΈΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. Π£ΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- erl opts: +A1 +sbtu.
- Π’Π΅ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° erlang Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° Π½ΠΎΡΡΠ±ΡΠΊΠ΅ ΡΠΎ ΡΡΠ°ΡΠ΅Π½ΡΠΊΠΈΠΌ i7 Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
- ΠΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Ρ 10G ΡΠ΅ΡΡΡ.
- ΠΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ . Π‘Π΅ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ 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 ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π’Π΅ΡΡ, messaging ΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·Π»Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ 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 ΡΠ·Π»Π° Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΠΏΠΎΠ΄ docker (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)
ΠΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ CPU Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π»Π° 250%
ΠΡΠΎΠ³ΠΈ
ΠΠ°Π΄Π΅ΡΡΡ, Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΊΠ» Π½Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ, ΠΊΠ°ΠΊ Π΄Π°ΠΌΠΏ ΡΠΎΠ·Π½Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠΉ ΠΎΠΏΡΡ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·Ρ ΠΊΠ°ΠΊ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΏΡΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠΈΡΡΠ΅ΠΌ ΠΈ Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠΌ ΡΠΌΠΎΡΡΡΡ Π½Π° Erlang/Elixir, Π½ΠΎ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡΡ ΡΡΠΎΠΈΡ Π»ΠΈ…
Π€ΠΎΡΠΎ
Π’ΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΡΠΎΡΠ΅.
ΠΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ ΠΌΠ½Π΅ ΡΡΠΎΠΈΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΈΠΊΠ»Π° βΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ VTradeβ?
-
Π’Π΅ΠΎΡΠΈΡ: Π ΡΠ½ΠΊΠΈ, ΠΎΡΠ΄Π΅ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: DAY, GTD, GTC, IOC, FOK, MOO, MOC, LOO, LOC
-
ΠΠ½ΠΈΠ³Π° ΠΎΡΠ΄Π΅ΡΠΎΠ². Π’Π΅ΠΎΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ
-
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΠ³ΠΎΠ²: Π’ΠΈΠΊΠΈ, Π±Π°ΡΡ, ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΠΈ. ΠΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΊΠ»Π΅ΠΈΡΡ
-
ΠΡΠΊΠΎΡΠΈΡ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΎΠ²
-
API. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½ΡΠΆΠ½Ρ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ
-
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: PostgreSQL, Timescale, Tarantool Π² ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
-
Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π² ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
-
ΠΡΡΠ³ΠΎΠ΅. ΠΠ°ΠΏΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΠΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 6 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ·Π΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ 4 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com