Portalite: SDK Go ușor pentru Portal, cu legare multi-releu și bazat pe net.Listener standard

Mai devreme, când am prezentat Portal, am discutat despre problemele web-ului modern. Odată cu apariția instrumentelor de programare bazate pe IA, oricine poate construi un site web, însă publicarea acestuia în lume rămâne, în continuare, un domeniu controlat de platforme mari și de cloud. Portal separă găzduirea web-ului de crearea conținutului și conectează serviciile locale ale fiecărui individ la nivel global printr-un releu criptat de la un capăt la altul, redând astfel fiecărui individ dreptul de a publica.
Vă prezentăm Portalite
Astăzi vă prezint Portalite. Portalite este un client Portal ultra-ușor, dezvoltat cu dependențe minime, și un SDK pentru Go.
Dacă Portal reprezintă filosofia despre modul în care ar trebui să se schimbe web-ul, atunci Portalite este cel mai subțire adeziv care integrează această filosofie în aplicațiile dezvoltatorilor. Dezvoltatorul poate adăuga un ingress Portal în aplicația sa fără configurări complexe ale cloud-ului sau pipeline-uri de implementare: importă SDK-ul și adaugă câteva rânduri de cod. În momentul în care aplicația pornește, serverul care exista doar local devine un serviciu public, accesibil de oriunde din internet.
1. Ingress public, finalizat în doar două rânduri de cod
Portalite suportă net.Listener, interfața standard a limbajului Go. Este suficient să înlocuiți listener-ul din framework-ul web existent sau din codul serverului, iar aplicația funcționează imediat.
1identity, err := portalite.GenerateIdentity("my-service")
2
3listener, err := portalite.Expose(ctx, portalite.ExposeConfig{
4 Relays: portalite.DefaultRelays(),
5 Identity: identity,
6})
7
8http.Serve(listener, handler)
- Zero configurare (Zero-config): Nu este necesară nicio configurare de port forwarding, IP fix sau reguli de intrare în firewall.
- Compatibilitate standard: Este compatibil în proporție de 100% cu
http.Server,grpc.Server, Gin, Echo, Chi și cu orice bibliotecă Go care utilizeazănet.Listenerstandard.
2. Elementul central: legare simultană la mai mulți releu (Multi-Relay Binding)
Majoritatea instrumentelor de tunelare depind de un singur punct final, astfel încât, dacă serverul de releu se oprește, serviciul se întrerupe și el. Portalite funcționează conectându-se simultan la mai multe servere de releu.
- Izolarea defecțiunilor fără întrerupere (Failover): Chiar dacă unele dintre releele multiple cad sau apare o latență de rețea, releele rămase active continuă să primească traficul prin același listener virtual.
- Eliminarea punctului unic de defectare (SPOF): Bucla
Accept()a aplicației nu se întrerupe, cu excepția cazului în care toate sesiunile de releu se închid simultan. - Criptare de la un capăt la altul (E2EE): Traficul este criptat în timpul transmiterii, astfel încât serverele de releu nu pot examina sau modifica datele.
- Reconectare automată și autovindecare (Self-Healing): Chiar și în cazul unei întreruperi temporare a rețelei sau al repornirii unui releu, sesiunile și token-urile sunt renegociate automat în fundal, iar conexiunea este restabilită.
3. Utilizare imediată, dintr-o singură linie de comandă CLI
Dacă nu lucrați cu cod Go sau aveți nevoie de un test rapid, este suficient să transmiteți numărul portului către CLI.
1$ go install gosuda.org/portalite/cmd/portalite@latest && portalite expose --name "my-service" 3000
2URL https://my-service.rly.best
3URL https://my-service.s-h.day
4
Imediat după executarea comenzii sunt emise URL-uri pentru mai multe releu, iar serviciul devine accesibil din exterior fără întârziere.
4. Ușor, dar puternic
- Dependențe minime: Prin eliminarea dependențelor terțe, binarul este ușor, iar compilarea este rapidă.
- Suport TLS și UDP: Pe lângă traficul TLS, precum HTTP/gRPC, puteți expune cu ușurință și servicii UDP, cum ar fi serverele de jocuri, prin backhaul de datagrame QUIC.
Începeți
- Depozit GitHub: https://github.com/gosuda/portalite
- Pachet Go:
go get gosuda.org/portalite