gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?

Cevap

gRPC, Google'ın geliştirdiği, HTTP/2 üzerinde çalışan ve veriyi Protocol Buffers (protobuf) ile binary olarak serileştiren bir RPC framework'üdür. Servis sözleşmesi .proto dosyasında tanımlanır, istemci ve sunucu kodu bu dosyadan üretilir.

syntax = "proto3";

service SiparisServisi {
  rpc SiparisGetir (SiparisIstegi) returns (Siparis);
  rpc DurumIzle (SiparisIstegi) returns (stream DurumGuncelleme);
}

message SiparisIstegi { int64 id = 1; }
message Siparis {
  int64 id = 1;
  string musteri = 2;
  double toplam = 3;
}
message DurumGuncelleme { string durum = 1; }

İletişim tipleri

  • Unary (tek istek, tek yanıt)
  • Server streaming
  • Client streaming
  • Bidirectional streaming

REST ile karşılaştırma

REST (JSON)gRPC
ProtokolGenelde HTTP/1.1HTTP/2
FormatJSON, okunabilirProtobuf, binary ve küçük
SözleşmeOpsiyonel (OpenAPI)Zorunlu (.proto), kod üretimi
StreamingSınırlı (SSE, WebSocket)Yerleşik, çift yönlü
Tarayıcı desteğiDoğalDoğrudan yok, gRPC-Web proxy gerekir
Hata ayıklamacurl ile kolaygrpcurl gibi araçlar gerekir

Ne zaman gRPC?

  • Mikroservisler arası iç iletişim, düşük gecikme ve yüksek hacim
  • Çok dilli ortamlarda tip güvenli sözleşme
  • Gerçek zamanlı streaming ihtiyacı

Ne zaman REST?

  • Public API'ler, tarayıcı ve üçüncü parti istemciler
  • Basitlik ve HTTP cache'lemenin önemli olduğu durumlar

Protobuf'ta alan numaraları (= 1, = 2) binary formatın parçasıdır; geriye uyumluluk için mevcut numaralar asla değiştirilmez veya yeniden kullanılmaz.

  1. HTTP 401 ile 403 durum kodları arasındaki fark nedir?KolayAPI TasarımıBackend
  2. JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?OrtaAPI TasarımıBackend
  3. Idempotency nedir? Hangi HTTP metotları idempotent'tir?OrtaAPI TasarımıBackend
  4. OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?ZorAPI TasarımıBackend
  5. Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.ZorAPI TasarımıBackend
  6. Webhook nedir? Güvenilir ve güvenli bir webhook sistemi nasıl tasarlanır?OrtaAPI TasarımıBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle