splash_auth

SERVICIO CONECTADO
INAUGURACIÓN DE NUEVA PAGINA!
Notizie informatiche

Microservizi con Golang e gRPC: architettura moderna

Sistema IA
4 LETTURA MIN
08 Jun 2026
Microservizi con Golang e gRPC: architettura moderna
==============================================================

Introduzione

Rappresentazione tecnica

In questo articolo esploreremo l'architettura dei microservizi utilizzando Golang e gRPC. Questa architettura moderna si concentra su scalabilità, flessibilità e sicurezza.

Prerequisiti


Conoscenza di base del Golang
Vai all'installazione (versione 1.15 o successiva)
Installazione gRPC (versione 1.32 o successiva)
Installazione Docker (versione 20.10 o successiva)

Architettura dei microservizi


L'architettura dei microservizi si basa sulla separazione delle responsabilità tra i diversi servizi. Ogni servizio ha una funzione specifica e comunica con altri servizi attraverso interfacce definite.

Servizio di autenticazione



Il servizio di autenticazione è responsabile della verifica dell'identità degli utenti. Usiamo gRPC per definire l'interfaccia di autenticazione.

"vai."
//proto.aut
sintassi = "proto3";

autenticazione del pacchetto;

autenticazione del servizio {
rpc Login(LoginRequest) restituisce (LoginResponse) {}
}

messaggio Richiesta di accesso {
stringa nome utente = 1;
stringa password = 2;
}

messaggio LoginResponse {
successo bool = 1;
token di stringa = 2;
}

Implementiamo il servizio di autenticazione a Golang.

"vai."
// aut.go
autenticazione del pacchetto

importare (
"contesto"
"registro"

"google.golang.org/grpc"

pb "autenticazione/protocollo"
)

digitare la struttura authService{}

func (s *authService) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginResponse, errore) {
// Verifica l'identità dell'utente
if req.Nomeutente == "admin" && req.Password == "password" {
return &pb.LoginResponse{Success: true, Token: "token"}, nil
}
return &pb.LoginResponse{Success: false}, zero
}

funzione principale() {
lis, err := net.Listen("tcp", ":50051")
se erra!= zero {
log.Fatalf("Impossibile ascoltare: %v", err)
}

srv := grpc.NewServer()
pb.RegisterAuthService(srv, &authService{})
log.Println("Servizio di autenticazione in ascolto sulla porta 50051")
srv.Serve(lis)
}

Servizio prodotto



Il servizio del prodotto è responsabile della gestione della logica aziendale relativa ai prodotti. Usiamo gRPC per definire l'interfaccia del prodotto.

"vai."
// prodotti.proto
sintassi = "proto3";

pacchetto di prodotti;

servizio Prodotti {
rpc GetProducts(GetProductsRequest) restituisce (GetProductsResponse) {}
}

messaggio OttieniRichiestaProdotti {
limite int32 = 1;
offset int32 = 2;
}

messaggio GetProductsResponse {
prodottiprodottiripetuti = 1;
}

messaggio Prodotto {
int32id = 1;
nome stringa = 2;
descrizione stringa = 3;
}

Abbiamo implementato il servizio del prodotto a Golang.

"vai."
// prodotti.go
prodotti confezionati

importare (
"contesto"
"registro"

"google.golang.org/grpc"

pb "prodotti/protocollo"
)

tipo prodottiService struct{}

func (s *productsService) GetProducts(ctx context.Context, req *pb.GetProductsRequest) (*pb.GetProductsResponse, errore) {
// Gestire la logica aziendale del prodotto
prodotti := []*pb.Prodotto{
{ID: 1, Nome: "Prodotto 1", Descrizione: "Descrizione prodotto 1"},
{ID: 2, Nome: "Prodotto 2", Descrizione: "Descrizione prodotto 2"},
}
return &pb.GetProductsResponse{Prodotti: prodotti}, zero
}

funzione principale() {
lis, err := net.Listen("tcp", ":50052")
se erra!= zero {
log.Fatalf("Impossibile ascoltare: %v", err)
}

srv := grpc.NewServer()
pb.RegisterProductsService(srv, &productsService{})
log.Println("Servizio prodotti in ascolto sulla porta 50052")
srv.Serve(lis)
}

Configurazione della finestra mobile


Per implementare l'architettura dei microservizi, dobbiamo creare immagini Docker per ciascun servizio.

"dockerfile

autenticazione/Dockerfile

DA golang:alpino

DIR LAVORO /app

COPIA aut.go.

ESEGUI vai build -o auth auth.go

ESPORRE 50051

CMD ["./auth"]

"dockerfile
# prodotti/Dockerfile
DA golang:alpino

DIR LAVORO /app

COPIA prodotti.go.

ESEGUI go build -o prodotti prodotti.go

ESPORRE 50052

CMD ["./prodotti"]

Implementazione dell'architettura


Per implementare l'architettura dei microservizi, dobbiamo creare un contenitore per ciascun servizio e configurare la comunicazione tra di loro.

"bash."

Crea contenitori

finestra mobile build -t autenticazione.
prodotti docker build -t.

docker run -d --name auth -p 50051:50051 auth
docker run -d --name prodotti -p 50052:50052 prodotti

Configura la comunicazione tra i servizi

docker exec -it auth grpcurl -plaintext -d '{"nome utente": "admin", "password": "password"}' localhost:50051/auth/Login
docker exec -it prodotti grpcurl -plaintext -d '{"limit": 10, "offset": 0}' localhost:50052/products/GetProducts
```

Conclusione


In questo articolo abbiamo implementato un'architettura di microservizi utilizzando Golang e gRPC. L'architettura si concentra su scalabilità, flessibilità e sicurezza. I servizi e i prodotti di autenticazione comunicano tramite le interfacce definite in gRPC. L'implementazione dell'architettura è stata effettuata utilizzando Docker ed è stata configurata la comunicazione tra i servizi.

Avvisi GitHub

> [!IMPORTANTE]
> Assicurati di installare la versione corretta di Go e gRPC prima di distribuire l'architettura.
> [!CONSIGLIO]
> Utilizza Docker per implementare l'architettura e configurare la comunicazione tra i servizi.
> [!ATTENZIONE]
> Assicurati di configurare la sicurezza adeguata nella tua architettura di microservizi.