LINUX.ORG.RU

ErgoFramework 2.2

 , ,


0

1

Состоялся очередной релиз ErgoFramework, реализующего полный сетевой стек Erlang и его библиотеку OTP на языке Go.

Фреймворк предоставляет разработчику гибкий инструментарий из мира Erlang для создания распределённых решений на языке Go с помощью готовых шаблонов проектирования общего назначения gen.Application, gen.Supervisor и gen.Server. а также специализированных - gen.Stage (distributed pub/sub), gen.Saga (distributed transactions. реализация шаблона проектирования SAGA) и gen.Raft (реализация протокола Raft).

Помимо этого, фреймворк имеет функционал прокси-подключения с возможностью end-to-end шифрования, недоступный в Erlang/OTP и Elixir. Пример использования можно посмотреть здесь

Поскольку в языке Go отсутствует прямой аналог процесса Erlang, то во фреймворке используются goroutine как основы для gen.Server с обёрткой recover для возможности обработки исключительных ситуаций.

Сетевой стек в 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 для каждого полученного сообщения. Зарегистрированные типы будут трансформированны в заданный тип автоматически, что значительно ускоряет производительность обмена сообщениями между распределенными нодами.

Полный список изменений можно посмотреть здесь.

Код проекта распространяется под лицензией MIT.

>>> Подробности

★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Слушай, а в чём профит? Как я понимаю, у тебя там где-то есть много кода на энралрге и нужен был интероп с чем-то более производительным? Или есть другие сценарии, о которых я не подумал?

hateyoufeel ★★★★★
()
Ответ на: комментарий от theNamelessOne

А, ну я угадал значит. Спасибо.

Просто обычно, когда не хватает производительности энларга, в него библиотеку на сишке или плюсцах суют. Но сетевой интероп – тоже неплохой вариант.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Просто обычно, когда не хватает производительности энларга, в него библиотеку на сишке или плюсцах суют

В последнее время ещё и на Rust или Zig, ну по крайней мере в проектах на Elixir.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

это все NIF-ы. В них вы лишаетесь всей элегантности акторной модели. в эрго вы изначально дизайните свое приложение в акторной парадигме.

ergo ★★★
() автор топика
Ответ на: комментарий от ergo

это все NIF-ы. В них вы лишаетесь всей элегантности акторной модели. в эрго вы изначально дизайните свое приложение в акторной парадигме.

Это для более низкого уровня. Акторность пишется на том же энралге.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

о том и речь. можно пользоваться сразу инструментом с нужной производительностью и с акторной моделью.

ergo ★★★
() автор топика

Расскажи об опыте использования ergo другими людьми или компаниями. С какой проблемой они к тебе пришли, с какой ушли?

filosofia
()
Ответ на: комментарий от filosofia

одни ребята из азии пришли с проблемой когда процесс дропал сообщения без каких-либо сообщений о проблеме (у них хайлоад какой-то связанный с трейдингом). там была бага на самом деле, должен был быть варнинг на stdout, но его не случалось. в конечном счете не только эту проблему полечили, но и добавилась опция у процесса, где можно задать fallback процесс на случай если мейлбокс процесса кончился. это было еще в прошлом релизе.

другие ребята пришли с багой в реализации gen.Stage (местная швейцарская фирма). в ерго был реализован именно элексировский GenStage. у них решение на эликсире было реализовано и хотели часть перенести в го ибо с перформансом страдали. поправил, ребята поехали дальше, но уже с го.

я, кстати, заметил, что бОльшая часть девелоперов, кто юзает ерго находится либо в азии (китай, сингапур), либо в южной америке.

ergo ★★★
() автор топика
Ответ на: комментарий от ergo

У тебя тут производительность может просесть из-за пересылок данных по сети.

Не, я понимаю, что это и зачем ты это написал. Просто к тому, что это не универсальная штука для всего.

Я теперь вот думаю запилить такое же, только на хачкеле. Фреймворк для акторов уже был, но он не совместим с энларгом никак.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от ergo

Подумал это было основной причиной появления этого фреймфорка.

ya-betmen ★★★★★
()

А эту штуку без эрланга норм использовать? Чем это лучше nats и других штук пересылки сообщений?

fardok
()
Ответ на: комментарий от fardok

да, это полноценный фреймворк для создания приложений. просто он умеет общаться с нодами ерланга нативно.

это не лучше натс. натс - это паб/саб решение, ни больше ни меньше. в ерго это фича и там есть два вида паб/саб - для распределенных решений (gen.Stage) и как локальная шина для обмена сообщениями (gen.Events)

ergo ★★★
() автор топика
Последнее исправление: ergo (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

все эти язычки без классов похожи на то, во что превратили тамошнюю монаду, что знаково ящитаю

Syncro ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.