ErgoFramework 2.2

good-penguin.png

Состоялся очередной релиз 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.

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

©  Linux.org.ru