CodeBlanks Logo Icon CodeBlanks

gRPC nedir?

  • Go kursu
  • İleri seviye
  • Ders 37/68
  • 4 dk

gRPC ve protobuf'un temel avantajlarını öğrenirsin.

gRPC nedir?

gRPC, Google'ın geliştirdiği bir uzak prosedür çağrısı (RPC) çerçevesidir. İstemci, sunucudaki bir fonksiyonu yerel fonksiyon çağırır gibi çağırır. Taşıma için HTTP/2, veri biçimi için Protocol Buffers kullanır; bu yüzden JSON'lu REST'e göre daha küçük ve hızlı mesajlar üretir.

// istemci tarafında
resp, err := client.Selam(ctx, &pb.SelamIstek{Ad: "Ada"})

Dört çağrı türü

gRPC dört iletişim biçimi sunar: tekli (bir istek, bir yanıt), sunucu akışı (bir istek, çok yanıt), istemci akışı (çok istek, bir yanıt) ve çift yönlü akış. Mikroservisler arası iç iletişimde yaygındır; tarayıcıdan doğrudan kullanmak için gRPC-Web gibi ek katman gerekir.

Uygulama RPC benzetimi

gRPC çağrısının özünü taklit et: type SelamServer struct{} ve func (SelamServer) Selam(ad string) string yöntemi "Merhaba " + ad döndürsün. main içinde SelamServer{}.Selam("Ada") sonucunu yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

type SelamServer struct{}

func (SelamServer) Selam(ad string) string { return "Merhaba " + ad }

func main() {
    fmt.Println(SelamServer{}.Selam("Ada"))
}

Beklenen çıktı

Merhaba Ada

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 gRPC hangi taşıma protokolünü kullanır?

  • FTP
  • SMTP
  • HTTP/2 Doğru cevap
  • HTTP/1.0

Açıklama: HTTP/2 tek bağlantı üzerinde çoklu akış ve çift yönlü streaming sağlar; gRPC bunun üzerine kuruludur.

2 Veri biçimi

Soru
// selam.proto
syntax = "____";
Cevap
// selam.proto
syntax = "proto3";

Açıklama: Protocol Buffers ikili ve şemalı bir biçimdir; JSON'dan küçük ve hızlıdır.

3 Çağrı türleri

Kavram Anlamı
Unary 1 istek, 1 yanıt
Server streaming 1 istek, çok yanıt
Client streaming Çok istek, 1 yanıt
Bidirectional İki yönlü akış

İleri seviye bölümündeki tüm dersler