0Pricing
Go Academy · Ders

Tekli gRPC Hizmeti Uygulama

grpc-go ile sunucu ve istemci

Tekli gRPC Hizmeti Uygulama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Tekli RPC nedir?

Tekli RPC, en basit gRPC modelidir: istemci bir istek gönderir ve ağ üzerinden yapılan normal bir işlev çağrısına benzer şekilde bir yanıt alır.

Sunucu uygulamasının gerçekleştirilmesi

Oluşturulan arayüzü uygulayın. İleriye dönük uyumluluk için Unimplemented*Server yapısını gömün:

type userServer struct {
    pb.UnimplementedUserServiceServer
    db *sql.DB
}

func (s *userServer) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.User, error) {
    // query DB
    return &pb.User{Id: req.Id, Name: "Alice"}, nil
}

Sunucuyu başlatma

Bir gRPC sunucusu oluşturun, uygulamayı kaydedin ve bir TCP bağlantı noktasını dinleyin:

lis, _ := net.Listen("tcp", ":50051")
grpcSrv := grpc.NewServer()
pb.RegisterUserServiceServer(grpcSrv, &userServer{})
log.Fatal(grpcSrv.Serve(lis))

İstemci bağlantısı

Sunucuya bağlanın ve bir istemci taslağı oluşturun:

conn, err := grpc.NewClient("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil { log.Fatal(err) }
defer conn.Close()
client := pb.NewUserServiceClient(conn)

Tekli çağrı yapma

RPC yöntemini istemci taslağı üzerinden yerel bir işlevmiş gibi çağırın:

ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
user, err := client.GetUser(ctx, &pb.GetUserRequest{Id: 42})
if err != nil { log.Fatalf("error: %v", err) }
fmt.Println(user.Name)

Hata yönetimi

gRPC, durum kodlarını kullanır. Hataları status.Errorf ile döndürün ve status.Code(err) ile denetleyin:

import "google.golang.org/grpc/status"
import "google.golang.org/grpc/codes"

// Server:
return nil, status.Errorf(codes.NotFound, "user %d not found", req.Id)
// Client:
if status.Code(err) == codes.NotFound { /* handle */ }

Bağlam aktarımı

İstemci RPC çağrısına aktarılan bağlam, zaman sınırlarını ve iptali sunucuya taşır. Sunucu bu bağlamı alt çağrılara (veritabanı, diğer RPC'ler) aktarmalıdır.

Üretim için TLS

Üretimde güvenli olmayan kimlik bilgilerini TLS ile değiştirin:

creds, _ := credentials.NewServerTLSFromFile("cert.pem", "key.pem")
grpcSrv := grpc.NewServer(grpc.Creds(creds))

UnimplementedServer

pb.UnimplementedXxxServer yapısının gömülmesi, Unimplemented durumunu döndüren tüm RPC yöntemleri için taslak uygulamalar sağlar. Böylece yeni RPC'ler proto'ya eklendikten sonra bunları henüz uygulamamış olsanız bile sunucu derlenir.

grpc.Dial ile grpc.NewClient karşılaştırması

grpc.Dial, daha yeni sürümlerde kullanımdan kaldırılmıştır. Bağlantıyı hemen kurmayan, bunun yerine ilk RPC çağrısında gecikmeli olarak kuran grpc.NewClient kullanın.

Yansıtma hizmeti

grpcurl gibi araçların .proto dosyası olmadan kullanılabilir hizmetleri inceleyebilmesi için gRPC yansıtma hizmetini kaydedin:

reflection.Register(grpcSrv)

Hızlı Kontrol

Bir gRPC sunucusu yapısına pb.UnimplementedXxxServer gömülmesinin amacı nedir?

Özet: Tekli gRPC

Temel noktalar:

  • Oluşturulan arayüzü uygulayın; UnimplementedServer'ı gömün
  • TCP dinleyicisinde grpc.NewServer() + Register + Serve kullanın
  • İstemci: grpc.NewClient + oluşturulan NewXxxClient
  • gRPC hata yönetimi için status.Errorf/status.Code kullanın

Sıkça Sorulan Sorular

“Tekli gRPC Hizmeti Uygulama” dersi ücretsiz mi?

Evet — “Tekli gRPC Hizmeti Uygulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Tekli gRPC Hizmeti Uygulama” dersinde ne öğreneceğim?

grpc-go ile sunucu ve istemci Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Tekli gRPC Hizmeti Uygulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Protocol Buffers ve .proto Dosyaları
  2. Tekli gRPC Hizmeti Uygulama
  3. Sunucu ve İstemci Akışı
  4. gRPC Araya Giricileri ve Meta Veriler
← Go Academy Sayfasına Dön