ΠΡΠ°ΠΊ, Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. ΠΠ°ΠΊ ΠΈ ΠΌΡ. ΠΡ ΡΠΎΠΆΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΡΠ°ΠΌΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π²Π΅Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° β statsd-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ
ΠΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
Π½Π°ΡΠΈΡ
ΡΡΠ°ΡΠ΅ΠΉ (
ΠΡΠ΅ΡΠ΅Π½Π·ΠΈΡ 1. Github β ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° β ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ: ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠΈ ΠΈ ΡΠΈΠΊΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π°ΡΠΈ ΠΈ (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈ) PR. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΡΠ΅Π² (Π³Π΄Π΅-ΡΠΎ Ρ ΡΠ΅Π²ΡΠ°Π»Ρ-ΠΌΠ°ΡΡΠ° 2018) Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠΈ 2 Π³ΠΎΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π·Π°ΡΠΈΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ
ΠΡΠ΅ΡΠ΅Π½Π·ΠΈΡ 2. Π’ΠΎΡΠ½ΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. Brubeck ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π΄Π»Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ Π²ΡΠ΅Π³ΠΎ 65536 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊ Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ (30 ΡΠ΅ΠΊ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (1 527 392 Π² ΠΏΠΈΠΊΠ΅). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠΎΠ² ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠΎΠ² Π²ΡΠ³Π»ΡΠ΄ΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ
ΠΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡ
ΠΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΡΠΌΠΌΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΈΡΠ°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ΄Π° Π±Π°Π³ Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ 32-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ float, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅Ρ Π² segfault ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Ρ Π²ΠΈΠ΄Ρ Π½Π΅Π²ΠΈΠ½Π½ΠΎΠΉ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ. ΠΠ°Π³, ΠΊΡΡΠ°ΡΠΈ, ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½.
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΡΠ΅ΡΠ΅Π½Π·ΠΈΡ X. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠ΅Π΄ΡΡΠ²ΠΈΡΡ Π΅Ρ Π²ΡΠ΅ΠΌ 14 Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌ statsd, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΠ°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡΠΎΡΠ»Π° Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ 4 ΠΌΠ»Π½ MPS ΡΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ΠΠ»ΠΈ ΠΏΡΡΡΡ Π΅ΡΡ Π½Π΅ Π²ΡΡΠΎΡΠ»Π°, Π½ΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΄Π»Ρ Π²Π°Ρ ΡΠΆΠ΅ Π²Π°ΠΆΠ½Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅, 2-3 ΠΌΠΈΠ½ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°Ρ ΡΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΈΡΡΡΠΏΡ Π½Π΅ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠΉ Π΄Π΅ΠΏΡΠ΅ΡΡΠΈΠΈ Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΏΡΠ΅ΡΡΠΈΠΈ β Π΄Π΅Π»ΠΎ Π½Π΅Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ Π²Π½Π΅Π·Π°ΠΏΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π΅ ΡΡΡΡΠΎΠΈΠ»Π° Π² ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΡ ΠΈΠ°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·ΠΎΠΌΠ±ΠΈ Π°ΠΏΠΎΠΊΠ°Π»ΠΈΠΏΡΠΈΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ 4 ΠΌΠ»Π½ MPS, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΊΠΎΠΏΠ°ΡΡ Π²Π³Π»ΡΠ±Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° Linux ΠΈ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠ°ΡΡΠΈ Β«Π²ΡΠΈΡΡΒ» Π΄ΠΎ Π½ΡΠΆΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ².
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠ°Ρ Ρ Π½Π°Ρ Π±ΡΠ», ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°ΡΠ°ΡΡ Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. Β«Π! ΠΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ! ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΌΠ΅Π΅ΠΌΒ», β ΠΏΠΎΠ΄ΡΠΌΠ°Π»ΠΈ ΠΌΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ 2 ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΠ΄Π½ΡΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ brubeck. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ Ρ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ Π½Π° ΠΎΠ±Π° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ
ΠΡΠ»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠΊΠΎΠΏΠ°ΡΡ Π»ΠΎΠΏΠ°ΡΠΎΠΉ ΡΠ½Π΅Π³, ΡΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ ΡΠ°ΠΊΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΈΠ΄Π΅Ρ: Π½ΡΠΆΠ΅Π½ statsd, ΡΠΌΠ΅ΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π’ΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌ. Β«ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠΆΠ΅ Π΅ΡΡΡΒ», β ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΡ ΠΈ ΠΏΠΎΡΠ»ΠΈ Π³ΡΠ³Π»ΠΈΡΡβ¦. Π Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΡΠ»ΠΈ. ΠΡΠΎΡΠ΅ΡΡΡΠΈΠ² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ statsd (
Π ΡΡΡ ΠΌΡ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ ΠΏΡΠΎ Β«ΠΈΠ³ΡΡΡΠ΅ΡΠ½ΡΠΉΒ» statsd β bioyino, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ°Π»ΠΈ Π½Π° Ρ Π°ΠΊΠ°ΡΠΎΠ½Π΅ just for fun (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΡΠΊΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ Ρ Π°ΠΊΠ°ΡΠΎΠ½Π°) ΠΈ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π½Π°ΠΌ ΡΡΠΎΡΠ½ΠΎ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ statsd. ΠΠ°ΡΠ΅ΠΌ?
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΌΠΈΡΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»ΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ² statsd,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΠΈΠ»ΠΈ Π±Π»ΠΈΠ·ΠΊΡΡ ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅),
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠΎΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ brubeck,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ brubeck Π½Π°ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ»,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΡΡ ΡΠ°Π½Ρ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Ρ Π°ΠΉΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠ΅Π΄ΡΠΊΠ΅ΠΉΠ»Π°Π±Π»Π°ΠΏΠ»ΠΈΠΊΠ΅ΠΉΡΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ Ρ Π°ΠΉΠΏΠ΅ΡΡΠΎΡβ¦ Π½ΡΠ²ΡΠΏΠΎΠ½Π΅Π»ΠΈ.
ΠΠ° ΡΡΠΌ ΠΏΠΈΡΠ°ΡΡ? ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π½Π° Rust. ΠΠΎΡΠ΅ΠΌΡ?
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΆΠ΅ Π±ΡΠ» ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠ΅ΡΠ΅Π½ΠΈΡ,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°Π²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π·Π½Π°Π» Rust ΠΈ ΡΠ²Π°Π»ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° Π½ΡΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π° Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π²ΡΠ»ΠΎΠΆΠΈΡΡ ΡΡΠΎ Π² open-source,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ·ΡΠΊΠΈ Ρ GC Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π² ΡΠΈΠ»Ρ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° (ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ realtime) ΠΈ GC-ΠΏΠ°ΡΠ·Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ,
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½ΡΠΆΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΡΠ°Π²Π½ΠΈΠΌΠ°Ρ Ρ C
- ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Rust ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ fearless concurrency, Π° Π½Π°ΡΠ°Π² ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Π½Π° C/C++, ΠΌΡ Π±Ρ ΠΎΠ³ΡΠ΅Π±Π»ΠΈ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ brubeck, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π±ΡΡΠ΅ΡΠ°, race conditions ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ°ΡΠ½ΡΡ ΡΠ»ΠΎΠ².
ΠΡΠ» ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ² Rust. Π£ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΠΏΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Rust, ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΈ ΡΠ΅ΡΡΡΠ·Π½ΡΠ΅ ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, Π½ΠΎ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΈΡΠΊΠ½ΡΡΡ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ.
Π¨Π»ΠΎ Π²ΡΠ΅ΠΌΡβ¦
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ, ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Π±ΡΠ»Π° Π³ΠΎΡΠΎΠ²Π°. Π§ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ? ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠ΅.
ΠΠ°ΠΆΠ΄Π°Ρ Π½ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ ΠΈΡ
Ρ ΡΠ΅Π±Ρ, ΠΏΡΠΈΡΡΠΌ Π½Π΅ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ΅Ρ
ΡΠΈΠΏΠΎΠ², Π³Π΄Π΅ Π΄Π»Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡ
ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ. ΠΠΎΠ΄Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (distributed lock), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ
ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ (Π·Π΄Π΅ΡΡ ΠΌΡ ΠΏΠ»Π°ΠΊΠ°Π»ΠΈ), ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΡΡΠΎΠΉΠ½Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΠ΅Π»ΠΈΠΊΠΎΠΌΡ. Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ
UDP-ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ°Π·Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ Π½Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΡΠΎΠΉ Round Robin. Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, ΡΠ΅ΡΠ΅Π²Π°Ρ ΠΆΠ΅Π»Π΅Π·ΡΠΊΠ° Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ½ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ 4M ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠ°Ρ , ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½Π° Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ. ΠΡΠ»ΠΈ ΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌ. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π±ΡΡΡΡΠΎ (Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 1-2 ΡΠ΅ΠΊΡΠ½Π΄) ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΡΠ°ΠΊΡ ΠΈ ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠΏΠ°Π²ΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ· ΡΠΎΡΠ°ΡΠΈΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΠ΅ (Ρ.Π΅. Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ) Π½ΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ°Ρ ΠΏΡΠΎΡΠ°Π΄ΠΎΠΊ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°Ρ . ΠΠ°ΠΊΡΠΈΠΌΡΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ΅ΡΡΠ΅ΠΌ β ΡΡΠΎ ΡΠ°ΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊ, ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ½Π΅Π·Π°ΠΏΠ½Π°Ρ ΠΏΠΎΡΠ΅ΡΡ/Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅/ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ΄Π΅ΡΠ° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°ΡΠΈΡΡΠ΅Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π½ΠΎΠΌΠ°Π»ΠΈΡ (30-ΡΠ΅ΠΊΡΠ½Π΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½), Π½ΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡΠΌ ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅, Π½ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΠΉ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π² brubeck. ΠΠΎΡΠΎΠΊΠΈ Π² brubeck β ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π·Π° ΡΠ±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΈ Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ. Π bioyino ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ (workers) ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ: ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π° ΡΠ΅ΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ. Π’Π°ΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΌΠ΅ΡΡΠΈΠΊ: ΡΠ°ΠΌ Π³Π΄Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½Π°Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡΠΎΠ², ΡΠ°ΠΌ Π³Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° β ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π° Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² 8 ΡΠ΅ΡΠ΅Π²ΡΡ ΠΈ 4 Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
Π‘ΡΠΈΡΠ°ΡΡΠ°Ρ (ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π°Ρ Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ) ΡΠ°ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΡΡΠ½Π°Ρ. ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π±ΡΡΠ΅ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΡΠ°ΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π³Π΄Π΅ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠ°ΡΡΡΡΡΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΡΡ. ΠΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΎΡΠ΄Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π½ΠΎΠ΄Ρ. ΠΡΡ ΡΡΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΡ Π΄Π°Π½Π½ΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Consul, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅
ΠΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²ΡΠ·Π²Π°Π»Π° ΡΠ΅ΡΠ΅Π²Π°Ρ ΡΠ°ΡΡΡ, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π°Ρ Π·Π° ΠΏΡΠΈΡΠΌ ΠΌΠ΅ΡΡΠΈΠΊ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ Π±ΡΠ»ΠΎ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠΎΠΊ Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ°. ΠΠ°ΡΠΈΠ°Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠ³ΠΎ UDP ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ recvmsg Π±ΡΡΡΡΠΎ ΠΎΡΠΏΠ°Π»ΠΈ: ΠΏΠ΅ΡΠ²ΡΠΉ Π΅ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ user-space CPU Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ, Π²ΡΠΎΡΠΎΠΉ β ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π²ΡΡΡΠ°Π²Π»Π΅Π½ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π²Π΄ΡΡΠ³ ΡΠ΅ΡΠΈΡΠ΅ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎΠ»ΠΊΠ½ΡΡΠ΅ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠ΅ΡΡΠΈΠΊ, ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠΈΠ»Π΅ΡΡΡ Π² Graphite, ΠΎΡΡΠ°Π²ΡΠΈΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠΈΠΊ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ bufsize ΠΈ task-queue-size Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅.
ΠΠ°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ β Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π΄Π»Ρ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠ².
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ: Π±ΠΎΠ»Π΅Π΅ 2 ΠΌΠ»Π½ MPS.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΎΠ΄ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ.
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΠΎ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌ: ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π½ΠΎΠ΄Π° β ΡΠ΅ΠΉΠ΄Π±ΠΎΡΡ.
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ (ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅ΡΡΠΈΠΊ ΡΠΊΡΡΡΡ).
Π§ΡΠΎ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Ρ ΡΡΠΈΠΌ Π²ΡΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅? ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, Π±Π»…! ΠΡΠΎΠ΅ΠΊΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ open-source ΠΈ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ Π²ΡΡ Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Ρ. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΠΏΠ»Π°Π½Π°Ρ β ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ Raft, ΡΠΌΠ΅Π½Π° peer-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ, Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, Π½ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² ΠΌΠ΅ΡΡΠΈΠΊ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π²ΡΠ΅ ΠΆΠ΅Π»Π°ΡΡΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ PR, Issues, ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠ²Π΅ΡΠ°ΡΡ, Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ Ρ. Π΄.
ΠΠ° ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, that’s all folks, ΠΏΠΎΠΊΡΠΏΠ°ΠΉΡΠ΅ Π½Π°ΡΠΈΡ ΡΠ»ΠΎΠ½ΠΎΠ²!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com