Π“Ρ€Π°Π΄ΠΈΠ²Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния. НулСво ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅

Π“Ρ€Π°Π΄ΠΈΠ²Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния. НулСво ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅

Π‘Π²Π΅Ρ‚ΡŠΡ‚ Π½Π΅ стои Π½Π° Π΅Π΄Π½ΠΎ място. ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡŠΡ‚ създава Π½ΠΎΠ²ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ прСдизвикатСлства. Π’ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с промСнящитС сС изисквания, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ систСми трябва Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π°. ДнСс Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° управлявана ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, СдноврСмСнност, паралСлност, асинхронност ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅Ρ‚Π΅ спокойно с всичко Ρ‚ΠΎΠ²Π° Π² Erlang.

въвСдСниС

Π’ зависимост ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π°Ρ‚Π° систСма ΠΈ изискванията към нСя, Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° информация Π² систСмата. Π’ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи, Π·Π° Π΄Π° сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° взаимодСйствиСто Π½Π° услугитС, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° опция ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС схСма с Π±Ρ€ΠΎΠΊΠ΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° RabbitMQ ΠΈΠ»ΠΈ kafka. Но понякога ΠΏΠΎΡ‚ΠΎΠΊΡŠΡ‚ ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, SLA ΠΈ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ систСмата са Ρ‚Π°ΠΊΠΈΠ²Π°, Ρ‡Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π½Π΅ са подходящи Π·Π° нас. Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° услоТнитС ΠΌΠ°Π»ΠΊΠΎ систСмата, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ΅ΠΌΠ΅Ρ‚Π΅ отговорността Π·Π° транспортния слой ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ZeroMQ ΠΈΠ»ΠΈ nanomsg. Но Π°ΠΊΠΎ систСмата ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ пропускатСлна способност ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° стандартСн Erlang ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Ρ‚ΠΎΠ³Π°Π²Π° Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π·Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΎΠ±Π΅ΠΊΡ‚ изисква ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅ ΠΈ икономичСска обосновка.

Π’Π΅ΠΌΠ°Ρ‚Π° Π·Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния Π΅ доста ΡˆΠΈΡ€ΠΎΠΊΠ°. Π—Π° Π΄Π° сС спази Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π½Π° статията, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π½Π° Π΄Π½Π΅ΡˆΠ½Π°Ρ‚Π° дискусия Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ само Ρ…ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΈ срСди, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Erlang/Elixir. ЕкосистСмата Erlang/OTP Π²ΠΈ позволява Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° с Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ усилия. Но във всСки случай Ρ‰Π΅ Π½ΠΈ трябва слой Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

Π’Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½Π° основа

Π”ΠΈΠ·Π°ΠΉΠ½ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π²Π° с опрСдСлянС Π½Π° Ρ†Π΅Π»ΠΈΡ‚Π΅ ΠΈ ограничСнията. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π΅ Π΅ Π² областта Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π² ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ. Врябва Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сигурСн ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ инструмСнт, Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° създавамС ΠΈ, Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ, Π΄Π° Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ прилоТСния ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π°: ΠΊΠ°Ρ‚ΠΎ сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΠΎΡ‚ Π΅Π΄Π½ΠΎΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ прилоТСния, обслуТващи ΠΌΠ°Π»ΠΊΠ° аудитория, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-късно ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС развият Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π΄ΠΎ 50 -60 възли, Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Ρ‰ΠΈ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ основната Ρ†Π΅Π» Π΅ Π΄Π° сС максимизират ΠΏΠ΅Ρ‡Π°Π»Π±ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· намаляванС Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ собствСност Π½Π° ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° систСма.

НСка ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π΅ΠΌ 4 основни изисквания Π·Π° ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° систСма:

  • Π‘ΡΡŠΠ±ΠΈΡ‚ΠΈΠΉΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½.
    БистСмата Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ дСйствия;
  • ΠœΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚.
    Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ. Цялата систСма трябва Π΄Π° Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π΅Π½ растСТ;
  • ΠžΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚.
    Всички Π½ΠΈΠ²Π° ΠΈ всички услуги трябва Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚ ΠΎΡ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ;
  • Π“Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° рСакция.
    Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π΅ Ρ†Π΅Π½Π½ΠΎ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π΅ трябва Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚ Ρ‚Π²ΡŠΡ€Π΄Π΅ дълго.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Π»ΠΈ старата ΠΏΡ€ΠΈΠΊΠ°Π·ΠΊΠ° Π·Π° β€žΠœΠ°Π»ΠΊΠΈΡΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΡˆΠ΅β€œ? Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π°Ρ‚Π° систСма ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ ΠΎΡ‚ Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΈ Π΄Π° бъдС прогрСсивна, Π½Π΅ΠΉΠ½Π°Ρ‚Π° основа трябва Π΄Π° отговаря Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ‚Π΅ изисквания Π‘ΠœΠžΠ“.

