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
- Protocol Buffers ve .proto Dosyaları
- Tekli gRPC Hizmeti Uygulama
- Sunucu ve İstemci Akışı
- gRPC Araya Giricileri ve Meta Veriler