Framework ten jest realizacją koncepcji Erlanga dla programowania w Go, opartą na modelu aktorów z przejrzystością sieciową i gotowymi komponentami.
Główne funkcje w tej wersji
- mTLS — nowy interfejs gen.CertAuthManager dla wzajemnej autoryzacji z zarządzaniem pulami CA
- NAT traversal — opcje RouteHost i RoutePort dla węzłów za NAT lub równoważnikami obciążenia
- Kontrola czasu uruchamiania — InitTimeout ogranicza czas inicjalizacji procesów (lokalnie i zdalnie)
- Czas na zamknięcie — kontrolowane zakończenie węzła z logowaniem zawieszonych procesów
- etykiety pprof — każda gorutyna aktora jest oznaczana PID do debugowania przez pprof
Nowe aktory (Extra Library)
- Lider — rozproszone wybory lidera z konsensusem w stylu Raft. Automatyczny failover, ochrona przed split-brain poprzez quorum większości
- Metryki — eksporter metryk Prometheus z automatycznym zbieraniem telemetrii węzła i sieci
Nowe meta-procesy
- SSE (Server-Sent Events) — jednokierunkowe przesyłanie danych serwer-klient przez HTTP z pełnym wsparciem specyfikacji SSE
Wydajność
- Lokalnie: 21M+ wiadomości/s
- przez sieć: ~5M wiadomości/s
- Rozproszona Pub/Sub: 2.9M wiadomości/s dostawa 1,000,000 subskrybentom na 10 węzłach (10 komunikatów sieciowych zamiast 1M)
Poprawki
- Krytyczny błąd: sygnały zakończenia (Link/Monitor exits) były nieprawidłowo odrzucane z powodu błędnej walidacji incarnacji w warstwie sieciowej
Dokumentacja
Całkowicie przepisano i włączono do repozytorium. Nowe artykuły:
- Struktura projektu — organizacja projektów z poziomami izolacji wiadomości
- Budowanie klastra — krok po kroku przewodnik po systemach rozproszonych
- Wersjonowanie wiadomości — ewolucja kontraktów wiadomości w klastrach
- Debugowanie — tagi kompilacji, pprof, debugowanie zawieszonych procesów
Linki
- Przykłady: https://github.com/ergo-services/examples
- Benchmarki: https://github.com/ergo-services/benchmarks
- Repozytorium: https://github.com/ergo-services/ergo
- Strona: https://ergo.services
Źródło: linux.org.ru
