После года разработки состоялся релиз фреймворка Ergo 1.2, реализующего полный сетевой стек Erlang и его библиотеку OTP на языке Go. Фреймворк предоставляет разработчику гибкий инструментарий из мира Erlang для создания распределённых решений на языке Go с помощью готовых шаблонов проектирования Application, Supervisor и GenServer. Поскольку в языке Go отсутствует прямой аналог процесса Erlang, то во фреймворке используются goroutine как основы для GenServer с обёрткой recover для возможности обработки исключительных ситуаций. Код проекта распространяется под лицензией MIT.
В новом выпуске:
- Реализована поддержка TLS 1.3 с возможностью автогенерации самоподписанных сертификатов (если необходимо шифровать соединения, но нет потребности в его авторизации, поскольку подключение использует cookie для предоставления доступа к узлу)
- Добавлена статическая маршрутизация, чтобы исключить обращение к EMPD для определения порта узла. Это позволяет решить проблему безопасности и вместе с шифрованием даёт возможность запускать кластер Erlang в публичных сетях.
- Добавлен новый щаблон GenStage (из мира Elixir), который позволяет создавать Pub/Sub решения без использования Message Bus. Одной из важных особенностей этого шаблона является “backpressure control”. “Producer” будет доставлять ровно тот объем сообщений, который был запрошен “Consumer.” Пример реализации можно посмотреть здесь.
В разделе дискуссий обсуждается реализация шаблона проектирования SAGAS, реализующего функциональность распределённых транзакций.
Release.
Ссылка here.