AUTHENTIFIZIERUNG...

SERVICIO CONECTADO
INAUGURACIÓN DE NUEVA PAGINA!
IT-Nachrichten

Microservices mit Golang und gRPC: Moderne Architektur

Sistema IA
4 MIN. LESUNG
08 Jun 2026
Microservices mit Golang und gRPC: Moderne Architektur
===========================================================

Einführung

Darstellung Technisch

In diesem Artikel werden wir die Microservices-Architektur mit Golang und gRPC untersuchen. Diese moderne Architektur konzentriert sich auf Skalierbarkeit, Flexibilität und Sicherheit.

Voraussetzungen


Grundkenntnisse in Golang
Go-Installation (Version 1.15 oder höher)
gRPC-Installation (Version 1.32 oder höher)
Docker-Installation (Version 20.10 oder höher)

Microservices-Architektur


Die Microservices-Architektur basiert auf der Trennung von Verantwortlichkeiten zwischen verschiedenen Diensten. Jeder Dienst hat eine bestimmte Funktion und kommuniziert über definierte Schnittstellen mit anderen Diensten.

Authentifizierungsdienst



Der Authentifizierungsdienst ist für die Überprüfung der Identität der Benutzer verantwortlich. Wir verwenden gRPC, um die Authentifizierungsschnittstelle zu definieren.

„Geh
// auth.proto
Syntax = „proto3“;

Paketauth;

Service-Auth {
rpc Login(LoginRequest) gibt (LoginResponse) {} zurück
}

Nachricht LoginRequest {
Zeichenfolge Benutzername = 1;
Zeichenfolge Passwort = 2;
}

Nachricht LoginResponse {
bool success = 1;
String-Token = 2;
}


Wir implementieren den Authentifizierungsdienst in Golang.

„Geh
// auth.go
Paketauthentifizierung

importieren (
„Kontext“
„Protokoll“

„google.golang.org/grpc“

pb „auth/proto“
)

Typ authService struct{}

func (s authService) Login(ctx context.Context, req pb.LoginRequest) (pb.LoginResponse, error) {
// Überprüfen Sie die Identität des Benutzers
if req.Username == "admin" && req.Password == "password" {
return &pb.LoginResponse{Success: true, Token: "token"}, null
}
return &pb.LoginResponse{Success: false}, null
}

func main() {
lis, err := net.Listen("tcp", ":50051")
if err!= nil {
log.Fatalf("failed to listen: %v", err)
}

srv := grpc.NewServer()
pb.RegisterAuthService(srv, &authService{})
log.Println("Auth-Dienst überwacht Port 50051")
srv.Serve(lis)
}


Produktservice



Der Produktservice ist für die Abwicklung der Geschäftslogik im Zusammenhang mit den Produkten verantwortlich. Wir verwenden gRPC, um die Produktschnittstelle zu definieren.

„Geh
// products.proto
Syntax = „proto3“;

Verpackungsprodukte;

Service Produkte {
rpc GetProducts(GetProductsRequest) gibt (GetProductsResponse) {} zurück
}

Nachricht GetProductsRequest {
int32 limit = 1;
int32 Offset = 2;
}

Nachricht GetProductsResponse {
wiederholteProduktprodukte = 1;
}

Nachricht Produkt {
int32 id = 1;
Stringname = 2;
Zeichenfolgenbeschreibung = 3;
}


Wir haben den Produktservice in Golang implementiert.

„Geh
// products.go
Produkte verpacken

importieren (
„Kontext“
„Protokoll“

„google.golang.org/grpc“

pb „Produkte/Proto“
)

Typ productsService struct{}

func (s
productsService) GetProducts(ctx context.Context, req pb.GetProductsRequest) (pb.GetProductsResponse, error) {
// Produktgeschäftslogik verwalten
Produkte := []*pb.Product{
{Id: 1, Name: „Produkt 1“, Beschreibung: „Produktbeschreibung 1“},
{Id: 2, Name: „Produkt 2“, Beschreibung: „Produktbeschreibung 2“},
}
return &pb.GetProductsResponse{Products: products}, null
}

func main() {
lis, err := net.Listen("tcp", ":50052")
if err!= nil {
log.Fatalf("failed to listen: %v", err)
}

srv := grpc.NewServer()
pb.RegisterProductsService(srv, &productsService{})
log.Println("Produktservice lauscht auf Port 50052")
srv.Serve(lis)
}

Docker-Konfiguration


Um die Microservices-Architektur zu implementieren, müssen wir Docker-Images für jeden Dienst erstellen.

„dockerfile

auth/Dockerfile

VON golang:alpine

WORKDIR /app

KOPIEREN auth.go.

RUN go build -o auth auth.go

EXPOSE 50051

CMD ["./auth"]


„dockerfile

Produkte/Dockerfile

VON golang:alpine

WORKDIR /app

Produkte.go kopieren.

RUN go build -o products products.go

EXPOSE 50052

CMD ["./products"]

Architekturimplementierung


Um die Microservices-Architektur zu implementieren, müssen wir für jeden Dienst einen Container erstellen und die Kommunikation zwischen ihnen konfigurieren.

„Bash

Container erstellen

Docker Build -t Auth.
Docker Build -t-Produkte.

Docker run -d --name auth -p 50051:50051 auth
docker run -d --name products -p 50052:50052 Produkte

Konfigurieren Sie die Kommunikation zwischen Diensten

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

Fazit


In diesem Artikel haben wir eine Microservices-Architektur mit Golang und gRPC implementiert. Die Architektur konzentriert sich auf Skalierbarkeit, Flexibilität und Sicherheit. Authentifizierungsdienste und -produkte kommunizieren über in gRPC definierte Schnittstellen. Die Implementierung der Architektur erfolgte mit Docker und die Konfiguration der Kommunikation zwischen Diensten.

GitHub-Benachrichtigungen

> [!IMPORTANT]
> Stellen Sie sicher, dass Sie die richtige Version von Go und gRPC installieren, bevor Sie die Architektur bereitstellen.
> [!TIP]
> Verwendet Docker, um die Architektur zu implementieren und die Kommunikation zwischen Diensten zu konfigurieren.
> [!WARNUNG]
> Stellen Sie sicher, dass Sie in Ihrer Microservices-Architektur die entsprechende Sicherheit konfigurieren.