Фреймуерът е реализация на концепции от Erlang за разработка на Go, изградена на базата на актьорния модел с мрежова прозрачност и готови компоненти.
Основни възможности в тази версия
- mTLS — нов интерфейс gen.CertAuthManager за взаимна автентикация с управление на CA пулове
- NAT преодоляване — опции RouteHost и RoutePort за възли зад NAT или балансировачи
- Контрол на времето за стартиране — InitTimeout ограничава времето за инициализация на процеси (локално и отдалечно)
- Шutdown timeout — контролирано завършване на възела с логиране на забавени процеси
- pprof етикети — всяка горутина на актора се маркира с PID за отстраняване на грешки чрез pprof
Нови актьори (Допълнителна библиотека)
- Лидер — разпределени избори на лидер с консенсус по стил Raft. Автоматично пренасочване, защита от split-brain чрез кворум на мнозинството
- Metrics — експортер на метрики Prometheus с автоматично събиране на телеметрия за възела и мрежата
Нови мета-процеси
- SSE (Събития в сървъра) — еднопосочно стрийминг серверс-клиент по HTTP с пълна поддръжка на спецификацията SSE
Производителност
- Локално: 21M+ съобщения/сек
- По мрежата: ~5M съобщения/сек
- Разпределен Pub/Sub: 2.9M съобщения/сек доставка на 1,000,000 абонати на 10 възла (10 мрежови съобщения вместо 1M)
Корекции
- Критичен бъг: сигналите за завършване (Link/Monitor exits) неправилно се отхвърляха поради грешна валидация на incarnation в мрежовия слой
Документация
Пълно пренаписване и включване в хранилището. Нови статии:
- Структура на проекта — организиране на проекти с нива на изолация на съобщенията
- Създаване на клъстър — стъпка по стъпка ръководство за разпределени системи
- Версиониране на съобщения — еволюция на договорите за съобщения в клъстери
- Отстраняване на грешки — build тагове, 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
