Выпуск Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для создания сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ErgoFramework 2.2

Бостоялся ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π΅Π»ΠΈΠ· ErgoFramework 2.2, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ сСтСвой стСк Erlang ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ OTP Π½Π° языкС Go. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнтарий ΠΈΠ· ΠΌΠΈΡ€Π° Erlang для создания распрСдСлённых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π° языкС Go с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… шаблонов проСктирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния gen.Application, gen.Supervisor ΠΈ gen.Server, Π° Ρ‚Π°ΠΊΠΆΠ΅ спСциализированных — gen.Stage (distributed pub/sub), gen.Saga (distributed transactions, рСализация шаблона проСктирования SAGA) ΠΈ gen.Raft (рСализация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Raft).

Помимо этого, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прокси с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ сквозного ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, нСдоступного Π² Erlang/OTP ΠΈ Elixir. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² языкС Go отсутствуСт прямой Π°Π½Π°Π»ΠΎΠ³ процСсса Erlang, Ρ‚ΠΎ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ goroutine ΠΊΠ°ΠΊ основы для gen.Server с ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΎΠΉ «recover» для возмоТности ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ 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. ΠŸΡ€ΠΈΠΌΠ΅Ρ€.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Events с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ простой событийной ΡˆΠΈΠ½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΎΠ΄Ρ‹, которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±ΠΌΠ΅Π½Π° событиями (pub/sub) срСди Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… процСссов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° рСгистрации Ρ‚ΠΈΠΏΠΎΠ², которая позволяСт автоматичСски ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ/Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сообщСний Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Golang. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ etf.TermIntoStruct для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ сообщСния. ЗарСгистрированныС Ρ‚ΠΈΠΏΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ трансформированы Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ автоматичСски, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлёнными Π½ΠΎΠ΄Π°ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru