Sobes.tech
Middle

gRPC nədir?

sobes.tech Süni İntellekt

AI-dan cavab

gRPC yüksək performanslı, açıq mənbəli RPC (Uzaqdan Prosedur Çağırışı) çərçivəsidir, Google tərəfindən hazırlanmışdır və paylanmış tətbiqlər və mikrosistemlər yaratmaq üçün istifadə olunur. O, nəqliyyat üçün HTTP/2 protokoluna əsaslanır və interfeys təsviri dili və seriyalaşdırma mexanizmi kimi Protocol Buffers (Protobuf) istifadə edir.

gRPC-nin əsas xüsusiyyətləri:

  • HTTP/2: Sorğuların çoxlaması, başlıqların sıxışdırılması və ikitərəfli axın ötürülməsi kimi HTTP/2 üstünlüklərindən istifadə edir, bu da adi HTTP/1.1 üzərindəki müştəri-server protokollarına nisbətən daha yüksək performans təmin edir.
  • Protocol Buffers (Protobuf): Məlumatların təsviri dili, məlumatların strukturlaşdırılmasına və müxtəlif dillərdə seriyalaşdırma və deserializasiya üçün kodun yaradılmasına imkan verir.
  • Axınla ötürmə (Streaming): Dörd növ axın dəstəkləyir:
    • Unary: Klassik RPC (bir sorğu - bir cavab).
    • Server-side Streaming: Müştəri sorğu göndərir, server isə mesaj axını ilə cavab verir.
    • Client-side Streaming: Müştəri mesaj axını göndərir, server isə bir mesajla cavab verir.
    • İki tərəfli axın: Müştəri və server eyni zamanda mesaj axınlarını dəyişdirirlər.
  • Çoxdillilik: Protobuf köməyi ilə gRPC çoxsaylı proqramlaşdırma dilləri üçün müştəri və server kodu yaradır.
  • Kod nəsil: .proto faylı əsasında müştəri və server üçün avtomatik kod yaradılması, bu da əl ilə kod yazmağı azaldır.
  • Metadatalar: Sorğular və cavablarla birlikdə açar-dəyər cütlüklərinin ötürülməsini dəstəkləyir.
  • Interceptors: Sorğular və cavabları ələ keçirmək və əlavə məntiqi yerinə yetirmək imkanı (məsələn, qeydiyyat, autentifikasiya).

gRPC-nin işləmə prinsipi:

  1. .proto faylında Protocol Buffers dilindən istifadə etməklə API xidməti müəyyən edilir.
  2. protoc kompilyatoru vasitəsilə müvafiq dildə müştəri və server kodu yaradılır.
  3. Server yaradılmış interfeysi həyata keçirir.
  4. Müştəri yaradılmış kodu istifadə edərək serverdəki xidmət metodlarını çağırır.

.proto faylının nümunəsi:

syntax = "proto3";

package greeting;

// Xidmətin müəyyənləşdirilməsi
service Greeter {
  // Unary RPC metodu
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  // Server tərəfli axın metodu
  rpc SayHelloStream (HelloRequest) returns (stream HelloReply) {}
}

// Mesajların müəyyənləşdirilməsi
message HelloRequest {
  string name = 1; // 1 nömrəli sahə
}

message HelloReply {
  string message = 1;
}

REST ilə müqayisə (JSON/XML istifadə etməklə):

Xüsusiyyət gRPC (Protobuf) REST (JSON/XML)
Nəqliyyat protokolu HTTP/2 HTTP/1.1 və ya HTTP/2
Məlumatların seriyalaşdırılması Protobuf (ikili) JSON, XML (mətn)
Performans Yüksək (ikili format, HTTP/2) Aşağı (mətn formatı, əlavə yük)
API təsviri dili Protocol Buffers (.proto) OpenAPI/Swagger
API müqaviləsi Sərt, Protobuf əsasında Daha az sərt
Məlumatların tipizliyi Sərt (.proto-da müəyyən edilir) Zəif (runtime yoxlaması)
Kod nəsil Daxil edilmiş Xarici alətlər tələb edir
Axınla ötürmə Daxil edilmiş Əlavə mexanizmlər tələb edir (məs. WebSockets)
Oxunaqlıq .proto olmadan çətin oxumaq Asan oxumaq insan üçün

gRPC, paylanmış sistemlərdə, mikrosistemlərdə, böyük məlumat ötürülməsində və API müqaviləsinin sərtliyi və performansın vacib olduğu hallarda çox uyğundur.