Выпуск фрэймворка для стварэння сеткавых прыкладанняў 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

Дадаць каментар