gRPC Nedir? Hangi Amaçla ve Nasıl Kullanılır?
Ş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.
Bu iletişim, 4 farklı şekilde sağlanabilir.
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.
Sonraki yazılarımda iletişim tiplerinden bahsediyor olacağım.
Bir sonraki yazımda görüşmek üzere
gRPC’de Proto Dosyası ve Client Server Uygulamalarının Oluşturulması
Umarım faydalı bir paylaşım olmuştur.
Sevgiler..
Kaynaklar;
https://protobuf.dev/programming-guides/proto3/
https://www.gencayyildiz.com/blog/grpc-nedir-ne-amacla-ve-nasil-kullanilir/
http://www.canertosuner.com/post/grpc-nedir-net-core-grpc-service-olusturma