ΠΠΎ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΈ Π·ΠΎΡΡΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²ΠΌΠ΅
Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° (Π²ΠΎ Π½Π°ΡΠ°ΠΌΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊΠΎ SV) Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½, ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠΎ Π·Π°Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°. SV Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ ΡΡΠ»ΡΠ³Π° ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ, Π΄ΠΎΡΡΠ°ΠΏΠ½Π° ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ½Π»Π°ΡΠ½ ΡΡΠ»ΡΠ³Π° (ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° ΠΎΠ΄ 1C) ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠ°ΡΠΎΠ²Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΈ.
SV ΠΊΠΎΡΠΈΡΡΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅
ΠΡΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·ΡΠ°Π²Π°
ΠΠ° Π΄Π° ΡΡΠ°Π½Π΅ ΡΠ°ΡΠ½ΠΎ Π·ΠΎΡΡΠΎ Π³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅ Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°, ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΌΠ°Π»ΠΊΡ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° Π΄Π΅Π»ΠΎΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ 1C.
ΠΠ° ΠΏΠΎΡΠ΅ΡΠΎΠΊ, ΠΌΠ°Π»ΠΊΡ Π·Π° Π½Π°Ρ Π·Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π·Π½Π°Π°Ρ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ :) ΠΠ° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΡΠΊΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° 1C:Enterprise. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° Π°Π»Π°ΡΠΊΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π΄Π΅Π»ΠΎΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎ ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° Π΄Π΅Π»ΠΎΠ²Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π²ΠΎ ΠΌΠ΅ΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΡΠΊΠΎ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅.
ΠΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ΅Π»ΠΎΠ²Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° 1C: Enterprise ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΡΡΠΈ Π½ΠΈΠ²ΠΎΠ°
ΠΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, Π·Π°Π³Π»Π°Π²ΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΌΠΎΡΠ° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° Π½Π°Π²Π΅Π΄Π°Ρ ΠΊΠ°Π΄Π΅ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΠΊΠΎΠ΄ΠΎΡ - ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ &AtClient / &AtServer (&AtClient / &AtServer Π²ΠΎ Π°Π½Π³Π»ΠΈΡΠΊΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ). ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° 1C ΡΠ΅Π³Π° ΡΠ΅ ΠΌΠ΅ ΠΏΠΎΠΏΡΠ°Π²Π°Ρ Π²Π΅Π»Π΅ΡΡΠΈ Π΄Π΅ΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΡΠ½ΠΎΡΡ
ΠΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠ²Π° Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ ΡΡΠΎ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ. ΠΡΠΎΠ±Π΅Π½ΠΎ, Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ°ΠΊΠΎΠ² Π½Π°ΡΠΈΠ½ ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΊΠ°Π΄Π΅ ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° - ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈΠ»ΠΈ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. Π Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈ ΠΊΠΎΠ΄ ΠΎΠ΄ Π΄ΡΡΠ³ ΠΊΠΎΠ΄ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, Π½Π΅ΠΌΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΊΠ°ΠΊΠΎ ΡΠ°ΠΊΠΎΠ². Π Π±ΠΈΠ΄Π΅ΡΡΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΡΠΎ Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ°Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΡΠ²ΠΎΡΠΈ, Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΠΊΠΎΠ³ΠΎ Π΄Π° ΠΏΠΎΠ²ΠΈΠΊΠ°.
ΠΠΎΠ΄ ΡΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠΏΡΠ΅: ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ, ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π½Π΅ΠΌΠ°
ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΡΠΏΡΠ°ΡΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΊΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° βΠ΄ΠΎΠ»Π³ΠΎΡΡΠ°ΡΠ½ΠΈΠΎΡβ ΠΈΠ·Π²Π΅ΡΡΠ°Ρ Π΅ Π·Π°Π²ΡΡΠ΅Π½ΠΎ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³Π»Π΅Π΄Π°, Π½Π΅ΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΊΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄. Π’ΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠΈΠΊΠΎΠ²ΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ Π΄Π° Π³ΠΎ Π°Π½ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ. ΠΠΎ, ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π³ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ Π½Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΌΠ½ΠΎΠ³Ρ Π΅Π»Π΅Π³Π°Π½ΡΠ½ΠΎ.
Π, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΈΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ ΡΠ΅Π»Π΅ΡΠΎΠ½ΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΠΊ
Π‘Π°ΠΌΠΎΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ
ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΡΠ·, ΡΠΈΠ³ΡΡΠ΅Π½, ΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠ΅ Π³Π»Π°ΡΠ½ΠΈΠΊ (ΠΏΠΎΡΠ°ΠΊΠΈ, Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΠ²ΠΈΡΠΈ) ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ 1C.
ΠΠΈΠ·Π°ΡΠ½ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π΄Π° Π±ΠΈΠ΄Π΅ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π΅Π½. ΠΠ³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΎΡΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠΈΠ΅ ΡΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΡΠ°Π·Π»ΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Π Π΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈΠΎΡ Π΄Π΅Π» Π½Π° SV Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° 1C: Enterprise, ΡΡΠΊΡ Π΄Π° Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄, ΡΠΈΡ API ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ° ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° 1C. ΠΠ²Π° Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ Π³Π»Π°Π²Π½Π°ΡΠ° Π±Π΅ΡΠ΅ ΡΠΎΠ° ΡΡΠΎ ΡΠ°ΠΊΠ°Π² Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°ΠΌ ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ 1C (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΡΠ³ΠΎΠ²ΠΈΡΠ° ΠΈ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ). Π Π°Π·Π»ΠΈΡΠ½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ 1C ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° 1C:Enterprise, Π΄Π° ΡΠ΅ Π½Π°ΠΎΡΠ°Π°Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈΡΠ½. ΠΠΎ ΡΠ°ΠΊΠ²ΠΈ ΡΡΠ»ΠΎΠ²ΠΈ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° SV ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π»ΠΎΡΠΈΡΠ°Π½ βΠ½Π° ΡΡΡΠ°Π½Π°β Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈΡΠ΅ 1C Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π’Π°ΠΊΠ°, ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ SV ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄. ΠΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌΠ΅ ΠΌΠ°Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ CB ΡΡΠΎ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π²ΠΌΠ΅ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΎΠ±Π»Π°ΠΊ (wss://1cdialog.com) Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΡΠ΅ΠΆΠΈΡΠΊΠΈΡΠ΅ ΡΡΠΎΡΠΎΡΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠΌΠ΅ΡΠ°Π°Ρ Π΄Π΅ΠΊΠ° Π΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΠ»ΠΈΠ²ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ CB ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΈ. ΠΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΡΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΎΠ±Π»Π°ΠΊ SaaS ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
ΠΠ° Π΄Π° ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈ, ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ Π½Π΅ Π΅Π΄Π½Π° Java Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΡΠΊΡ Π½Π΅ΠΊΠΎΠ»ΠΊΡ, ΡΠΎ Π±Π°Π»Π°Π½ΡΠ΅Ρ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ Π½ΠΈΠ². ΠΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠ΅ΡΡΠ»ΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠ° ΠΎΠ΄ ΡΠ°Π·ΠΎΠ» Π½Π° ΡΠ°Π·ΠΎΠ», ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅/ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ Π½Π° Hazelcast.
ΠΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅ ΠΏΡΠ΅ΠΊΡ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ. ΠΠΎΠ±ΡΠΎ Π΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π²ΠΎ ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅.
ΠΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΊΠ΅Ρ
ΠΠ·Π±ΡΠ°Π²ΠΌΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ Redis, Hazelcast ΠΈ Ehcache. 2015 Π΅. Π Π΅Π΄ΠΈΡ ΡΠ°ΠΌΠΎ ΡΡΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅Ρ (ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ Π½ΠΎΠ², ΡΡΡΠ°ΡΠ΅Π½), ΠΈΠΌΠ° Π‘Π΅Π½ΡΠΈΠ½Π΅Π» ΡΠΎ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°. Ehcache Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠΎΡΡΠ°Π²ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ (ΠΎΠ²Π°Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΠΏΠΎΠ΄ΠΎΡΠ½Π°). Π Π΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠ±Π°ΠΌΠ΅ ΡΠΎ Hazelcast 3.4.
Hazelcast Π΅ ΡΠΎΡΡΠ°Π²Π΅Π½ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΊΡΡΠΈΡΠ°ΡΠ°. ΠΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ Π½Π° Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ», ΡΠΎΡ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΊΠ΅Ρ - Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΈΡΡΡΠ»ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠΎΡ, Π°ΠΊΠΎ Π³ΠΎ ΠΈΠ·Π³ΡΠ±ΠΈΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ», Π³ΠΈ Π³ΡΠ±ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅. Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Hazelcasts, ΠΌΠ΅ΡΡ ΠΊΠΎΠΈ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡΠ° Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ΅ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡΠ° Π½Π° ΠΊΠ΅ΡΠΎΡ - Π½Π΅ Π½ΠΈ ΠΏΡΠ΅ΡΠΈ ΡΠΎΠ°.
ΠΠ° Π½Π°Ρ, Hazelcast Π΅:
- Π‘ΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ. ΠΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ΄ΠΈ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠ΅ΡΠΈΡΠ° ΡΠ΅ΠΊΠΎΡ ΠΏΠ°Ρ, ΠΏΠ° Π·Π°ΡΠΎΠ° Π³ΠΈ ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΈ Π²ΠΎ Hazelcast.
- ΠΠ΅Ρ. ΠΠΊΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠΈΠ», ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π³ΠΎ ΠΊΠ΅ΡΠΎΡ. ΠΠ°ΠΏΠΈΡΠ° Π½ΠΎΠ²Π° ΠΏΠΎΡΠ°ΠΊΠ° - ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠ° Π²ΠΎ ΠΊΠ΅ΡΠΎΡ.
- Π’Π΅ΠΌΠΈ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°Π·ΠΎΠ»ΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π°ΡΡΠ°Π½ ΠΈ Π³ΠΎ ΡΡΠ°Π²Π° Π²ΠΎ ΡΠ΅ΠΌΠ°ΡΠ° Hazelcast. ΠΡΡΠ³ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΊΠΈ ΡΠ°Π·Π»ΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅Π½ΠΈ Π½Π° ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ° Π³ΠΎ ΠΏΡΠΈΠΌΠ°Π°Ρ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ Π½Π°ΡΡΠ°Π½ΠΎΡ.
- ΠΠ»Π°ΡΡΠ΅Ρ Π±ΡΠ°Π²ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΊΠ»ΡΡ (Π΅Π΄ΠΈΠ½Π΅ΡΠ½Π° Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ 1C):
conversationKeyChecker.check("ΠΠΠΠΠΠΠΠΠΠΠΠ");
doInClusterLock("ΠΠΠΠΠΠΠΠΠΠΠΠ", () -> {
conversationKeyChecker.check("ΠΠΠΠΠΠΠΠΠΠΠΠ");
createChannel("ΠΠΠΠΠΠΠΠΠΠΠΠ");
});
ΠΡΠΎΠ²Π΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π΅ΠΌΠ° ΠΊΠ°Π½Π°Π». ΠΠ° Π·Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π±ΡΠ°Π²Π°ΡΠ°, ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΠ²ΠΌΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈ ΡΠ° ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅. ΠΠΊΠΎ Π½Π΅ ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π±ΡΠ°Π²Π°ΡΠ° ΠΏΠΎ ΠΏΡΠ΅Π·Π΅ΠΌΠ°ΡΠ΅ΡΠΎ Π½Π° Π±ΡΠ°Π²Π°ΡΠ°, ΡΠΎΠ³Π°Ρ ΠΏΠΎΡΡΠΎΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π²ΠΎ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ ΠΈ Π΄ΡΡΠ³Π° Π½ΠΈΡΠΊΠ° ΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ Π΄Π° ΡΠ° ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΈΡΡΠ°ΡΠ° Π΄ΠΈΡΠΊΡΡΠΈΡΠ° - Π½ΠΎ ΡΠ°Π° Π²Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠΈ. ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ java Lock. ΠΡΠ΅ΠΊΡ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ - Π±Π°Π²Π½ΠΎ Π΅, ΠΈ ΡΡΠ΅ΡΠ° Π΅ Π·Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ; ΠΏΡΠ΅ΠΊΡ Hazelcast - ΡΠΎΠ° Π΅ ΠΎΠ½Π° ΡΡΠΎ Π²ΠΈ ΡΡΠ΅Π±Π°.
ΠΠ·Π±ΠΎΡ Π½Π° DBMS
ΠΠΌΠ°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ ΡΠΎ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ PostgreSQL ΠΈ ΡΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ DBMS.
ΠΠ΅ Π΅ Π»Π΅ΡΠ½ΠΎ ΡΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ PostgreSQL - ΠΏΠΎΡΡΠΎΠΈ
ΠΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠΎΠ° Π·Π½Π°ΡΠΈ
ΠΡΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΡΠ΅ΠΊΠΎΡΠ° ΠΎΠ΄ ΡΠ°Π±Π΅Π»ΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΡΠ°ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π - Π²Π΅ ΠΌΠΎΠ»Π°ΠΌ, Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌΠ΅ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ²Π°Π° ΡΠ°Π±Π΅Π»Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π. ΠΠ²Π°Π° ΠΎΠ΄Π»ΡΠΊΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π²ΡΠ΅ΡΠΊΠ°ΡΠ΅ Π·Π° ΠΏΡΠ΅ΡΠ°Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°, ΠΏΠ° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°Π½Π°ΡΠΈ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ Π·Π° ΠΌΡΠ»ΡΠΈ-Π·Π°ΠΊΡΠΏΠ΅Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°
SV Π³ΠΈ ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° Π½Π° Π΄Π΅Π»ΠΎΠ²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ERP ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΠΎ Π½Π΅ΡΠ·ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΈ Π΄Π΅Π»ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ Π²ΠΎ ΡΠΈΠ΅ ΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π° Π²ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ SV. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π·ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΌΠ΅ΡΡ ΡΠ΅Π±Π΅. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΡΡΠ°Π½Π° Π·Π°ΠΊΡΠΏΠ΅Ρ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΡΠ°ΠΊΠΈΡΠ΅ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π»ΠΎΡΠΈΡΠ°Π°Ρ Π²ΠΎ Π΅Π΄Π½Π° ΡΠΈΠ·ΠΈΡΠΊΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ; Π°ΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΠΏΠΎΡΠ½Π°Π» Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ, Π³ΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΠΌΠ΅ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½Π° ΡΠΈΠ·ΠΈΡΠΊΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΈΠ»ΠΈ Π΄ΡΡΠΈ ΠΈ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ).
ΠΠΌΠ°ΠΌΠ΅ Π³Π»Π°Π²Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ ΡΡΠ²Π° ΡΡΡΠΈΡΠ°ΡΠΊΠ° ΡΠ°Π±Π΅Π»Π° ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠΈΡΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ.
ΠΠ° Π΄Π° ΡΠΏΡΠ΅ΡΠΈΠΌΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠ΅ΡΠ½ΠΎ Π³ΡΠ»ΠΎ, ΡΠ° ΡΡΠ²Π°ΠΌΠ΅ ΡΡΡΠΈΡΠ°ΡΠΊΠ°ΡΠ° ΡΠ°Π±Π΅Π»Π° (ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) Π²ΠΎ ΠΊΠ΅Ρ.
ΠΠΊΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΠΏΠΎΡΠ½Π΅ Π΄Π° Π·Π°Π±Π°Π²ΡΠ²Π°, ΡΠ΅ ΡΠ° ΠΏΡΠ΅ΡΠ΅ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π²Π½Π°ΡΡΠ΅. ΠΠ° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅
ΠΠΈΠ΄Π΅ΡΡΠΈ Π³ΡΠ±Π΅ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ Π΅ Π»ΠΎΡΠΎ, Π½ΠΈΠ΅ Π³ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ°ΡΠ΅ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π³ΡΠ±Π΅ΡΠ΅ Π½Π° Π³Π»Π°Π²Π½Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ°Π³ΡΠ±Π°ΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΏΡΠΈΠΌΠ°ΡΠ½Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π½Π΅ ΡΡΠΏΠ΅Π°Ρ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ.
ΠΠΊΠΎ ΡΠ΅ ΠΈΠ·Π³ΡΠ±ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°, Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° ΡΡΠ°Π½ΡΠ²Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π°.
ΠΠΊΠΎ Π³Π»Π°Π²Π½Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·Π³ΡΠ±ΠΈ, ΡΠΈΠ½Ρ
ΡΠΎΠ½Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° ΡΡΠ°Π½ΡΠ²Π° Π³Π»Π°Π²Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° ΡΡΠ°Π½ΡΠ²Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°.
ElasticsΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π·Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅
ΠΠΈΠ΄Π΅ΡΡΠΈ, ΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΡΠΎ, SV Π΅ ΠΈ Π³Π»Π°ΡΠ½ΠΈΠΊ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ Π±ΡΠ·ΠΎ, ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ ΠΈ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅, Π·Π΅ΠΌΠ°ΡΡΠΈ ΡΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΌΠΎΡΡΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π½Π΅ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΈ ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ°. Π Π΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΠΊΠ°Π»ΠΎΡΠΎ ΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΎΡ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°Ρ Elasticsearch, ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°
ΠΠ° github Π½Π°ΡΠ΄ΠΎΠ²ΠΌΠ΅
Π ΠΊΠΎΡΠ΅Π½ΠΎΡ Π½Π° Π·Π±ΠΎΡΠΎΡ βΡΠ΅ΠΊΡΡβ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π·Π°ΡΡΠ²Π°Π½. ΠΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ, Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π°ΡΠ° ΠΈ Π½Π° ΠΊΡΠ°ΡΠΎΡ Π½Π° Π·Π±ΠΎΡΠΎΡ.
ΠΠΎΠ»Π΅ΠΌΠ°ΡΠ° ΡΠ»ΠΈΠΊΠ°
ΠΠΎΠ²ΡΠΎΡΠ΅ΡΠ΅ ΡΠ° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΠ΄ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, Π½ΠΎ ΡΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ²Π°ΡΠ°:
- ΠΠ°Π»Π°Π½ΡΠ΅ΡΠΎΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ; ΠΈΠΌΠ°ΠΌΠ΅ nginx, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡ.
- ΠΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Java Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ Π΅Π΄Π½ΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠ΅ΠΊΡ Hazelcast.
- ΠΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ ΡΡΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅
Netty . - ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π²ΠΎ Java 8 ΠΈ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠΈ
OSGi . ΠΠ»Π°Π½ΠΎΠ²ΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° Π½Π° Java 10 ΠΈ ΡΡΠ°Π½Π·ΠΈΡΠΈΡΠ° ΠΊΠΎΠ½ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
Π Π°Π·Π²ΠΎΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅
ΠΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° SV, Π½Π°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅.
Π’Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°
ΠΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° SV Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅. Π£ΡΠΏΠ΅ΡΠ½ΠΎ Π΅ ΠΊΠΎΠ³Π°:
- Π’Π΅ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π΅Π½Π° ΠΈ Π½Π΅ΠΌΠ°ΡΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΠΈ Π²ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΡ
- ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π·Π° ΠΊΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ Π³ΠΎ Π½Π°Π΄ΠΌΠΈΠ½Π° ΡΠ΄ΠΎΠ±Π½ΠΈΠΎΡ ΠΏΡΠ°Π³
- ΠΠ»ΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π΅ Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 10%
ΠΠΈΠ΅ ΡΠ° ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ - Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π½Π°ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΠΎΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ ΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, Π³ΠΈ ΠΌΠ½ΠΎΠΆΠΈΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π±ΡΠΎΠ΅Π²ΠΈ ΡΠΎ 5 (Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ, Π΄ΠΈΡΠΊΡΡΠΈΠΈ, ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ) ΠΈ Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π° ΡΠΎΡ Π½Π°ΡΠΈΠ½.
ΠΠΈΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° Π²ΠΎ ΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
- ΡΡΡΠ΅Ρ ΡΠ΅ΡΡ
- Π‘Π°ΠΌΠΎ Π²ΡΡΠΊΠΈ
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ
ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΡΠ΅Ρ-ΡΠ΅ΡΡΠΎΡ, ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΡΠΎΡΠΈΡΠΈ Π½ΠΈΡΠΊΠΈ ΠΈ ΡΠΈΠ΅ Π³ΠΎ Π²ΡΠΈΡΡΠ²Π°Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π±Π΅Π· Π·Π°ΠΏΠΈΡΠ°ΡΠ΅: ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΠΈ, ΠΏΡΠΈΠΌΠ°ΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ. Π‘ΠΈΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ Π΄Π΅ΡΡΡΠ²Π° Π½Π° ΠΎΠ±ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ (Π΄ΠΎΠ±ΠΈΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΠΌΠΎΠΈ Π½Π΅ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΏΠΈΡΡΠ²Π°ΡΡΠ΅ Π½Π΅ΠΊΠΎΠΌΡ) ΠΈ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° (ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅).
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° Π΄Π΅Π» ΠΎΠ΄ ΡΡΡΠ΅Ρ ΡΠ΅ΡΡΠΎΡ:
- ΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠ΅ Π½Π°ΡΠ°Π²ΡΠ²Π°
- ΠΠΈ Π±Π°ΡΠ° Π²Π°ΡΠΈΡΠ΅ Π½Π΅ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΈ Π΄ΠΈΡΠΊΡΡΠΈΠΈ
- 50% Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡ Π΄Π° ΡΠΈΡΠ°Π°Ρ ΠΏΠΎΡΠ°ΠΊΠΈ
- 50% Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡ Π΄Π° ΠΏΠΈΡΡΠ²Π°Π°Ρ ΠΏΠΎΡΠ°ΠΊΠΈ
- Π‘Π»Π΅Π΄Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ:
- ΠΠΌΠ° 20% ΡΠ°Π½ΡΠ° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ²Π° Π΄ΠΈΡΠΊΡΡΠΈΡΠ°
- Π‘Π»ΡΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π±ΠΈΡΠ° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΠΈ
- ΠΠ»Π΅Π³ΡΠ²Π° Π²Π½Π°ΡΡΠ΅
- ΠΠ°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ
- Π‘ΠΎΠ·Π΄Π°Π²Π° ΠΏΠ΅Ρ ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠΏΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ ΡΠ»ΡΡΠ°ΡΠ½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΎΠ΄ ΠΎΠ²Π°Π° Π΄ΠΈΡΠΊΡΡΠΈΡΠ°
- ΠΠ° Π½Π°ΠΏΡΡΡΠ° Π΄ΠΈΡΠΊΡΡΠΈΡΠ°ΡΠ°
- Π‘Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π° 20 ΠΏΠ°ΡΠΈ
- Π‘Π΅ ΠΎΠ΄ΡΠ°Π²ΡΠ²Π°, ΡΠ΅ Π²ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ
- ΠΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²Π»Π΅Π³ΡΠ²Π° ΡΠ΅ΡΠ±ΠΎΡ (Π΅ΠΌΡΠ»ΠΈΡΠ° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°)
- ΠΠΌΠ° 50% ΡΠ°Π½ΡΠ° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² ΠΊΠ°Π½Π°Π» Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½Π° Π΄ΠΈΡΠΊΡΡΠΈΡΠ°)
- 50% Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡ Π΄Π° Π½Π°ΠΏΠΈΡΠ°Ρ ΠΏΠΎΡΠ°ΠΊΠ° Π΄ΠΎ Π½Π΅ΠΊΠΎΡ ΠΎΠ΄ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ
Π‘ΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ βΠ‘Π°ΠΌΠΎ Π²ΡΡΠΊΠΈβ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°. ΠΠΎΡΡΠΎΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠ°: ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π³ΠΎ ΠΏΠΎΠ²ΡΠ·Π°Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π½ΠΎ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΠ°. Π‘Π΅ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π³ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ Π²ΠΎ 09:00 ΡΠ°ΡΠΎΡ Π½Π°ΡΡΡΠΎ, Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π²ΡΡΠΊΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈ ΠΌΠΎΠ»ΡΠΈ. ΠΠ²ΠΈΠ΅ ΠΌΠΎΠΌΡΠΈ ΡΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΈ, Π³ΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ - Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΡΠΎ Π³ΠΈ ΠΈΠΌΠ°Π°Ρ ΡΠ΅ ΠΠΠΠ/ΠΠΠΠ, Π½ΠΎ ΡΠ° Π·Π°Π΄ΡΠΆΡΠ²Π°Π°Ρ Π²ΡΡΠΊΠ°ΡΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ (Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ° Π·Π°Π΄ΡΠΆΠ°Ρ - ΡΡΠΎ Π°ΠΊΠΎ ΠΈΠΌΠ° Π½ΠΎΠ²Π° ΠΏΠΎΡΠ°ΠΊΠ°). Π’Π΅ΡΡΠΎΡ ΡΠ΅ΠΏΡΠΎΠ΄ΡΡΠΈΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΡΠ°ΠΊΠ²ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ°Π°Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠ°Ρ. Π‘Π»ΠΈΡΠ½ΠΎ Π΅ Π½Π° ΡΡΡΠ΅Ρ ΡΠ΅ΡΡ, Π½ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΡΠΎΠΊΡΡ Π΅ ΡΠΎΠΊΠΌΡ Π½Π° ΠΎΠ²ΠΎΡ ΠΏΡΠ² Π²Π»Π΅Π· - Π·Π° Π΄Π° Π½Π΅ΠΌΠ° Π½Π΅ΡΡΠΏΠ΅ΡΠΈ (Π»ΠΈΡΠ΅ΡΠΎ Π½Π΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π° ΡΠΎΡ Π²Π΅ΡΠ΅ ΠΏΠ°ΡΠ° - ΡΠ΅ΡΠΊΠΎ Π΅ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΠΈ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ»ΠΎΡΠΎ).
Π‘ΠΊΡΠΈΠΏΡΠ°ΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΠΎΠ΄ ΠΏΡΠ²ΠΎΡΠΎ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅. Π‘ΠΏΡΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΡΡΡΠ΅Ρ-ΡΠ΅ΡΡ ΠΈ Π±Π΅Π²ΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π΅ ΡΡΠΏΠΎΡΡΠ²Π° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΡΠ΅ΡΠΏΠΎΠ½Π΄Π΅Π½ΡΠΈΡΠ°ΡΠ°. ΠΠΎ, Π΄ΠΎΡΠ΄ΠΎΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΠ½Π° Π΄Π° ΠΏΡΠΎΠΏΠ°ΡΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΡΠΌΠ°ΡΡ. ΠΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅
ΠΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅
ΠΡΡΡΠΊΠ° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠ΅.
Π Π΅ΡΠΈΡΠΈ Π²Π΅Π΄Π½Π°Ρ ΠΎΡΠΊΠ°ΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΠΎΡΠΊΡΠΈΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° JMeter ΠΏΠΎΡΠ½Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΠΊΡΠ²Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°.
ΠΡΠΈΠΊΠ»ΡΡΠΎΠΊΠΎΡ Π΅ ΠΏΠΎΡΠ΅Π±Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° ΠΏΡΠΈΠΊΠ°Π·Π½Π°; ΡΠΎ 176 ΡΠ²Π΅Π·Π΄ΠΈ, ΠΈΠΌΠ° 132 Π²ΠΈΠ»ΡΡΠΊΠΈ Π½Π° github. Π‘Π°ΠΌΠΈΠΎΡ Π°Π²ΡΠΎΡ Π½Π΅ ΡΠ΅ ΠΎΠ±Π²ΡΠ·Π°Π» Π½Π° ΡΠΎΠ° ΠΎΠ΄ 2015 Π³ΠΎΠ΄ΠΈΠ½Π° (Π³ΠΎ Π·Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π²ΠΎ 2015 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΠΎΠ³Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΡΠΎΠΌΠ½Π΅ΠΆΠΈ), Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ github Π²ΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΠΏΡΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, 7 Π½Π΅Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π±Π°ΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΡΠ΅.
ΠΠΊΠΎ ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π·Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΠΊ, Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΎΠ±ΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΠΈ:
- ΠΠΎ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½ΠΈΡΠΊΠΈ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΎΠ±ΠΈΡΠ½Π° LinkedList, ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ Π±Π΅ΡΠ΅
ΠΠΠ Π²ΠΎ ΡΡΠ°Π΅ΡΠ΅. ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΡΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ Π½Π° ConcurrentLinkedDeque ΠΈΠ»ΠΈ ΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ. ΠΠ° ΠΈΠ·Π±ΡΠ°Π²ΠΌΠ΅ ΠΏΡΠ²Π°ΡΠ° ΠΎΠΏΡΠΈΡΠ° Π·Π° ΡΠ΅Π±Π΅ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/43 ). - ΠΡΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°; ΠΏΡΠΈ ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Π²ΡΡΠΊΠ°ΡΠ° Π½Π΅ ΡΠ΅ Π±ΡΠΈΡΠ°Ρ (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/44 ). - ΠΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ Π½Π° ΡΡΡΠΈΠΌΠΈΠ½Π³ (ΠΊΠΎΠ³Π° Π²Π΅Π±-ΡΠΎΠΊΠ΅ΡΠΎΡ Π½Π΅ Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊΠΎΡ, Π½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΠ΄ΠΎΡΠ½Π° Π²ΠΎ ΠΏΠ»Π°Π½ΠΎΡ), ΡΠ΅ΠΌΠΈΡΠ΅ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/19 ).
ΠΠ²Π° Π΅ Π΅Π΄Π½ΠΎ ΠΎΠ΄ ΠΎΠ½ΠΈΠ΅ Π½Π° github. Π¨ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅:
- ΠΡΠ΅Π·Π΅Π»Π΅
Π²ΠΈΠ»ΡΡΠΊΠ° ΠΠ»ΠΈΡΠ°Π½ ΠΠΎΠ³Π°Π½ (@elyrank) β Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ 1 ΠΈ 3 - Π Π΅ΡΠ΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ 2
- ΠΠΆΡΡΠΈΡΠ°Π½Π° Π΄ΠΈΠ³Π° ΠΎΠ΄ 9.2.14 Π΄ΠΎ 9.3.12
- ΠΠ°Π²ΠΈΡΠΊΠ°Π½ SimpleDateFormat Π²ΠΎ ThreadLocal; SimpleDateFormat Π½Π΅ Π΅ Π±Π΅Π·Π±Π΅Π΄Π΅Π½ Π·Π° Π½ΠΈΡΠΊΠΈ, ΡΡΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ NPE ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅
- ΠΠΎΠΏΡΠ°Π²Π΅Π½ΠΎ Π΅ Π΄ΡΡΠ³ΠΎ ΠΈΡΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° (Π²ΡΡΠΊΠ°ΡΠ° Π±Π΅ΡΠ΅ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎ Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π° ΠΊΠΎΠ³Π° Π±Π΅ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π°)
Π ΡΠ΅ΠΏΠ°ΠΊ ΡΠ΅ΡΠ΅!
ΠΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΠ½Π° Π΄Π° ΠΈΡΡΠ΅ΠΊΡΠ²Π° Π½Π΅ Π·Π° Π΅Π΄Π΅Π½ Π΄Π΅Π½, ΡΡΠΊΡ Π·Π° Π΄Π²Π°. ΠΠΏΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΌΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅, ΠΏΠ° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΡΠ΅ΠΌΠΈ, Π½ΠΎ Π½Π° ΡΠ΅ΡΠΈΡΠΈ Π°Π³Π΅Π½ΡΠΈ. ΠΠ²Π° ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π±Π°ΡΠ΅ΠΌ Π΅Π΄Π½Π° Π½Π΅Π΄Π΅Π»Π°.
ΠΠΎΠΌΠΈΠ½Π°Π° Π΄Π²Π° Π΄Π΅Π½Π°...
Π‘Π΅Π³Π° Hazelcast Π΅ Π±Π΅Π· ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°. ΠΠ½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ°Π° Π΄Π΅ΠΊΠ° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π΅Π½Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, Hazelcast ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΠΆΠ°Π»ΠΈ Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°, Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΡΠ΅ ΡΠ°ΡΠΏΠ°Π΄Π½Π°, Π° ΡΠ°Π·Π»ΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ° Π΄Π° ΡΠΌΠΈΡΠ°Π°Ρ Π΅Π΄Π΅Π½ ΠΏΠΎ Π΅Π΄Π΅Π½. ΠΠΎ ΠΏΠΎΠ²ΡΠ·Π°Π²ΠΌΠ΅ JVisualVM ΡΠΎ Π»Π΅ΡΠ½ΠΈΠΊ ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ βΠΏΠΈΠ»Π° ΡΡΠΎ ΡΠ΅ ΠΊΡΠ΅Π²Π°β - ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ GC, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΈΡΡΠΈΡΡΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°.
Π‘Π΅ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈ Π΄Π΅ΠΊΠ° Π²ΠΎ hazelcast 3.4, ΠΏΡΠΈ Π±ΡΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΌΠ°ΠΏΠ° / multiMap (map.destroy()), ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π΅ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄Π΅Π½Π°:
ΠΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ΅Π³Π° Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π²ΠΎ 3.5, Π½ΠΎ ΡΠΎΠ³Π°Ρ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΠΌΡΠ»ΡΠΈΠΌΠ°ΠΏΠΈ ΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΈΠΌΠΈΡΠ° ΠΈ Π³ΠΈ ΠΈΠ·Π±ΡΠΈΡΠ°Π²ΠΌΠ΅ ΡΠΏΠΎΡΠ΅Π΄ Π½Π°ΡΠ°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ°. ΠΠΎΠ΄ΠΎΡ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ° Π²Π°ΠΊΠ°:
public void join(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.put(auth.getUserId(), auth);
}
public void leave(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.remove(auth.getUserId(), auth);
if (sessions.size() == 0) {
sessions.destroy();
}
}
ΠΠΈΠ·ΠΎΠ²:
service.join(auth1, "ΠΠΠΠ«Π_Π‘ΠΠΠΠ©ΠΠΠΠ―_Π_ΠΠΠ‘Π£ΠΠΠΠΠΠ_UUID1");
service.join(auth2, "ΠΠΠΠ«Π_Π‘ΠΠΠΠ©ΠΠΠΠ―_Π_ΠΠΠ‘Π£ΠΠΠΠΠΠ_UUID1");
multiMap Π±Π΅ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ° ΠΈ ΡΠ΅ Π±ΡΠΈΡΠ΅ ΠΊΠΎΠ³Π° Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ. Π Π΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ ΡΠΎ ΠΠ°ΠΏΠ° , ΠΊΠ»ΡΡΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ°ΡΠ°, Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΡΠ΅ΡΠΈΠΈ (ΠΎΠ΄ ΠΊΠΎΠΈ ΠΏΠΎΡΠΎΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, Π΄ΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ).
public void join(Authentication auth, String sub) {
addValueToMap(sub, auth.getSessionId());
}
public void leave(Authentication auth, String sub) {
removeValueFromMap(sub, auth.getSessionId());
}
Π’Π°Π±Π΅Π»ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ°.
Π¨ΡΠΎ Π΄ΡΡΠ³ΠΎ Π½Π°ΡΡΠΈΠ²ΠΌΠ΅ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅?
- JSR223 ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ ΠΆΠ»Π΅Π± ΠΈ Π΄Π° Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΊΠ΅Ρ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° - ΡΠΎΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ±ΡΠ·ΠΎ.
ΠΠΈΠ½ΠΊ . - ΠΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈΡΠ΅ Π½Π° Jmeter-Plugins ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ½ΠΈ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅.
ΠΠΈΠ½ΠΊ .
ΠΠ° Π½Π°ΡΠ΅ΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ ΡΠΎ Hazelcast
Hazelcast Π±Π΅ΡΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π·Π° Π½Π°Ρ, ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ Π½Π΅Π³ΠΎ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 3.4.1, ΡΠ΅Π³Π° Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 3.9.2 (Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅, Π½Π°ΡΠ½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Hazelcast Π΅ 3.10).
ΠΠ΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΠ
ΠΠΎΡΠ½Π°Π²ΠΌΠ΅ ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ. ΠΠ° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½ΠΈ ΡΡΠ΅Π±Π° ΡΡΡΠ΅ Π΅Π΄Π΅Π½ ΠΠΎΠ»Π³ Π·Π° Π½ΠΎΠ² Π΅Π½ΡΠΈΡΠ΅Ρ. Π Π΅Π΄ΠΎΡΠ»Π΅Π΄ΠΎΡ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π΅ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π°, ΡΠ°Π±Π΅Π»ΠΈΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΠ΄Π΅Π»Π±Π°ΡΠ° - ΠΈΠ·Π»Π΅Π³ΡΠ²Π° Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° ΠΏΠΎΡΠ°ΠΊΠ° ID=1 Π²ΠΎ DB1 ΠΈ ΠΏΠΎΡΠ°ΠΊΠ° ID=1 Π²ΠΎ DB2, Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΡΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°Π° ID Π²ΠΎ Elasticsearch, Π½ΠΈΡΡ Π²ΠΎ Hazelcast , Π½ΠΎ Π½Π°ΡΠ»ΠΎΡΠΎΡΠΎ Π΅ Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ Π΄Π²Π΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π΅Π΄Π½Π° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ Π΄Π΅ΠΊΠ° Π΅Π΄Π½Π° Π±Π°Π·Π° Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½Π° Π·Π° ΠΎΠ²ΠΈΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ). ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ AtomicLongs Π½Π° Hazelcast ΠΈ Π΄Π° Π³ΠΎ Π·Π°Π΄ΡΠΆΠΈΡΠ΅ Π±ΡΠΎΡΠ°ΡΠΎΡ ΡΠ°ΠΌΡ, Π° ΠΏΠΎΡΠΎΠ° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ Π½Π° Π½ΠΎΠ² ID ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°Π°Ρ ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ ΠΏΠ»ΡΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π±Π°ΡΠ°ΡΠ΅ Π΄ΠΎ Hazelcast. ΠΠΎ, Hazelcast ΠΈΠΌΠ° Π½Π΅ΡΡΠΎ ΠΏΠΎΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ - FlakeIdGenerator. ΠΡΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈΠΌ ΡΠ΅ Π΄Π°Π²Π° ΠΎΠΏΡΠ΅Π³ Π½Π° ID, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ²ΠΈΠΎΡ β ΠΎΠ΄ 1 Π΄ΠΎ 10, Π²ΡΠΎΡΠΈΠΎΡ β ΠΎΠ΄ 000 Π΄ΠΎ 10 ΠΈΡΠ½. Π‘Π΅Π³Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌ Π΄Π° ΠΈΠ·Π΄Π°Π²Π° Π½ΠΎΠ²ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ Π·Π°Π²ΡΡΠΈ ΠΎΠΏΡΠ΅Π³ΠΎΡ ΡΡΠΎ ΠΌΡ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½. Π Π°Π±ΠΎΡΠΈ Π±ΡΠ·ΠΎ, Π½ΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° (ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Hazelcast), Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° Π½ΠΎΠ²Π° Π½ΠΈΠ·Π° - ΠΎΡΡΡΠΊΠ° ΠΈ ΠΏΡΠ΅ΡΠΊΠΎΠΊΠ½ΡΠ²Π°ΡΠ°ΡΠ° ΠΈΡΠ½. ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π°Ρ Π·ΠΎΡΡΠΎ ΠΠ ΡΠ΅ ΡΠ΅Π»ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, Π½ΠΎ ΡΠ΅ ΡΠΎΠ»ΠΊΡ Π½Π΅ΠΊΠΎΠ½Π·ΠΈΡΡΠ΅Π½ΡΠ½ΠΈ. ΠΠ·ΠΌΠ΅ΡΠΈΠ²ΠΌΠ΅ ΡΓ¨ ΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈΠ²ΠΌΠ΅ Π½Π° UUID.
ΠΠ°ΡΠ΅ΠΌ, Π·Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΊΠ°ΠΊΠΎ Π’Π²ΠΈΡΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΈ ΡΠ°ΠΊΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Snowcast - ΠΎΠ²Π° Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Snowflake Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Hazelcast. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΎΠ²Π΄Π΅:
ΠΠΎ, Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠΈΠ²ΠΌΠ΅ Π΄ΠΎ ΡΠΎΠ°.
TransactionMap.Π·Π°ΠΌΠ΅Π½ΠΈ
Π£ΡΡΠ΅ Π΅Π΄Π½ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄ΡΠ²Π°ΡΠ΅: TransactionalMap.replace Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ. ΠΠ²Π΅ Π΅Π΄Π΅Π½ ΡΠ΅ΡΡ:
@Test
public void replaceInMap_putsAndGetsInsideTransaction() {
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
context.getMap("map").put("key", "oldValue");
context.getMap("map").replace("key", "oldValue", "newValue");
String value = (String) context.getMap("map").get("key");
assertEquals("newValue", value);
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
Expected : newValue
Actual : oldValue
ΠΠΎΡΠ°Π² Π΄Π° Π½Π°ΠΏΠΈΡΠ°ΠΌ ΡΠ²ΠΎΡΠ° Π·Π°ΠΌΠ΅Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ getForUpdate:
protected <K,V> boolean replaceInMap(String mapName, K key, V oldValue, V newValue) {
TransactionalTaskContext context = HazelcastTransactionContextHolder.getContext();
if (context != null) {
log.trace("[CACHE] Replacing value in a transactional map");
TransactionalMap<K, V> map = context.getMap(mapName);
V value = map.getForUpdate(key);
if (oldValue.equals(value)) {
map.put(key, newValue);
return true;
}
return false;
}
log.trace("[CACHE] Replacing value in a not transactional map");
IMap<K, V> map = hazelcastInstance.getMap(mapName);
return map.replace(key, oldValue, newValue);
}
Π’Π΅ΡΡΠΈΡΠ°ΡΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠΊΡ ΠΈ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠΊΠΈ Π²Π΅ΡΠ·ΠΈΠΈ. Π‘Π΅ ΡΠ»ΡΡΡΠ²Π° IMap Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, Π½ΠΎ TransactionalMap ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π° Π½Π΅ ΠΏΠΎΡΡΠΎΠΈ.
ΠΠΌΠ΅ΡΠ½Π΅ΡΠ΅ Π½ΠΎΠ² JAR Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ
ΠΡΠ²ΠΎ, ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΡΠ½ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ ΠΎΠ΄ Π½Π°ΡΠΈΡΠ΅ ΡΠ°ΡΠΎΠ²ΠΈ Π²ΠΎ Hazelcast. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠ»Π°ΡΠ° Application, ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ° Π·Π°ΡΡΠ²Π°ΠΌΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΠΌΠ΅. ΠΠ°ΡΡΠ²Π°Ρ:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
map.set(id, application);
Π§ΠΈΡΠ°ΠΌΠ΅:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
return map.get(id);
Π‘Γ¨ ΡΠ°Π±ΠΎΡΠΈ. ΠΠΎΡΠΎΠ° ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π²ΠΎ Hazelcast Π·Π° Π΄Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎ:
map.addIndex("subscriberId", false);
Π ΠΊΠΎΠ³Π° ΠΏΠΈΡΡΠ²Π°Π° Π½ΠΎΠ² Π΅Π½ΡΠΈΡΠ΅Ρ, ΡΠΈΠ΅ ΠΏΠΎΡΠ½Π°Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ ClassNotFoundException. Hazelcast ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΡ, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ Π½ΠΈΡΡΠΎ Π·Π° Π½Π°ΡΠΈΠΎΡ ΠΊΠ»Π°Ρ ΠΈ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΠΌΡ Π±ΠΈΠ΄Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ JAR ΡΠΎ ΠΎΠ²Π°Π° ΠΊΠ»Π°ΡΠ°. ΠΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ ΡΠΎΠΊΠΌΡ ΡΠΎΠ°, ΡΓ¨ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅, Π½ΠΎ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π½ΠΎΠ² ΠΏΡΠΎΠ±Π»Π΅ΠΌ: ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° JAR Π±Π΅Π· ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΏΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ? Hazelcast Π½Π΅ Π³ΠΎ Π·Π΅ΠΌΠ° Π½ΠΎΠ²ΠΈΠΎΡ JAR Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΡΠ°Π·ΠΎΠ» Π΄ΠΎ ΡΠ°Π·ΠΎΠ». ΠΠΎ ΠΎΠ²ΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅ΠΌΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ. ΠΠ° ΠΊΡΠ°ΡΠΎΡ Π½Π° ΠΊΡΠ°ΠΈΡΡΠ°ΡΠ°, Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Hazelcast ΠΊΠ°ΠΊΠΎ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° ΡΠΎ ΠΊΠ»ΡΡΠ½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ, ΡΠΎΠ³Π°Ρ ΡΓ¨ ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°? ΠΠ΅ Π½Π°Π²ΠΈΡΡΠΈΠ½Π°. ΠΠ²Π΄Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° IMap ΠΈ TransactionalMap Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ. ΠΠ½Π°ΠΌΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π½Π° IMap Π½Π΅ ΠΌΡ Π΅ Π³ΡΠΈΠΆΠ°, TransactionalMap ΠΈΡΡΡΠ»Π° Π³ΡΠ΅ΡΠΊΠ°.
IMap. ΠΠΈΡΡΠ²Π°ΠΌΠ΅ 5000 ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ, Π³ΠΈ ΡΠΈΡΠ°ΠΌΠ΅. Π‘Π΅ Π΅ ΠΎΡΠ΅ΠΊΡΠ²Π°Π½ΠΎ.
@Test
void get5000() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
UUID subscriberId = UUID.randomUUID();
for (int i = 0; i < 5000; i++) {
UUID id = UUID.randomUUID();
String title = RandomStringUtils.random(5);
Application application = new Application(id, title, subscriberId);
map.set(id, application);
Application retrieved = map.get(id);
assertEquals(id, retrieved.getId());
}
}
ΠΠΎ, ΡΠΎΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°, Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ClassNotFoundException:
@Test
void get_transaction() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application_t");
UUID subscriberId = UUID.randomUUID();
UUID id = UUID.randomUUID();
Application application = new Application(id, "qwer", subscriberId);
map.set(id, application);
Application retrievedOutside = map.get(id);
assertEquals(id, retrievedOutside.getId());
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
TransactionalMap<UUID, Application> transactionalMap = context.getMap("application_t");
Application retrievedInside = transactionalMap.get(id);
assertEquals(id, retrievedInside.getId());
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
ΠΠΎ 3.8, ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π·Π½Π°ΡΠΈΡΠ΅ Π΅Π΄Π΅Π½ Π³Π»Π°Π²Π΅Π½ ΡΠ°Π·ΠΎΠ» ΠΈ Π΄Π° ΡΠ° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° JAR Π½Π° Π½Π΅Π°.
Π‘Π΅Π³Π° ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π³ΠΎ ΡΠΌΠ΅Π½ΠΈΠ²ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ: ΡΠ°ΠΌΠΈΡΠ΅ Π³ΠΎ ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΠΎ JSON ΠΈ Π³ΠΎ Π·Π°ΡΡΠ²ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ Hazelcast. Hazelcast Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° Π·Π½Π°Π΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΠ°ΡΠΎΠ²ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ. ΠΠ΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΡ Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π° ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Π Π°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π° ΠΌΠΎΠΆΠ½Π° Π΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° Π½ΠΎΠ²Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΈΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΡΠΎ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°, Π½ΠΎ ΡΡΠ°ΡΠ°ΡΠ° ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π·Π½Π°Π΅ Π·Π° ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠ°. Π Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎΠ²Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΡΡΠ°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΠΈ Π½Π΅ΠΌΠ°Π°Ρ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°. ΠΠΈΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ ΡΠΎ ΡΠ°ΠΊΠ²ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, Π½ΠΎ Π·Π°ΡΠ°Π΄ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΈΠ»ΠΈ Π±ΡΠΈΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠ°, ΡΡΠΊΡ ΡΠ°ΠΌΠΎ Π³ΠΈ ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΠΌΠ΅ ΠΊΠ»Π°ΡΠΈΡΠ΅ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°.
ΠΠ°ΠΊΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ
Π§Π΅ΡΠΈΡΠΈ ΠΏΠ°ΡΡΠ²Π°ΡΠ° Π΄ΠΎ Hazelcast - Π΄ΠΎΠ±ΡΠΎ, Π΄Π²Π΅ Π΄ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ - Π»ΠΎΡΠΈ
ΠΠ΄Π΅ΡΠ΅ΡΠΎ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΡΠΊΠΎΠ»ΠΊΡ Π΄Π° ΠΎΠ΄ΠΈΡΠ΅ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π½ΠΈΡΡ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ΄Π»ΡΠΊΠ°ΡΠ° Π·Π° ΡΠΎΠ° ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΊΠ΅ΡΠΈΡΠ° ΡΠ° ΠΎΡΡΠ°Π²Π°ΠΌΠ΅ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π²ΠΎΡ. ΠΠΎΠ³Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π°, Π³ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π°ΠΌΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° Π²ΠΎ PostgreSQL (log_min_duration_statement Π΄ΠΎ 0) ΠΈ Π³ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π·Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ 20 ΠΌΠΈΠ½ΡΡΠΈ. ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΈ ΡΠΎΠ±ΡΠ°Π½ΠΈΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ, Π°Π»Π°ΡΠΊΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ pgFouine ΠΈ pgBadger ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΡΠ°Π΄Π°Ρ Π°Π½Π°Π»ΠΈΡΠΈΡΠΊΠΈ ΠΈΠ·Π²Π΅ΡΡΠ°ΠΈ. ΠΠΎ ΠΈΠ·Π²Π΅ΡΡΠ°ΠΈΡΠ΅, ΠΏΡΠ²Π΅Π½ΡΡΠ²Π΅Π½ΠΎ Π±Π°ΡΠ°ΠΌΠ΅ Π±Π°Π²Π½ΠΈ ΠΈ ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°. ΠΠ° Π±Π°Π²Π½ΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°, Π³ΡΠ°Π΄ΠΈΠΌΠ΅ ΠΏΠ»Π°Π½ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ (ΠΠΡΠ°ΡΠ½Π΅ΡΠ΅) ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ ΡΠ°ΠΊΠ²ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π±ΡΠ·Π°. Π§Π΅ΡΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° Π·Π° ΠΈΡΡΠΈ Π²Π»Π΅Π·Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΄ΠΎΠ±ΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΠΎΠΏΡΠ²Π°Π°Ρ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ. ΠΠΈΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΠΌΠ΅ Π΄Π° Π³ΠΈ Π·Π°Π΄ΡΠΆΠΈΠΌΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ°ΡΠ° βΡΠ°ΠΌΠ½ΠΈβ, Π΅Π΄Π½Π° ΡΠ°Π±Π΅Π»Π° ΠΏΠΎ Π±Π°ΡΠ°ΡΠ΅.
ΠΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΠ°
SV ΠΊΠ°ΠΊΠΎ ΠΎΠ½Π»Π°ΡΠ½ ΡΡΠ»ΡΠ³Π° Π±Π΅ΡΠ΅ ΠΏΡΡΡΠ΅Π½Π° Π²ΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π° Π²ΠΎ ΠΏΡΠΎΠ»Π΅ΡΡΠ° 2017 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄, SV Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ Π²ΠΎ Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° (ΡΠΎΠ³Π°Ρ Π²ΠΎ ΡΡΠ°ΡΡΡ Π½Π° Π±Π΅ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°).
ΠΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ΡΠΎ, Π½Π΅ΠΌΠ° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ½Π»Π°ΡΠ½ ΡΡΠ»ΡΠ³Π°ΡΠ° CB. ΠΠ° ΡΠ»Π΅Π΄ΠΈΠΌΠ΅ ΠΎΠ½Π»Π°ΡΠ½ ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΏΡΠ΅ΠΊΡ
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ SV ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ: RPM, DEB, MSI. ΠΠ»ΡΡ Π·Π° Windows ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠ΅Ρ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ EXE ΠΊΠΎΡ Π³ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, Hazelcast ΠΈ Elasticsearch Π½Π° Π΅Π΄Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. ΠΡΠ²ΠΈΡΠ½ΠΎ ΡΠ° Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π²ΠΌΠ΅ ΠΎΠ²Π°Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ βΠ΄Π΅ΠΌΠΎβ Π²Π΅ΡΠ·ΠΈΡΠ°, Π½ΠΎ ΡΠ΅Π³Π° ΡΡΠ°Π½Π° ΡΠ°ΡΠ½ΠΎ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ Π½Π°ΡΠΏΠΎΠΏΡΠ»Π°ΡΠ½Π°ΡΠ° ΠΎΠΏΡΠΈΡΠ° Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
ΠΠ·Π²ΠΎΡ: www.habr.com