Struktura stanowi implementację koncepcji Erlanga na potrzeby programowania w Go, zbudowaną na modelu aktora z przejrzystością sieci i gotowymi komponentami.
Najważniejsze funkcje w tej wersji
- mTLS — nowy interfejs gen.CertAuthManager do wzajemnego uwierzytelniania z zarządzaniem pulą urzędów certyfikacji
- Przechodzenie przez NAT — Opcje RouteHost i RoutePort dla węzłów za NAT lub modułami równoważenia obciążenia
- Kontrola czasu startu — InitTimeout ogranicza czas inicjalizacji procesów (lokalnie i zdalnie)
- Przekroczenie limitu czasu wyłączenia - kontrolowane zakończenie węzła z logowaniem zawieszonych procesów
- etykiety pprof — każda gorutyna aktora jest oznaczona PID-em w celu debugowania za pomocą pprof
Nowi aktorzy (dodatkowa biblioteka)
- Lider — rozproszone wybory liderów z konsensusem w stylu Raft. Automatyczne przełączanie awaryjne, ochrona przed podziałem mózgu poprzez kworum większościowe.
- Metryka — Eksporter metryk Prometheus z automatycznym zbieraniem danych telemetrycznych węzłów i sieci
Nowe metaprocesy
- SSE (Server-Sent Events) to jednokierunkowe przesyłanie strumieniowe między serwerem a klientem przez protokół HTTP, z pełną obsługą specyfikacji SSE.
produktywność
- Lokalnie: 21 mln+ wiadomości/sek.
- W sieci: ~5 mln wiadomości/sek.
- Rozproszona usługa Pub/Sub: 2.9 mln wiadomości/sek. dostarczanie do 1 000 000 subskrybentów na 10 węzłach (10 wiadomości sieciowych zamiast 1 mln)
Poprawki błędów
- Krytyczny błąd: Wyjścia łącza/monitora były nieprawidłowo odrzucane z powodu nieprawidłowej walidacji w warstwie sieciowej
Dokumentacja
Całkowicie przepisane i dołączone do repozytorium. Nowe artykuły:
- Struktura projektu — organizowanie projektów z poziomami izolacji wiadomości
- Budowanie klastra – przewodnik krok po kroku po systemach rozproszonych
- Wersjonowanie wiadomości — ewolucja kontraktów wiadomości w klastrach
- Debugowanie — tagi kompilacji, pprof, debugowanie zamrożonych procesów
referencje
- Przykłady: https://github.com/ergo-services/examples
- Punkty odniesienia: https://github.com/ergo-services/benchmarks
- Magazyn: https://github.com/ergo-services/ergo
- Strona WWW: https://ergo.services
Źródło: linux.org.ru
