Frameworket er en implementering af Erlang-konceptet til udvikling på Go, bygget på en aktørmodel med netværksgennemsigtighed og klar til brug komponenter.
De vigtigste funktioner i denne version
- mTLS — nyt gen.CertAuthManager interface for gensidig autentificering med styring af CA-pools
- NAT traversal — RouteHost og RoutePort muligheder for noder bag NAT eller belastningsbalancere
- Kontrol af opstartstid — InitTimeout begrænser tiden til initialisering af processer (lokalt og eksternt)
- Nedlukning timeout — kontrolleret afslutning af node med logning af hængende processer
- pprof labels — hver akteurs goroutine mærkes med PID til fejlfinding gennem pprof
Nye aktører (Ekstra Bibliotek)
- Leader — distribuerede ledaftaler med konsensus i Raft-stil. Automatisk failover, beskyttelse mod split-brain gennem flertal quorum
- Metrikker — Prometheus metrics exporter med automatisk indsamling af node- og netværkstelemetri
Nye meta-processer
- SSE (Server-Sent Events) — ensrettet streaming fra server til klient over HTTP med fuld understøttelse af SSE-specifikationen
Ydeevne
- Lokalt: 21M+ beskeder/s
- Gennem netværket: ~5M beskeder/s
- Distribueret Pub/Sub: 2.9M beskeder/s levering til 1,000,000 abonnenter på 10 noder (10 netværksbeskeder i stedet for 1M)
Fejlretninger
- Kritisk fejl: afslutningssignaler (Link/Monitor exits) blev ukorrekt afvist på grund af forkert validering af incarnation i det netværk lag
Dokumentation
Hele koden er omskrevet og inkluderet i repositoriet. Nye artikler:
- Projektstruktur — organisering af projekter med niveauer af beskedisolering
- Bygning af en klynge — trin for trin vejledning til distribuerede systemer
- Beskedversionering — udviklingen af beskedkontrakter i klynger
- Fejlfinding — bygnings-tags, pprof, fejlfinding af hængende processer
Links
- Eksempler: https://github.com/ergo-services/examples
- Benchmarks: https://github.com/ergo-services/benchmarks
- Repository: https://github.com/ergo-services/ergo
- Websted: https://ergo.services
Kilde: linux.org.ru
