gRPC Nedir? Hangi Amaçla ve Nasıl Kullanılır?

Tugba Avci
3 min readAug 10, 2023

--

Şimdilerde REST tabanlı servisler oldukça yaygın olarak kullanılıyor. Text-based messsaging ‘e dayanan ve çoğunlukla external(dış) bir client tarafından consume edilmek için daha uygun olan Restfull serviceler ,internal(iç) service iletişimine pekte yatkın bir seçenek değildir. gRPC; Özellikle son yıllarda yüksek performans gerektiren servis tabanlı uygulamalarda, iletişim hızı açısından da monolithic’e en yakın seviyeye çıkaran, giderekte yaygınlaşan bir RPC (Google tarafından geliştirilmiş open source Remote-Procedure-Call(RPC)) protokolüdür. Binary-message Exchange altyapısı ve düşük CPU tüketimi ile yüksek performans gösteren, gRPC servisi; uzak sunucudaki metotları sanki kendi servisinin bir parçasıymış gibi çağırabilen sistemdir.

gRPC, transport/iletişim/veri iletimi için Http/2 protokolünü kullanmaktadır.

Binary serialization protokolü olan Protocol Buffers‘ı (Protobuf) kullanarak iletmekte, serialize ve deserialize etmektedir. Servislerin metotlarını ve mesajları tanımlayıp, gRPC senin için kodları generate eder.İletişim kurulacak olan uygulamaların da aynı içeriğe sahip ‘Protobuf’ dosyası olması gerekmektedir.

Dil ve platformdan bağımsız, binary mesaj formatı HTTP 2.0’ın hızıyla birleşince daha yüksek performanslı ve verimli şekilde haberleşme yapmak için tasarlanmıştır. Streaming özelliği ile birlikte büyük-veri alışverişlerine uygundur.

Protobuf ve diğer veri formatları ile iletişim durumunda 4 ile 8 kat arasında hız kazanmaktadır.

Bu iletişim, 4 farklı şekilde sağlanabilir.

Unary: Client’ın Server’a tek request göndererek, tek bir response aldığı RPC türüdür.
Server Streaming: Client’ın servar’a tek bir request gönderdiği ve server’ın stream dönmeye başladığı RPC türüdür.Sunucu tarafından gönderilen yanıtlar sürekli olarak akış halinde verilir.
Client Streaming: Client’ın server’a stream mesaj gönderdiği ve server’ın tek bir response döndürdüğü RPC türüdür.Client tarafından gönderilen istekler sürekli olarak akış halinde gönderilir.
Bi-directional Streaming: Client’ın server’a stream mesaj gönderdiği ve server’ın stream response döndürdüğü RPC türüdür.Client ve sunucu tarafından gönderilen istekler ve yanıtlar sürekli olarak akış halinde olur.

Cancelling an RPC
Anlık olarak client yada server istedikleri bir RPC’yi cancel edebilirler.

Deadlines/Timeouts
gRPC client’lara isteğinin sonuçlanabilmesi için ne kadar süre beklemek istediklerini set edebilmelerine ve server’larında herhangi bir RPC’nin timeout olup olmadığını sorgulayabilmelerine olanak sağlar. Aşırı kaynak tüketimine de engel olunabilir.

Google başta olmak üzere Netflix vb. bu teknolojiyi kullanmakta ve sayı giderek artmaktadır. Buda gRPC in kullanımının giderek arttığını ve mikroservice dünyasında da yaygınlaştığını göstergesidir.

--

--