ΠžΡ‰Π΅ Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° сС добавя към ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° ΠΊΠ°Ρ‚ΠΎ инфраструктурСн инструмСнт ΠΈ основа Π·Π° всички услуги: Π»Π΅ΠΊΠΎΡ‚Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π·Π° програмисти.

Π‘ΡŠΠ±ΠΈΡ‚ΠΈΠΉΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ Π΄ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° трябва Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° слабо ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅. Асинхронният ΠΌΠΎΠ΄Π΅Π» отговаря Π½Π° Ρ‚ΠΎΠ²Π° изискванС. ΠŸΡ€ΠΈ Π½Π΅Π³ΠΎ податСлят ΠΈ получатСлят сС Π³Ρ€ΠΈΠΆΠ°Ρ‚ Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π½Π΅ сС притСсняват Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° систСмата.

ΠœΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚

ΠœΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚Ρ‚Π° ΠΈ СфСктивността Π½Π° систСмата са Π΅Π΄Π½Π° Π΄ΠΎ Π΄Ρ€ΡƒΠ³Π°. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ всички Π½Π°Π»ΠΈΡ‡Π½ΠΈ рСсурси. ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π° ΠΈ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΈ са Π½Π°ΡˆΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°Ρ€ΠΈ Ρ…Π°Ρ€Ρ‡ΠΈΠΌ Π·Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅.

Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° машина Erlang създава силно ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Π° срСда. Π‘Π°Π»Π°Π½ΡΡŠΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ СдноврСмСнност ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° сС настрои Ρ‡Ρ€Π΅Π· ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° броя Π½Π° Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° Erlang VM, ΠΈ броя Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚Π΅Π·ΠΈ нишки.
Erlang процСситС Π½Π΅ сподСлят ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ работят Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ. Π’ΠΎΠ²Π° осигурява относитСлно ниска латСнтност ΠΈ ΠΏΠΎ-висока производитСлност Π² сравнСниС с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ прилоТСния. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° Erlang Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° справСдливо Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° CPU ΠΈ IO, Π° липсата Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ позволява Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π° Π΄ΠΎΡ€ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΈΠΊΠΎΠ²ΠΈ натоварвания ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ.

На ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ ΡΡŠΡ‰ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°. Π’Π°ΠΆΠ½ΠΎ Π΅ всички машини Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΄Π° са Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ΠΈ ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π΄Π° Π½Π΅ Π΅ ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½Π°. НСка си прСдставим ситуация: потрСбитСлският Ρ‚Ρ€Π°Ρ„ΠΈΠΊ сС призСмява Π½Π° входящи Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈ (haproxy, nginx ΠΈ Ρ‚.Π½.), Ρ‚Π΅ разпрСдСлят заявкитС Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° възмоТно Π½Π°ΠΉ-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° инфраструктурата Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ услугата, внСдряваща нСобходимия интСрфСйс, Π΅ само послСдната миля ΠΈ Ρ‰Π΅ трябва Π΄Π° поиска Ρ€Π΅Π΄ΠΈΡ†Π° Π΄Ρ€ΡƒΠ³ΠΈ услуги, Π·Π° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° заявка. Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ заявки ΡΡŠΡ‰ΠΎ изискват ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ балансиранС.
Π—Π° Π΄Π° управлява Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΡ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° трябва Π΄Π° прСдоставят Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ интСрфСйс Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ балансиранСто Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Ρ‰Π΅ ΠΌΠΎΠ³Π°Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° микросСрвизи (Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΡ€, прокси, Π²Π΅Ρ€ΠΈΠ³Π°, ΠΊΠ»ΠΎΠ½ ΠΈ Ρ‚.Π½.), Π΄Π° Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ стандартни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π°, ΠΊΠΎΠΈΡ‚ΠΎ рядко Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚.

ΠžΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° бизнСса мащабируСмостта Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ инструмСнтитС Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° риска. ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ Π΅ Π΄Π° сС задоволят исканията Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅Ρ‚ΠΎ:

  • ΠšΠΎΠ³Π°Ρ‚ΠΎ мощността Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅Ρ‚ΠΎ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° прогрСса. Няма Π΄Π° бСздСйства ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π΅ΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ софтуСр. Erlang ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° всички CPU ядра ΠΈ Π½Π°Π»ΠΈΡ‡Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚;
  • Π’ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ срСди ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° управлявамС количСството ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅ Π² зависимост ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ΠΈ Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ SLA.

