Фреймворк представлява реализация на концепциите на Erlang за разработка на Go, изградена върху модел на актьори с мрежова прозрачност и готови компоненти.
Основни възможности в тази версия
- mTLS — нов интерфейс gen.CertAuthManager за взаимна аутентификация с управление на CA пулове
- NAT traversal — опции RouteHost и RoutePort за възли зад NAT или балансери
- Контрол на времето за инициализация — InitTimeout ограничава времето за инициализация на процесите (локално и отдалечено)
- Време за_shutdown — контролирано затваряне на възела с логване на зависнали процеси
- pprof етикети — всяка горутина на актора се етикетира с PID за дебъгване през pprof
Нови актьори (Extra Library)
- Лидер — разпределени избори на лидер с консенсус в стил Raft. Автоматичен failover, защита от split-brain чрез кворум на мнозинството
- Metrics — експортер на метрики Prometheus с автоматично събиране на телеметрия от възела и мрежата
Нови мета-процеси
- SSE (Server-Sent Events) — еднопосочен стрийминг от сървър към клиент по HTTP с пълна поддръжка на спецификацията SSE
Производителност
- Локално: 21M+ съобщения/сек
- По мрежата: ~5M съобщения/сек
- Разпределено Pub/Sub: 2.9M съобщения/сек доставка на 1,000,000 абонати на 10 възела (10 мрежови съобщения вместо 1M)
Поправки
- Критичен бъг: сигналите за затваряне (Link/Monitor exits) неправилно се отхвърляха поради неправилна проверка на incarnation в мрежовия слой
Документация
Пълна преработка и включена в репозитория. Нови статии:
- Project Structure — организация на проектите с нива на изолация на съобщенията
- Building a Cluster — стъпка по стъпка ръководство за разпределени системи
- Message Versioning — еволюция на контрактите на съобщенията в клъстери
- Debugging — build tags, pprof, дебъгване на зависнали процеси
Връзки
- Примери: https://github.com/ergo-services/examples
- Бенчмаркове: https://github.com/ergo-services/benchmarks
- Репозитория: https://github.com/ergo-services/ergo
- Сайт: https://ergo.services
Източник: linux.org.ru
