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:
.protofaylı ə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:
.protofaylında Protocol Buffers dilindən istifadə etməklə API xidməti müəyyən edilir.protockompilyatoru vasitəsilə müvafiq dildə müştəri və server kodu yaradılır.- Server yaradılmış interfeysi həyata keçirir.
- 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.