отказоустойчивост

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π΅ аксиоми: β€žΠŸΡ€ΠΎΠ²Π°Π»ΠΈΡ‚Π΅ са Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΈβ€œ ΠΈ β€žΠ’ΠΈΠ½Π°Π³ΠΈ Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ²Π°Π»ΠΈβ€œ. Π—Π° Π΅Π΄ΠΈΠ½ бизнСс софтуСрният срив ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π·Π°Π³ΡƒΠ±Π° Π½Π° ΠΏΠ°Ρ€ΠΈ ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-лошо, Π·Π°Π³ΡƒΠ±Π° Π½Π° рСпутация. Балансирайки ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π·Π°Π³ΡƒΠ±ΠΈ ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° устойчив Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ софтуСр, чСсто ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ компромис.

Π’ краткосрочСн ΠΏΠ»Π°Π½, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, която Π²ΠΊΠ»ΡŽΡ‡Π²Π° толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ, спСстява ΠΏΠ°Ρ€ΠΈ Π·Π° Π·Π°ΠΊΡƒΠΏΡƒΠ²Π°Π½Π΅ Π½Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅. Бкъпи са ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΈ бъговС.
Π’ Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π΅Π½ ΠΏΠ»Π°Π½ Π΅Π΄Π½Π° устойчива Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° сС ΠΈΠ·ΠΏΠ»Π°Ρ‰Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π½Π° всички Π΅Ρ‚Π°ΠΏΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.
Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π² ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π²ΠΈ позволяват Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ взаимодСйствиСто Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π² систСмата Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’ΠΎΠ²Π° опростява Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π·Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всички ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ сС справят с ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° систСма Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ към Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎΡ‚ΠΎ слСд ΠΏΠΎΠ²Ρ€Π΅Π΄Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠžΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²ΠΎΡΡ‚

НСзависимо ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° отговаря Π½Π° заявки ΠΈ Π΄Π° отговаря Π½Π° SLA. РСалността Π΅, Ρ‡Π΅ Ρ…ΠΎΡ€Π°Ρ‚Π° Π½Π΅ искат Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ„ΠΈΡ€ΠΌΠΈΡ‚Π΅ трябва Π΄Π° сС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Ρ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ. ВсС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ прилоТСния сС ΠΎΡ‡Π°ΠΊΠ²Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²ΠΈ.
ΠžΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²ΠΈΡ‚Π΅ прилоТСния работят ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Erlang VM Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² ΠΌΠ΅ΠΊ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π—Π° някои области, ΠΊΠ°Ρ‚ΠΎ борсова Ρ‚ΡŠΡ€Π³ΠΎΠ²ΠΈΡ, ΠΌΠ΅Π΄ΠΈΡ†ΠΈΠ½Π° ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΠΏΡ€ΠΎΠΌΠΈΡˆΠ»Π΅Π½ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅, Ρ‚Π²ΡŠΡ€Π΄ΠΈΡΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π²Π°ΠΆΠ΅Π½.
ΠžΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²ΠΈΡ‚Π΅ систСми подобряват UX ΠΈ са ΠΎΡ‚ ΠΏΠΎΠ»Π·Π° Π·Π° бизнСса.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π΅Π·ΡŽΠΌΠ΅

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ… Ρ‚Π°Π·ΠΈ статия, исках Π΄Π° сподСля ΠΎΠΏΠΈΡ‚Π° си ΠΎΡ‚ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° слоТни систСми въз основа Π½Π° Π½Π΅Π³ΠΎ. Но Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½Π°Ρ‚Π° ΠΈ ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° част сС ΠΎΠΊΠ°Π·Π° доста ΠΎΠ±ΡˆΠΈΡ€Π½Π°.
Π’ΡŠΠ² Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част Π½Π° статията Ρ‰Π΅ говоря Π·Π° Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅ Π½Π° внСдряванСто Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ тяхното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π’ Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° част Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠ±Ρ‰ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° услуги, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ балансиранС. НСка ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° практичСската страна Π½Π° мащабируСмостта ΠΈ устойчивостта Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π½Π° систСмитС.

ΠšΡ€Π°ΠΉ Π½Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° част.

Π€ΠΎΡ‚ΠΎ @lucabravo.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€