İçeriğe geç
parazade

gRPC Nedir?

Yayın: · Son güncelleme:

gRPC Nedir? Kısaca

gRPC, Google tarafından geliştirilen ve servislerin birbirindeki fonksiyonları ağ üzerinden yerelmiş gibi çağırmasını sağlayan açık kaynaklı bir uzak prosedür çağrısı (RPC) çatısıdır. HTTP/2 ve Protocol Buffers kullanır.

gRPC nedir?
İçindekiler
  1. gRPC nedir?
  2. Neden hızlıdır?
  3. REST ile karşılaştırma ve sınırlar

gRPC, bir servisin başka bir servisteki fonksiyonu doğrudan çağırmasını sağlayan iletişim çatısıdır. Mikroservis mimarilerinde, servisler arasındaki hızlı ve yoğun trafik için sık tercih edilir.

gRPC nedir?

Adındaki RPC, "Remote Procedure Call" yani uzak prosedür çağrısı anlamına gelir. Geliştirici, sanki aynı programın içindeymiş gibi stokGetir(urunId) fonksiyonunu çağırır. gRPC bu çağrıyı paketler, ağ üzerinden diğer servise taşır ve cevabı geri getirir.

Servisin neler sunduğu bir .proto dosyasında tanımlanır:

service Stok {
  rpc StokGetir (UrunIstegi) returns (StokYaniti);
}

Bu dosyadan Go, Java, Python gibi farklı diller için istemci ve sunucu kodu otomatik üretilir. Böylece farklı dillerle yazılmış servisler aynı sözleşmeyle konuşur.

Neden hızlıdır?

İki temel tercih performansı belirler. Veriler JSON gibi metin yerine Protocol Buffers adı verilen ikili (binary) biçimde kodlanır; mesajlar küçülür ve daha hızlı işlenir. Taşıma için HTTP/2 kullanılır; tek bağlantı üzerinden çok sayıda istek aynı anda akabilir. gRPC ayrıca iki yönlü veri akışını (streaming) da destekler.

REST ile karşılaştırma ve sınırlar

Konu REST gRPC
Veri biçimi Genellikle JSON Protocol Buffers
Sözleşme İsteğe bağlı .proto ile zorunlu
Tarayıcı desteği Doğrudan Ek katman gerekir

En belirgin sınır tarayıcılardır. Tarayıcıdan doğrudan gRPC çağrısı yapmak sınırlıdır; gRPC-Web gibi ara çözümler gerekir. Bu yüzden yaygın düzen, dış dünyaya REST ya da GraphQL sunup iç servisler arasında gRPC kullanmaktır. İkili mesajları gözle okumak da zordur, hata ayıklama için özel araçlar gerekir.

Sıkça Sorulan Sorular

gRPC hangi dillerle kullanılabilir?

Go, Java, Python, C#, Node.js, C++ ve daha birçok dil için resmî destek bulunur. Aynı .proto dosyasından her dil için kod üretilebilir.

Küçük bir proje için gRPC gerekir mi?

Genellikle gerekmez; tek bir uygulama ve basit bir API için REST daha kolay kurulur ve denenir. gRPC'nin avantajı çok sayıda servisin yoğun haberleştiği sistemlerde belirginleşir.

İlgili terimler