ΠΠ·Π»Π΅Π·Π΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ErgoFramework 2.2, ΠΊΠΎΠ΅ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π° ΠΏΡΠ»Π½ΠΈΡ ΠΌΡΠ΅ΠΆΠΎΠ² ΡΡΠ΅ΠΊ Erlang ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° OTP Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Go. Π Π°ΠΌΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π³ΡΠ²ΠΊΠ°Π²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΠ²Π΅ΡΠ° Π½Π° Erlang Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Go, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ gen.Application, gen.Supervisor ΠΈ gen.Server, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ - gen. Stage (ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ pub/sub), gen. Saga (ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ SAGA) ΠΈ gen.Raft (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Raft).
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΡΠΎΠΊΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Ρ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΎΡ ΠΊΡΠ°ΠΉ Π΄ΠΎ ΠΊΡΠ°ΠΉ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ Π² Erlang/OTP ΠΈ Elixir. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅Π·ΠΈΠΊΡΡ Go Π½ΡΠΌΠ° ΠΏΡΡΠΊ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Erlang, ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° goroutines ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π·Π° gen.Server Ρ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° βΠ²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅β Π·Π° ΡΠΏΡΠ°Π²ΡΠ½Π΅ Ρ ΠΈΠ·Π²ΡΠ½ΡΠ΅Π΄Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° MIT.
ΠΡΠ΅ΠΆΠΎΠ²ΠΈΡΡ ΡΡΠ΅ΠΊ Π² ErgoFramework Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° DIST Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Erlang. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ErgoFramework, ΡΠ°Π±ΠΎΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Erlang ΠΈΠ»ΠΈ Elixir (ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π²ΡΠ·Π΅Π» Erlang). Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½ gen.Stage Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΡΡΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Elixir GenStage ΠΈ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π½Π΅Ρ (ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ).
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ
- gen.Web Π΅ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° Web API Gateway (ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡΠΎ ΠΊΠ°ΡΠΎ Backend For Frontend). ΠΡΠΈΠΌΠ΅Ρ.
- gen.TCP Π΅ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ Π°ΠΊΡΠ΅ΠΏΡΠΎΡΠΈ Π½Π° TCP Π²ΡΡΠ·ΠΊΠ° Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΏΡΠΈ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄. ΠΡΠΈΠΌΠ΅Ρ.
- gen.UDP - ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° gen.TCP, ΡΠ°ΠΌΠΎ Π·Π° UDP ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΡΠΈΠΌΠ΅Ρ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΠ° ΡΠΈΠ½Π° Π·Π° ΡΡΠ±ΠΈΡΠΈΡ Π²ΡΡΡΠ΅ Π² Π²ΡΠ·Π΅Π», ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ (pub/sub) ΠΌΠ΅ΠΆΠ΄Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΡΠΈΠΌΠ΅Ρ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅/Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ Π½Π° Golang. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ etf.TermIntoStruct Π·Π° Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈ Π² ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΈΠΏ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡΠ·Π»ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru